Versjonert API
Hovedbasen for versjonerte ruter er:
https://lager.aiportalen.cloud/api/v1
Webhooker ligger utenfor `api/v1` og dokumenteres separat i spesifikasjonen.
Denne siden beskriver hva API-et faktisk kan gjøre, hvilke auth-modeller som finnes i dag, og hvordan integrasjoner henter tilgang uten at dokumentasjonen driver bort fra koden.
Hovedbasen for versjonerte ruter er:
https://lager.aiportalen.cloud/api/v1
Webhooker ligger utenfor `api/v1` og dokumenteres separat i spesifikasjonen.
Alle dokumenterte API-ruter bruker `success/data/meta` eller `success/error/meta`.
{
"success": false,
"error": {
"code": "authentication_required",
"message": "Innlogging kreves.",
"details": []
},
"meta": {
"request_id": "5c73f994-41ef-4b54-b8ca-d0ea3be761f4",
"timestamp": "2026-06-27T12:00:00+02:00"
}
}
Det finnes forelopig ingen selvbetjent flyt for permanente API-nokler. Tilgang hentes i dag via mobile Bearer-tokens, nettlesersesjon eller provider-signaturer.
Vipps-credentials hentes gjennom Vipps MobilePay merchant/developer onboarding og konfigureres server-side. Swagger-spesifikasjonen beskriver derfor dagens reelle auth-modell, ikke en hypotetisk partnernøkkel.
Ruter som status, offentlig dokumentasjon, mobil config og mobil release-notes kan leses uten innlogging.
De fleste husholdnings-, admin- og superadmin-endepunktene er laget for forsteparts-webklienten. Bruk innlogget sesjon via cookie `hvorerden-session`. Ved skrivende browser-kall bor klienten sende `X-CSRF-TOKEN`.
Mobile og mobile-kompatible endepunkter bruker `Authorization: Bearer <access_token>`. Token hentes via `POST /api/v1/mobile/auth/login`, `POST /api/v1/mobile/auth/register` eller Vipps-flyten `POST /api/v1/mobile/auth/vipps/start` + `POST /api/v1/mobile/auth/vipps/complete`, og fornyes via `POST /api/v1/mobile/auth/refresh`.
Vipps brukes som ekstern identitets- og betalingsprovider. Mobilappen starter Vipps Login via `POST /api/v1/mobile/auth/vipps/start` og fullfører via `POST /api/v1/mobile/auth/vipps/complete`. Betaling i app starter via `POST /api/v1/mobile/billing/checkout-sessions` og bekreftes server-side via `POST /api/v1/mobile/billing/checkout-sessions/finalize` etter retur fra Vipps.
Billing-webhooken er offentlig eksponert, men autoriseres med provider-signatur i `Stripe-Signature`. Hemmeligheten hentes i Stripe-dashboardet og konfigureres server-side; den utstedes ikke av denne API-en.
Det finnes forelopig ingen selvbetjent flyt for a opprette permanente API-nokler eller maskinbrukere. Vipps-credentials er heller ikke noe denne API-en utsteder: de ma innhentes gjennom Vipps MobilePay merchant/developer onboarding og legges inn server-side som miljøvariabler.
{
"email": "ola@example.no",
"password": "password12345",
"device_installation_id": "android-installation-123",
"platform": "android",
"app_version_name": "0.14.0",
"app_version_code": 140000,
"device_name": "Pixel 9",
"device_model": "Pixel 9",
"os_version": "Android 16"
}
{
"success": true,
"data": {
"token_type": "Bearer",
"access_token": "opaque-access-token",
"access_token_expires_at": "2026-06-27T12:00:00+02:00",
"refresh_token": "opaque-refresh-token",
"refresh_token_expires_at": "2026-07-27T12:00:00+02:00",
"user": {
"public_id": "42",
"name": "Ola Nordmann",
"email": "ola@example.no",
"role": "user",
"status": "active",
"email_verified": true,
"current_household_id": "01H0000000000000000000000"
},
"device": {
"public_id": "01H0000000000000000000001",
"platform": "android",
"app_version_name": "0.14.0",
"app_version_code": 140000,
"device_name": "Pixel 9",
"device_model": "Pixel 9",
"os_version": "Android 16",
"last_seen_at": "2026-06-27T12:00:00+02:00",
"revoked_at": null
}
},
"meta": {
"request_id": "2ac10db6-7e35-4c57-8d79-ff8f4a77a001",
"timestamp": "2026-06-27T12:00:00+02:00"
}
}
{
"mode": "login",
"device_installation_id": "android-installation-123",
"platform": "android",
"app_version_name": "0.14.0",
"app_version_code": 140000,
"device_name": "Pixel 9",
"device_model": "Pixel 9",
"os_version": "Android 16"
}
{
"success": true,
"data": {
"mode": "login",
"state": "6d3ef7f6-714b-4327-a1f7-6e6f4b1ed123",
"authorization_url": "https://api.vipps.no/access-management-1.0/access/oauth2/auth?...",
"redirect_uri": "https://lager.aiportalen.cloud/s/v1/vipps/callback",
"expires_at": "2026-06-27T12:10:00+02:00"
},
"meta": {
"request_id": "12345678-90ab-cdef-1234-567890abcdef",
"timestamp": "2026-06-27T12:00:00+02:00"
}
}
Session-baserte web-endepunkter er primart laget for den innebygde webklienten. For maskinell tilgang i dag er mobile Bearer-tokens den faktiske utleveringsmekanismen, mens Vipps brukes som ekstern identitets- og betalingsprovider.
GET /api/v1/documentation/articles
POST /api/v1/mobile/auth/forgot-password
POST /api/v1/mobile/auth/login
POST /api/v1/mobile/auth/refresh
POST /api/v1/mobile/auth/register
POST /api/v1/mobile/auth/vipps/complete
POST /api/v1/mobile/auth/vipps/start
GET /api/v1/mobile/config
GET /api/v1/mobile/release/notes
GET /api/v1/mobile/release/status
POST /api/v1/security/csp-report
GET /api/v1/status
GET /api/v1/status-page/public
POST /api/webhooks/twilio/{type}
10 requests per minute
IP + email + device_installation_id
6 requests per minute
IP + email + device_installation_id
6 requests per minute
IP + email + device_installation_id
30 requests per minute
IP + email + device_installation_id
120 requests per minute
User + mobile device + IP
60 requests per minute
User + household + IP
20 requests per minute
User + household + IP
60 requests per minute
User + household + IP
20 requests per minute
User + household + IP
60 requests per minute
User + household + IP
Configurable per minute, default 180
User + household + IP
Configurable per minute, default 30
User + household + IP
30 requests per minute
User + household + IP
60 requests per minute
User + household + IP
30 requests per minute
IP + user-agent
Hver gruppe under samsvarer med Swagger/OpenAPI-spesifikasjonen. Rutenavn, auth og rate limits er avledet direkte fra Laravel-rutene.
/api/v1/status
api.status
Auth: Public
/api/v1/status-page/public
api.status-page.public
Auth: Public
/api/webhooks/twilio/{type}
api.webhooks.twilio
Auth: Public
/api/v1/mobile/auth/forgot-password
api.mobile.auth.forgot-password
Auth: Public · Rate limit: 6 requests per minute
/api/v1/mobile/auth/login
api.mobile.auth.login
Auth: Public · Rate limit: 10 requests per minute
/api/v1/mobile/auth/logout
api.mobile.auth.logout
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/auth/refresh
api.mobile.auth.refresh
Auth: Public · Rate limit: 30 requests per minute
/api/v1/mobile/auth/register
api.mobile.auth.register
Auth: Public · Rate limit: 6 requests per minute
/api/v1/mobile/auth/resend-verification
api.mobile.auth.resend-verification
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/auth/vipps/complete
api.mobile.auth.vipps.complete
Auth: Public · Rate limit: 10 requests per minute
/api/v1/mobile/auth/vipps/start
api.mobile.auth.vipps.start
Auth: Public · Rate limit: 10 requests per minute
/api/v1/mobile/bootstrap
api.mobile.bootstrap
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/config
api.mobile.config
Auth: Public
/api/v1/mobile/data-exports
api.mobile.data-exports.index
Auth: Session or Mobile Bearer
/api/v1/mobile/data-exports
api.mobile.data-exports.store
Auth: Session or Mobile Bearer
/api/v1/mobile/data-exports/{public_id}
api.mobile.data-exports.show
Auth: Session or Mobile Bearer
/api/v1/mobile/devices
api.mobile.devices.index
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/devices/{device_public_id}
api.mobile.devices.destroy
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/households
api.mobile.households.index
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/households
api.mobile.households.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/households/{household_public_id}/activate
api.mobile.households.activate
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/media-uploads
api.mobile.media-uploads.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/media-uploads/{public_id}
api.mobile.media-uploads.destroy
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/media-uploads/{public_id}
api.mobile.media-uploads.show
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/media-uploads/{public_id}/complete
api.mobile.media-uploads.complete
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/media-uploads/{public_id}/content
api.mobile.media-uploads.content
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/mutations
api.mobile.mutations.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/mutations/{operation_public_id}
api.mobile.mutations.show
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/system-logs
api.mobile.system-logs.index
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/capabilities
api.mobile.ai.capabilities
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/intake/container-suggestions
api.mobile.ai.vision.intake.container
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/intake/item-suggestions
api.mobile.ai.vision.intake.item
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/placement/container-to-slot
api.mobile.ai.vision.placement.container-to-slot
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/placement/item-to-container
api.mobile.ai.vision.placement.item-to-container
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/search
api.mobile.ai.search
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/vision/analyze
api.mobile.ai.vision.analyze
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/ai/vision/capabilities
api.mobile.ai.vision.capabilities
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/billing/checkout-sessions
api.mobile.billing.checkout-sessions.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/billing/checkout-sessions/finalize
api.mobile.billing.checkout-sessions.finalize
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/billing/open-portal
api.mobile.billing.open-portal
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/billing/status
api.mobile.billing.status
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/entitlements
api.mobile.billing.entitlements
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/usage
api.mobile.billing.usage
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/inventory/capabilities
api.mobile.inventory.capabilities
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/inventory/search
api.mobile.inventory.search
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/inventory/{resource_type}/{public_id}
api.mobile.inventory.detail
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/sync/manifest
api.mobile.sync.manifest
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/sync/snapshots
api.mobile.sync.snapshots.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/sync/snapshots/{public_id}
api.mobile.sync.snapshots.show
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/sync/snapshots/{public_id}/collections/{collection_key}/download
api.mobile.sync.snapshots.collections.download
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/capabilities
api.mobile.organizer.capabilities
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/execution/sessions
api.mobile.organizer.execution.sessions.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/execution/sessions/{session_public_id}
api.mobile.organizer.execution.sessions.show
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/execution/tasks/{task_public_id}/deviation
api.mobile.organizer.execution.tasks.deviation
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/execution/tasks/{task_public_id}/execute
api.mobile.organizer.execution.tasks.execute
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/execution/tasks/{task_public_id}/skip
api.mobile.organizer.execution.tasks.skip
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/execution/tasks/{task_public_id}/validate
api.mobile.organizer.execution.tasks.validate
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/plans
api.mobile.organizer.plans.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/plans/{plan_public_id}
api.mobile.organizer.plans.show
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/plans/{plan_public_id}/replan
api.mobile.organizer.plans.replan
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/plans/{plan_version_public_id}/approve
api.mobile.organizer.plans.approve
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/plans/{plan_version_public_id}/feedback
api.mobile.organizer.plans.feedback
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/organizer/plans/{plan_version_public_id}/reject
api.mobile.organizer.plans.reject
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/mobile/security/local-cache-purge-record
api.mobile.security.local-cache-purge-record
Auth: Session or Mobile Bearer
/api/v1/mobile/security/status
api.mobile.security.status
Auth: Session or Mobile Bearer
/api/v1/mobile/privacy/status
api.mobile.privacy.status
Auth: Session or Mobile Bearer
/api/v1/mobile/release/notes
api.mobile.release.notes
Auth: Public
/api/v1/mobile/release/status
api.mobile.release.status
Auth: Public
/api/v1/mobile/support/tickets
api.mobile.support.tickets.store
Auth: Mobile Bearer · Rate limit: 120 requests per minute
/api/v1/ai/answer
api.ai.answer
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/capabilities
api.ai.capabilities
Auth: Session
/api/v1/ai/intake/container-suggestions
api.ai.intake.container-suggestions.store
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/intake/container-suggestions/{public_id}/accept
api.ai.intake.container-suggestions.accept
Auth: Session
/api/v1/ai/intake/item-suggestions
api.ai.intake.item-suggestions.store
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/intake/item-suggestions/{public_id}/accept
api.ai.intake.item-suggestions.accept
Auth: Session
/api/v1/ai/organizer/capabilities
api.ai.organizer.capabilities
Auth: Session
/api/v1/ai/organizer/plans
api.ai.organizer.plans.store
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/organizer/plans/{plan_public_id}
api.ai.organizer.plans.show
Auth: Session
/api/v1/ai/organizer/plans/{plan_public_id}/replan
api.ai.organizer.plans.replan
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/placement/container-to-slot
api.ai.placement.container-to-slot
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/placement/item-to-container
api.ai.placement.item-to-container
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/search
api.ai.search
Auth: Session · Rate limit: 60 requests per minute
/api/v1/ai/search/{query_public_id}
api.ai.search.show
Auth: Session
/api/v1/ai/search/{query_public_id}/feedback
api.ai.search.feedback
Auth: Session · Rate limit: 60 requests per minute
/api/v1/ai/vision/capabilities
api.ai.vision.capabilities
Auth: Session
/api/v1/ai/vision/feedback
api.ai.vision.feedback
Auth: Session · Rate limit: 60 requests per minute
/api/v1/ai/vision/sessions
api.ai.vision.sessions.store
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/vision/sessions/{public_id}
api.ai.vision.sessions.show
Auth: Session
/api/v1/ai/vision/sessions/{public_id}/analyze
api.ai.vision.sessions.analyze
Auth: Session · Rate limit: 20 requests per minute
/api/v1/ai/vision/sessions/{public_id}/images
api.ai.vision.sessions.images
Auth: Session · Rate limit: 20 requests per minute
/api/v1/audit
api.audit.index
Auth: Session
/api/v1/audit/{public_id}
api.audit.show
Auth: Session
/api/v1/billing/checkout-sessions
api.billing.checkout-sessions.store
Auth: Session
/api/v1/billing/customer-portal-sessions
api.billing.customer-portal-sessions.store
Auth: Session
/api/v1/billing/invoices
api.billing.invoices
Auth: Session
/api/v1/billing/plans
api.billing.plans
Auth: Session
/api/v1/billing/status
api.billing.status
Auth: Session
/api/v1/entitlements
api.entitlements
Auth: Session
/api/webhooks/billing/{provider_key}
api.webhooks.billing
Auth: Stripe-Signature
/api/v1/containers
api.containers.index
Auth: Session
/api/v1/containers
api.containers.store
Auth: Session
/api/v1/containers/{container}
api.containers.show
Auth: Session
/api/v1/containers/{container}
api.containers.update
Auth: Session
/api/v1/containers/{container}/archive
api.containers.archive
Auth: Session
/api/v1/containers/{container}/fill-status
api.containers.fill-status
Auth: Session
/api/v1/containers/{container}/move
api.containers.move
Auth: Session
/api/v1/containers/{container}/movements
api.containers.movements
Auth: Session
/api/v1/containers/{container}/place
api.containers.place
Auth: Session
/api/v1/containers/{container}/restore
api.containers.restore
Auth: Session
/api/v1/containers/{container}/unplace
api.containers.unplace
Auth: Session
/api/v1/data-exports
api.data-exports.index
Auth: Session
/api/v1/data-exports
api.data-exports.store
Auth: Session
/api/v1/data-exports/{public_id}
api.data-exports.destroy
Auth: Session
/api/v1/data-exports/{public_id}
api.data-exports.show
Auth: Session
/api/v1/data-exports/{public_id}/download
api.data-exports.download
Auth: Session
/api/v1/data-imports
api.data-imports.store
Auth: Session
/api/v1/data-imports/{public_id}
api.data-imports.show
Auth: Session
/api/v1/data-imports/{public_id}/cancel
api.data-imports.cancel
Auth: Session
/api/v1/data-imports/{public_id}/confirm
api.data-imports.confirm
Auth: Session
/api/v1/data-imports/{public_id}/dry-run
api.data-imports.dry-run
Auth: Session
/api/v1/documentation/articles
api.documentation.articles.index
Auth: Public
/api/v1/documentation/articles
api.documentation.articles.store
Auth: Session (role restricted)
/api/v1/documentation/articles/{public_id}/publish
api.documentation.articles.publish
Auth: Session (role restricted)
/api/v1/incidents
api.incidents.index
Auth: Session (role restricted)
/api/v1/incidents
api.incidents.store
Auth: Session (role restricted)
/api/v1/incidents/maintenance-windows
api.incidents.maintenance-windows.store
Auth: Session (role restricted)
/api/v1/incidents/{public_id}/resolve
api.incidents.resolve
Auth: Session (role restricted)
/api/v1/incidents/{public_id}/updates
api.incidents.updates.store
Auth: Session (role restricted)
/api/v1/items
api.items.index
Auth: Session
/api/v1/items
api.items.store
Auth: Session
/api/v1/items/{item}
api.items.show
Auth: Session
/api/v1/items/{item}
api.items.update
Auth: Session
/api/v1/items/{item}/archive
api.items.archive
Auth: Session
/api/v1/items/{item}/assign
api.items.assign
Auth: Session
/api/v1/items/{item}/category
api.items.category.update
Auth: Session
/api/v1/items/{item}/media
api.items.media.store
Auth: Session
/api/v1/items/{item}/media/reorder
api.items.media.reorder
Auth: Session
/api/v1/items/{item}/media/{media}
api.items.media.destroy
Auth: Session
/api/v1/items/{item}/media/{media}/primary
api.items.media.primary
Auth: Session
/api/v1/items/{item}/media/{media}/rotate
api.items.media.rotate
Auth: Session
/api/v1/items/{item}/move
api.items.move
Auth: Session
/api/v1/items/{item}/movements
api.items.movements
Auth: Session
/api/v1/items/{item}/product-codes
api.items.product-codes.store
Auth: Session
/api/v1/items/{item}/product-codes/{productCode}
api.items.product-codes.destroy
Auth: Session
/api/v1/items/{item}/product-codes/{productCode}
api.items.product-codes.update
Auth: Session
/api/v1/items/{item}/product-codes/{productCode}/primary
api.items.product-codes.primary
Auth: Session
/api/v1/items/{item}/quantity
api.items.quantity
Auth: Session
/api/v1/items/{item}/quantity-history
api.items.quantity-history
Auth: Session
/api/v1/items/{item}/restore
api.items.restore
Auth: Session
/api/v1/items/{item}/tags
api.items.tags.update
Auth: Session
/api/v1/items/{item}/unassign
api.items.unassign
Auth: Session
/api/v1/labels/preview
api.labels.preview
Auth: Session
/api/v1/labels/print-jobs
api.labels.print-jobs.store
Auth: Session
/api/v1/labels/print-jobs/{printJob}
api.labels.print-jobs.show
Auth: Session
/api/v1/labels/print-jobs/{printJob}/download
api.labels.print-jobs.download
Auth: Session
/api/v1/labels/templates
api.labels.templates.index
Auth: Session
/api/v1/launch-readiness/checklist/{public_id}/complete
api.launch-readiness.checklist.complete
Auth: Session (role restricted)
/api/v1/launch-readiness/go-no-go
api.launch-readiness.go-no-go
Auth: Session (role restricted)
/api/v1/launch-readiness/summary
api.launch-readiness.summary
Auth: Session (role restricted)
/api/v1/media/{media}/{variant}
api.media.show
Auth: Session
/api/v1/observability/metrics
api.observability.metrics.index
Auth: Session (role restricted)
/api/v1/observability/run-checks
api.observability.run-checks
Auth: Session (role restricted)
/api/v1/observability/summary
api.observability.summary
Auth: Session (role restricted)
/api/v1/operations/backup-attestations
api.operations.backup-attestations.store
Auth: Session (role restricted)
/api/v1/operations/backup-health
api.operations.backup-health
Auth: Session (role restricted)
/api/v1/operations/readiness
api.operations.readiness
Auth: Session (role restricted)
/api/v1/operations/restore-drills
api.operations.restore-drills.store
Auth: Session (role restricted)
/api/v1/organization/execution/sessions
api.organization.execution.sessions.store
Auth: Session
/api/v1/organization/execution/sessions/{session_public_id}
api.organization.execution.sessions.show
Auth: Session
/api/v1/organization/execution/tasks/{task_public_id}/deviation
api.organization.execution.tasks.deviation
Auth: Session
/api/v1/organization/execution/tasks/{task_public_id}/execute
api.organization.execution.tasks.execute
Auth: Session
/api/v1/organization/execution/tasks/{task_public_id}/skip
api.organization.execution.tasks.skip
Auth: Session
/api/v1/organization/execution/tasks/{task_public_id}/validate
api.organization.execution.tasks.validate
Auth: Session
/api/v1/organization/plans/{plan_version_public_id}/approve
api.organization.plans.approve
Auth: Session
/api/v1/organization/plans/{plan_version_public_id}/feedback
api.organization.plans.feedback
Auth: Session
/api/v1/organization/plans/{plan_version_public_id}/reject
api.organization.plans.reject
Auth: Session
/api/v1/privacy/ai-purge
api.privacy.ai-purge
Auth: Session
/api/v1/privacy/requests
api.privacy.requests.store
Auth: Session
/api/v1/privacy/requests/{public_id}/cancel
api.privacy.requests.cancel
Auth: Session
/api/v1/privacy/status
api.privacy.status
Auth: Session
/api/v1/product-codes/resolve
api.product-codes.resolve
Auth: Session
/api/v1/quality/manual-checks
api.quality.manual-checks.store
Auth: Session (role restricted)
/api/v1/quality/runs
api.quality.runs.index
Auth: Session (role restricted)
/api/v1/quality/summary
api.quality.summary
Auth: Session (role restricted)
/api/v1/release/candidates
api.release.candidates.index
Auth: Session (role restricted)
/api/v1/release/candidates
api.release.candidates.store
Auth: Session (role restricted)
/api/v1/release/candidates/{public_id}/approve
api.release.candidates.approve
Auth: Session (role restricted)
/api/v1/release/candidates/{public_id}/reject
api.release.candidates.reject
Auth: Session (role restricted)
/api/v1/release/candidates/{public_id}/run-gates
api.release.candidates.run-gates
Auth: Session (role restricted)
/api/v1/scan-actions/{publicId}
api.scan-actions.show
Auth: Session or Mobile Bearer
/api/v1/scan-sessions
api.scan-sessions.store
Auth: Session or Mobile Bearer · Rate limit: 30 requests per minute
/api/v1/scan-sessions/{publicId}
api.scan-sessions.show
Auth: Session or Mobile Bearer
/api/v1/scan-sessions/{publicId}/cancel
api.scan-sessions.cancel
Auth: Session or Mobile Bearer
/api/v1/scan-sessions/{publicId}/confirm
api.scan-sessions.confirm
Auth: Session or Mobile Bearer · Rate limit: Configurable per minute, default 30
/api/v1/scan-sessions/{publicId}/scan
api.scan-sessions.scan
Auth: Session or Mobile Bearer · Rate limit: Configurable per minute, default 180
/api/v1/scan-sessions/{publicId}/select-candidate
api.scan-sessions.select-candidate
Auth: Session or Mobile Bearer
/api/v1/scan-sessions/{publicId}/targets/{roleKey}
api.scan-sessions.targets.destroy
Auth: Session or Mobile Bearer
/api/v1/scans/capabilities
api.scans.capabilities
Auth: Session or Mobile Bearer
/api/v1/scans/history
api.scans.history
Auth: Session or Mobile Bearer · Rate limit: 60 requests per minute
/api/v1/scans/resolve
api.scans.resolve
Auth: Session or Mobile Bearer · Rate limit: Configurable per minute, default 180
/api/v1/security/csp-report
api.security.csp-report
Auth: Public · Rate limit: 30 requests per minute
/api/v1/security/mfa/confirm
api.security.mfa.confirm
Auth: Session · Rate limit: 10 requests per 1 minute(s)
/api/v1/security/mfa/disable
api.security.mfa.disable
Auth: Session · Rate limit: 10 requests per 1 minute(s)
/api/v1/security/mfa/recovery-code
api.security.mfa.recovery-code
Auth: Session · Rate limit: 10 requests per 1 minute(s)
/api/v1/security/mfa/setup
api.security.mfa.setup
Auth: Session · Rate limit: 6 requests per 1 minute(s)
/api/v1/security/mobile-devices/{device_public_id}
api.security.mobile-devices.destroy
Auth: Session
/api/v1/security/sessions
api.security.sessions.index
Auth: Session
/api/v1/security/sessions/revoke-others
api.security.sessions.revoke-others
Auth: Session
/api/v1/security/sessions/{session_public_id}
api.security.sessions.destroy
Auth: Session
/api/v1/security/status
api.security.status
Auth: Session
/api/v1/structure/locations
api.structure.locations.index
Auth: Session
/api/v1/structure/locations
api.structure.locations.store
Auth: Session
/api/v1/structure/locations/{location}
api.structure.locations.show
Auth: Session
/api/v1/structure/locations/{location}
api.structure.locations.update
Auth: Session
/api/v1/structure/rack-builder
api.structure.builder.store
Auth: Session
/api/v1/structure/rack-builder/preview
api.structure.builder.preview
Auth: Session
/api/v1/structure/racks
api.structure.racks.store
Auth: Session
/api/v1/structure/rows
api.structure.rows.store
Auth: Session
/api/v1/structure/search
api.structure.search
Auth: Session
/api/v1/structure/shelves
api.structure.shelves.store
Auth: Session
/api/v1/structure/slots
api.structure.slots.store
Auth: Session
/api/v1/structure/slots/{slot}
api.structure.slots.show
Auth: Session
/api/v1/structure/slots/{slot}
api.structure.slots.update
Auth: Session
/api/v1/structure/summary
api.structure.summary
Auth: Session
/api/v1/structure/tree
api.structure.tree
Auth: Session
/api/v1/structure/zones
api.structure.zones.store
Auth: Session
/api/v1/superadmin/households
api.superadmin.households
Auth: Session (role restricted)
/api/v1/superadmin/households/{household_public_id}/manual-overrides
api.superadmin.manual-overrides.store
Auth: Session (role restricted)
/api/v1/superadmin/manual-overrides/{override_public_id}
api.superadmin.manual-overrides.destroy
Auth: Session (role restricted)
/api/v1/superadmin/overview
api.superadmin.overview
Auth: Session (role restricted)
/api/v1/superadmin/subscriptions
api.superadmin.subscriptions
Auth: Session (role restricted)
/api/v1/superadmin/support-sessions
api.superadmin.support-sessions.store
Auth: Session (role restricted)
/api/v1/superadmin/support-sessions/{session_public_id}/end
api.superadmin.support-sessions.end
Auth: Session (role restricted)
/api/v1/superadmin/users
api.superadmin.users
Auth: Session (role restricted)
/api/v1/support/tickets
api.support.tickets.index
Auth: Session
/api/v1/support/tickets
api.support.tickets.store
Auth: Session
/api/v1/support/tickets/{public_id}/attachments
api.support.tickets.attachments.store
Auth: Session
/api/v1/support/tickets/{public_id}/comments
api.support.tickets.comments.store
Auth: Session
/api/v1/support/tickets/{public_id}/diagnostics
api.support.tickets.diagnostics.store
Auth: Session
/api/v1/taxonomy/categories
api.taxonomy.categories.index
Auth: Session
/api/v1/taxonomy/categories
api.taxonomy.categories.store
Auth: Session
/api/v1/taxonomy/categories/{category}
api.taxonomy.categories.update
Auth: Session
/api/v1/taxonomy/categories/{category}/archive
api.taxonomy.categories.archive
Auth: Session
/api/v1/taxonomy/categories/{category}/move
api.taxonomy.categories.move
Auth: Session
/api/v1/taxonomy/tags
api.taxonomy.tags.index
Auth: Session
/api/v1/taxonomy/tags
api.taxonomy.tags.store
Auth: Session
/api/v1/taxonomy/tags/{tag}
api.taxonomy.tags.update
Auth: Session
/api/v1/taxonomy/tags/{tag}/archive
api.taxonomy.tags.archive
Auth: Session
/api/v1/usage
api.usage
Auth: Session