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
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
100 lines
2.4 KiB
Markdown
100 lines
2.4 KiB
Markdown
# 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}`).
|
|
|