Skip to Content
API reference/api/v1 endpoints

/api/v1 endpoint reference

Every route registered under the api/v1 prefix — 114 endpoints across routes/api.php, routes/web.php and the in-monorepo plugin route files. Generated from the live route table; regenerate with php artisan docs:reference.

The /api/v1/_ping and /api/v1/_scoped probes register only under local/testing (this file is generated under testing, so they appear here); the Stripe webhook (/webhooks/stripe) is not under v1 and is intentionally absent.

Scopes without an endpoint. These scopes are declared in app/Support/Api/ApiScopes.php but no registered route matches the endpoint they name — a granted key would authorise nothing:

  • inventory:read — claims GET /api/v1/plugins/inventory/vehicles, but no route matches
MethodURIScope / permissionController@actionMiddleware
GET/api/v1/_pingClosureapi
GET/api/v1/_scopedscope:context:readClosureapi, scope:context:read
POST/api/v1/ai/proxycan:ai.use.rooftop\Ai\AiProxyController@proxyweb, session-api, can:ai.use.rooftop, App\Http\Middleware\AiRateLimit, App\Http\Middleware\AiBodySizeLimit
POST/api/v1/channels/dmVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@dmOpenweb, auth, tenant
GET/api/v1/channels/mentions/recentVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@myRecentMentionsweb, auth, tenant
GET/api/v1/channels/mentions/unread-countVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@unreadMentionCountweb, auth, tenant
GET/api/v1/channels/messages/reactions-batchVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesReactionsBatchweb, auth, tenant
GET/api/v1/channels/messages/searchVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesSearchweb, auth, tenant
DELETE/api/v1/channels/messages/{messageId}Vctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesDeleteweb, auth, tenant
PATCH/api/v1/channels/messages/{messageId}Vctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesEditweb, auth, tenant
POST/api/v1/channels/messages/{messageId}/reactVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesReactweb, auth, tenant
GET/api/v1/channels/messages/{messageId}/reactionsVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesReactionsweb, auth, tenant
GET/api/v1/channels/messages/{parentMessageId}/threadVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesThreadweb, auth, tenant
GET/api/v1/channels/{channelId}/membersVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@membersListweb, auth, tenant
POST/api/v1/channels/{channelId}/membersVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@membersAddweb, auth, tenant
DELETE/api/v1/channels/{channelId}/members/{userId}Vctrs\Plugins\Channels\Http\Controllers\ChannelApiController@membersRemoveweb, auth, tenant
GET/api/v1/channels/{channelId}/messagesVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesListweb, auth, tenant
POST/api/v1/channels/{channelId}/messagesVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@messagesSendweb, auth, tenant
POST/api/v1/channels/{channelId}/mute-toggleVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@muteToggleweb, auth, tenant
POST/api/v1/channels/{channelId}/notification-levelVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@notificationLevelSetweb, auth, tenant
POST/api/v1/channels/{channelId}/pin-toggleVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@pinToggleweb, auth, tenant
POST/api/v1/channels/{channelId}/readVctrs\Plugins\Channels\Http\Controllers\ChannelApiController@markReadweb, auth, tenant
GET/api/v1/contextscope:context:readApi\ContextController@indexapi, scope:context:read
GET/api/v1/context-hub/ai/grounding-contextcan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\AiController@groundingContextweb, session-api, can:context_hub.view
GET/api/v1/context-hub/destinationscan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\SyndicationController@destinationsListweb, session-api, can:context_hub.view
POST/api/v1/context-hub/destinationscan:context_hub.manage.destinationsVctrs\Plugins\ContextHub\Http\Controllers\SyndicationController@destinationUpsertweb, session-api, can:context_hub.manage.destinations
GET/api/v1/context-hub/destinations/{id}can:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\SyndicationController@destinationGetweb, session-api, can:context_hub.view
GET/api/v1/context-hub/introspect/available-fieldscan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\IntrospectController@availableFieldsweb, session-api, can:context_hub.view
GET/api/v1/context-hub/introspect/field-usagecan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\IntrospectController@fieldUsageweb, session-api, can:context_hub.view
GET/api/v1/context-hub/introspect/publish-destinationscan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\IntrospectController@publishDestinationsweb, session-api, can:context_hub.view
POST/api/v1/context-hub/mappingscan:context_hub.manage.mappingsVctrs\Plugins\ContextHub\Http\Controllers\SyndicationController@mappingUpsertweb, session-api, can:context_hub.manage.mappings
GET/api/v1/context-hub/recordscan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\RecordQueryController@listweb, session-api, can:context_hub.view
GET/api/v1/context-hub/records-summarycan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\RecordQueryController@summaryweb, session-api, can:context_hub.view
GET/api/v1/context-hub/records/{id}can:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\RecordQueryController@getweb, session-api, can:context_hub.view
GET/api/v1/context-hub/runscan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\SyndicationController@runsListweb, session-api, can:context_hub.view
GET/api/v1/context-hub/sectionsVctrs\Plugins\ContextHub\Http\Controllers\SectionController@listweb, session-api
GET/api/v1/context-hub/sections/{sectionKey}Vctrs\Plugins\ContextHub\Http\Controllers\SectionController@getweb, session-api
GET/api/v1/context-hub/sections/{sectionKey}/syndication-targetscan:context_hub.viewVctrs\Plugins\ContextHub\Http\Controllers\SectionController@syndicationTargetsweb, session-api, can:context_hub.view
GET/api/v1/dealer-dna/{rooftopId}scope:dealer_dna:readApi\DealerDnaController@showapi, scope:dealer_dna:read
GET/api/v1/dealergraphscope:dealergraph:readApi\DealergraphController@indexapi, scope:dealergraph:read
GET/api/v1/dealergraph/{entityId}scope:dealergraph:readApi\DealergraphController@showapi, scope:dealergraph:read
POST/api/v1/gamification/badgescan:gamification.badges.manage.rooftopVctrs\Plugins\Gamification\Http\Controllers\BadgeUpsertController@storeweb, auth, tenant, can:gamification.badges.manage.rooftop
POST/api/v1/gamification/challengescan:gamification.challenges.manage.rooftopVctrs\Plugins\Gamification\Http\Controllers\ChallengeUpsertController@storeweb, auth, tenant, can:gamification.challenges.manage.rooftop
GET/api/v1/gamification/group-leaderboardcan:gamification.view.groupVctrs\Plugins\Gamification\Http\Controllers\LeaderboardController@groupweb, auth, tenant, can:gamification.view.group
GET/api/v1/gamification/leaderboardcan:gamification.view.rooftopVctrs\Plugins\Gamification\Http\Controllers\LeaderboardController@rooftopweb, auth, tenant, can:gamification.view.rooftop
GET/api/v1/gamification/me/badgesVctrs\Plugins\Gamification\Http\Controllers\MeController@badgesweb, auth, tenant
GET/api/v1/gamification/me/balanceVctrs\Plugins\Gamification\Http\Controllers\MeController@balanceweb, auth, tenant
GET/api/v1/gamification/me/challenge-progresscan:gamification.view.rooftopVctrs\Plugins\Gamification\Http\Controllers\MeController@challengeProgressweb, auth, tenant, can:gamification.view.rooftop
GET/api/v1/gamification/me/ledgerVctrs\Plugins\Gamification\Http\Controllers\MeController@ledgerweb, auth, tenant
GET/api/v1/gamification/redemptionscan:gamification.view.rooftopVctrs\Plugins\Gamification\Http\Controllers\RedemptionController@indexweb, auth, tenant, can:gamification.view.rooftop
POST/api/v1/gamification/redemptionsVctrs\Plugins\Gamification\Http\Controllers\RedemptionController@storeweb, auth, tenant
POST/api/v1/gamification/redemptions/{id}/decidecan:gamification.redemption.approve.rooftopVctrs\Plugins\Gamification\Http\Controllers\RedemptionController@decideweb, auth, tenant, can:gamification.redemption.approve.rooftop
GET/api/v1/gamification/rewardscan:gamification.view.rooftopVctrs\Plugins\Gamification\Http\Controllers\RewardController@indexweb, auth, tenant, can:gamification.view.rooftop
POST/api/v1/gamification/rewardscan:gamification.rewards.manage.rooftopVctrs\Plugins\Gamification\Http\Controllers\RewardController@storeweb, auth, tenant, can:gamification.rewards.manage.rooftop
POST/api/v1/gamification/spiffcan:gamification.spiff.create.rooftopVctrs\Plugins\Gamification\Http\Controllers\SpiffController@storeweb, auth, tenant, can:gamification.spiff.create.rooftop
GET/api/v1/mentions/recentDashboard\MentionController@recentweb, session-api
GET/api/v1/mentions/unread-countDashboard\MentionController@unreadCountweb, session-api
GET/api/v1/partner-hub/catalogcan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\RoomReadController@catalogweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/roomscan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\RoomReadController@indexweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/currentcan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\RoomReadController@currentweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{id}can:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\RoomReadController@showweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{roomId}/action-itemscan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\ActionItemController@listweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{roomId}/collateralcan:partner-hub.collateral.readVctrs\Plugins\PartnerHub\Http\Controllers\CollateralController@listweb, auth, tenant, can:partner-hub.collateral.read
GET/api/v1/partner-hub/rooms/{roomId}/contactscan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\ContactController@listweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{roomId}/meetingscan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\MeetingController@indexweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{roomId}/meetings/lastcan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\MeetingController@lastweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{roomId}/meetings/nextcan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\MeetingController@nextweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/partner-hub/rooms/{roomId}/recordingscan:partner-hub.recordings.readVctrs\Plugins\PartnerHub\Http\Controllers\RecordingController@indexweb, auth, tenant, can:partner-hub.recordings.read
GET/api/v1/partner-hub/rooms/{roomId}/releasescan:partner-hub.room.readVctrs\Plugins\PartnerHub\Http\Controllers\ReleaseController@listweb, auth, tenant, can:partner-hub.room.read
GET/api/v1/plugins/staff/directoryscope:staff:directory:readVctrs\Plugins\StaffHub\Http\Controllers\StaffDirectoryController@indexscope:staff:directory:read
GET/api/v1/plugins/staff/directory/{id}scope:staff:directory:readVctrs\Plugins\StaffHub\Http\Controllers\StaffDirectoryController@showscope:staff:directory:read
DELETE/api/v1/plugins/storePlugins\PluginStoreController@destroyapi
GET/api/v1/plugins/storePlugins\PluginStoreController@showapi
PUT/api/v1/plugins/storePlugins\PluginStoreController@putapi
GET/api/v1/plugins/store/listPlugins\PluginStoreController@listapi
GET/api/v1/searchDashboard\SearchController@queryweb, session-api
GET/api/v1/timeline/calendarcan:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineCalendarController@listweb, auth, tenant, can:timeline.create.entry
POST/api/v1/timeline/calendarcan:timeline.manage.calendarVctrs\Plugins\Timeline\Http\Controllers\TimelineCalendarController@createweb, auth, tenant, can:timeline.manage.calendar
DELETE/api/v1/timeline/calendar/{id}can:timeline.manage.calendarVctrs\Plugins\Timeline\Http\Controllers\TimelineCalendarController@deleteweb, auth, tenant, can:timeline.manage.calendar
PATCH/api/v1/timeline/calendar/{id}can:timeline.manage.calendarVctrs\Plugins\Timeline\Http\Controllers\TimelineCalendarController@updateweb, auth, tenant, can:timeline.manage.calendar
GET/api/v1/timeline/definitionscan:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@definitionsListweb, auth, tenant, can:timeline.create.entry
POST/api/v1/timeline/definitionscan:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@definitionsCreateweb, auth, tenant, can:timeline.manage.definitions
DELETE/api/v1/timeline/definitions/{id}can:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@definitionsArchiveweb, auth, tenant, can:timeline.manage.definitions
GET/api/v1/timeline/definitions/{id}can:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@definitionsGetweb, auth, tenant, can:timeline.create.entry
PATCH/api/v1/timeline/definitions/{id}can:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@definitionsUpdateweb, auth, tenant, can:timeline.manage.definitions
GET/api/v1/timeline/entriescan:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesListweb, auth, tenant, can:timeline.create.entry
POST/api/v1/timeline/entriescan:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesCreateweb, auth, tenant, can:timeline.create.entry
DELETE/api/v1/timeline/entries/{id}can:timeline.delete.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesArchiveweb, auth, tenant, can:timeline.delete.entry
GET/api/v1/timeline/entries/{id}can:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesGetweb, auth, tenant, can:timeline.create.entry
PATCH/api/v1/timeline/entries/{id}can:timeline.update.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesUpdateweb, auth, tenant, can:timeline.update.entry
POST/api/v1/timeline/entries/{id}/assigncan:timeline.update.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesAssignweb, auth, tenant, can:timeline.update.entry
GET/api/v1/timeline/entries/{id}/historycan:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesHistoryweb, auth, tenant, can:timeline.create.entry
POST/api/v1/timeline/entries/{id}/notescan:timeline.update.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesAddNoteweb, auth, tenant, can:timeline.update.entry
DELETE/api/v1/timeline/entries/{id}/purgecan:timeline.delete.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesDeleteweb, auth, tenant, can:timeline.delete.entry
POST/api/v1/timeline/entries/{id}/statuscan:timeline.update.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@entriesUpdateStatusweb, auth, tenant, can:timeline.update.entry
POST/api/v1/timeline/publish/calendarEventcan:timeline.publishVctrs\Plugins\Timeline\Http\Controllers\TimelinePublishController@calendarEventweb, auth, tenant, can:timeline.publish
POST/api/v1/timeline/publish/entrycan:timeline.publishVctrs\Plugins\Timeline\Http\Controllers\TimelinePublishController@entryweb, auth, tenant, can:timeline.publish
GET/api/v1/timeline/statusescan:timeline.create.entryVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@statusesListweb, auth, tenant, can:timeline.create.entry
POST/api/v1/timeline/statusescan:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@statusesCreateweb, auth, tenant, can:timeline.manage.definitions
POST/api/v1/timeline/statuses/reordercan:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@statusesReorderweb, auth, tenant, can:timeline.manage.definitions
DELETE/api/v1/timeline/statuses/{id}can:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@statusesDeleteweb, auth, tenant, can:timeline.manage.definitions
PATCH/api/v1/timeline/statuses/{id}can:timeline.manage.definitionsVctrs\Plugins\Timeline\Http\Controllers\TimelineApiController@statusesUpdateweb, auth, tenant, can:timeline.manage.definitions
POST/api/v1/vault/documents/uploadcan:vault.write.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@uploadweb, auth, tenant, can:vault.write.rooftop
DELETE/api/v1/vault/documents/{id}can:vault.write.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@destroyweb, auth, tenant, can:vault.write.rooftop
POST/api/v1/vault/documents/{id}/confirm-uploadcan:vault.write.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@confirmUploadweb, auth, tenant, can:vault.write.rooftop
GET/api/v1/vault/documents/{id}/contentcan:vault.read.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@getContentweb, auth, tenant, can:vault.read.rooftop
GET/api/v1/vault/documents/{id}/downloadcan:vault.read.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@downloadweb, auth, tenant, can:vault.read.rooftop
POST/api/v1/vault/documents/{id}/lockcan:vault.lock.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@lockweb, auth, tenant, can:vault.lock.rooftop
PUT/api/v1/vault/documents/{id}/metadatacan:vault.write.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@updateMetadataweb, auth, tenant, can:vault.write.rooftop
POST/api/v1/vault/documents/{id}/transitioncan:vault.write.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@transitionweb, auth, tenant, can:vault.write.rooftop
GET/api/v1/vault/documents/{id}/versionscan:vault.read.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@listVersionsweb, auth, tenant, can:vault.read.rooftop
GET/api/v1/vault/searchcan:vault.read.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@searchweb, auth, tenant, can:vault.read.rooftop
GET/api/v1/vault/summarycan:vault.read.rooftopVctrs\Plugins\Vault\Http\Controllers\VaultApiController@summaryweb, auth, tenant, can:vault.read.rooftop
GET/api/v1/widgets/{key}\Dashboard\WidgetController@showweb, session-api
Last updated on