Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

2.4 KiB

Mobile API Contract (Ticketing MVP)

Last updated: 2026-02-03

This document describes the REST API surface used by the React Native mobile app (ee/mobile/) for the Ticketing MVP.

Authentication (mobile)

Web sign-in + mobile OTT

  • Browser login: GET /auth/signin (SSO providers as configured)
  • Mobile handoff: GET /auth/mobile/handoff?redirect={deepLink}&state={state}
    • Redirects to redirect with ott + state query params

Mobile token exchange/refresh

  • GET /api/v1/mobile/auth/capabilities
  • POST /api/v1/mobile/auth/exchange
  • POST /api/v1/mobile/auth/refresh
  • POST /api/v1/mobile/auth/revoke

API key usage for ticket APIs

Mobile uses a short-lived API key for API v1 routes:

  • Header: x-api-key: {accessToken}
  • Header: x-tenant-id: {tenantId} (recommended; required for some validation paths)

Ticketing APIs

List tickets

GET /api/v1/tickets

Query params (mobile):

  • Pagination: page, limit
  • Sorting: sort, order
  • Search: search
  • Filters:
    • is_open=true|false
    • is_closed=true|false
    • assigned_to={userId}
    • has_assignment=true|false
    • priority_name={string}
    • status_name={string}
    • updated_from={ISO datetime}
    • updated_to={ISO datetime}
  • Field selection:
    • fields=mobile_list (recommended for mobile list payload)

Ticket stats

GET /api/v1/tickets/stats

Returns aggregate counts (open/unassigned/overdue).

Ticket detail

GET /api/v1/tickets/{ticketId}

Returns ticket fields and additional joined fields as available.

Ticket comments

  • GET /api/v1/tickets/{ticketId}/comments
    • Supports pagination in the mobile client (client-side paging today).
  • POST /api/v1/tickets/{ticketId}/comments
    • Body: { comment_text: string, is_internal: boolean }

Statuses + update

  • GET /api/v1/tickets/statuses
  • PUT /api/v1/tickets/{ticketId}/status
    • Body: { status_id: string }

Assignment

PUT /api/v1/tickets/{ticketId}/assignment

Body: { assigned_to: string | null }

Priorities

  • GET /api/v1/tickets/priorities
  • Priority update uses PUT /api/v1/tickets/{ticketId} with { priority_id }

Partial update (attributes)

PUT /api/v1/tickets/{ticketId}

Used by mobile for updating attributes (e.g. due date, watchers).

Time entry create

POST /api/v1/time-entries

Used by mobile to create a time entry linked to a ticket (work_item_type=ticket, work_item_id={ticketId}).