Developer Navigation

Central navigation for architecture, SDK, API explorer, examples, and platform references.

API Explorer

Method, URL, permissions, examples, errors, and reason codes for current internal and platform-facing endpoints.

OpenAPI: developer_openapi_json (0.1.0-dev-portal)

Authentication

GET /accounts/login/

Interactive sign-in for portal, hub, and staff users.

Permissions: Anonymous

Request: GET /accounts/login/

Response: 200 HTML login form

Errors: 302 redirect, 400 validation errors

Reason codes: invalid_credentials, account_inactive

Launch

GET /launch/<organisation_id>/<product_slug>/

Hub launch handoff with signed launch token.

Permissions: Authenticated + entitlement decision

Request: GET /launch/14/assured-fleetops/

Response: 302 redirect to downstream app with launch_token

Errors: 403 launch_denied, 503 system_error

Reason codes: allowed, no_membership, organisation_inactive, product_inactive, no_product_access, entitlement_inactive, entitlement_expired, system_error

Entitlements

POST /api/access/check/

Server-to-server entitlement decision API.

Permissions: X-API-KEY required

Request: {"user_email":"owner@example.com","organisation_id":"14","product_slug":"assured-fleetops"}

Response: {"allowed":true,"decision_code":"allowed","trace_id":"..."}

Errors: 400 malformed_request, 401 invalid_api_key, 429 rate_limited, 500 system_error

Reason codes: allowed, no_user, no_membership, organisation_inactive, product_inactive, no_product_access, entitlement_inactive, entitlement_expired, system_error

Billing

POST /billing/webhooks/stripe/

Stripe webhook ingestion and reconciliation.

Permissions: Stripe signature header

Request: Stripe event payload

Response: 200 webhook accepted

Errors: 400 bad_payload, 401 bad_signature, 500 processing_error

Reason codes: webhook_invalid, event_unsupported, processing_failed

Notifications

GET /staff/platform/notifications/

Staff notification event and delivery console.

Permissions: Staff

Request: GET /staff/platform/notifications/?status=failed

Response: 200 HTML table

Errors: 403 forbidden

Reason codes: forbidden

Files

GET /files/download/<file_asset_id>/

Secure file delivery.

Permissions: Authenticated + file visibility rules

Request: GET /files/download/812/

Response: 200 file stream

Errors: 403 forbidden, 404 not_found

Reason codes: forbidden, asset_not_found

Forms

GET/POST /forms/<organisation_id>/<slug>/

Public form rendering and submission capture.

Permissions: Public by form policy

Request: POST /forms/14/contact-us/

Response: 200 confirmation/validation output

Errors: 404 not_found, 400 validation_error

Reason codes: form_not_found, validation_error

Learning

GET /learning/<collection_slug>/<guide_slug>/

Public learning guide access.

Permissions: Public or policy-gated

Request: GET /learning/getting-started/intro/

Response: 200 guide page

Errors: 404 not_found

Reason codes: guide_not_found

Bookings

POST /portal/bookings/<booking_id>/cancel/

Portal-side booking cancellation action.

Permissions: Membership + booking policy

Request: POST /portal/bookings/44/cancel/

Response: 302 redirect after cancel

Errors: 403 forbidden, 404 not_found

Reason codes: forbidden, booking_not_found

Relationships

GET/POST /portal/relationships/

Relationship management workspace (portal).

Permissions: Authenticated membership

Request: POST action=create_person

Response: 302 redirect with status message

Errors: 400 validation_error, 403 forbidden

Reason codes: validation_error, forbidden

Sales

GET/POST /portal/sales/

Sales CRM portal workspace for opportunities and quotes.

Permissions: Authenticated membership

Request: POST action=create_opportunity

Response: 302 redirect with success message

Errors: 400 validation_error, 403 forbidden

Reason codes: validation_error, forbidden

AI

GET /portal/ai/

Portal AI framework placeholder and entitlement surface.

Permissions: Authenticated membership

Request: GET /portal/ai/

Response: 200 placeholder page

Errors: 403 forbidden

Reason codes: forbidden

Organisation

POST /portal/switch-organisation/

Switch active portal organisation context.

Permissions: Authenticated membership

Request: {"organisation_id":14}

Response: 302 redirect

Errors: 403 forbidden, 400 invalid_org

Reason codes: forbidden, invalid_organisation

Users

POST /portal/team/<membership_id>/role/

Update team member role.

Permissions: Organisation owner/admin

Request: {"role":"manager"}

Response: 302 redirect

Errors: 403 forbidden, 404 not_found

Reason codes: forbidden, membership_not_found

Platform Admin

GET /staff/platform/system-health/

Operational health checks dashboard.

Permissions: Staff

Request: GET /staff/platform/system-health/

Response: 200 HTML

Errors: 403 forbidden

Reason codes: forbidden