List available actions
Returns metadata about the Public Data API including available actions, required scopes, and rate limits.
Returns metadata about the Public Data API including available actions, required scopes, and rate limits.
Header Parameters
Date-based minor version negotiation (e.g. 2026-07-01).
If omitted, the latest version is used.
^\d{4}-\d{2}-\d{2}$Response Body
application/json
application/json
curl -X GET "https://example.com/api/v1/public/data"{ "success": true, "message": "string", "version": "string", "authentication": { "method": "string", "header": "string", "description": "string" }, "rate_limits": { "authenticated": "string", "unauthenticated": "string" }, "available_actions": [ { "action": "string", "description": "string", "required_scope": "string", "params": { "property1": "string", "property2": "string" } } ]}{ "success": false, "error": { "code": "RATE_LIMITED", "message": "Rate limit exceeded. Maximum 100 requests per minute.", "request_id": "req_abc123", "documentation_url": "https://dev-developer.totalaccess.co.za/docs/api-reference/errors#rate_limited" }}Get OpenAPI specification (YAML) GET
Returns the OpenAPI 3.1 specification as YAML.
Execute a Public Data API action POST
Single endpoint for all Public Data API operations. The `action` field in the request body determines which operation to execute. ### Read Actions | Action | Scope | Description | |---|---|---| | `get-active-users` | `users:read` | Get all active users | | `get-employees` | `employees:read` | Get employees with filters | | `get-user-memberships` | `users:read` | Get user-client memberships | | `get-work-item` | `work_items:read` | Get a single work item | | `list-work-items` | `work_items:read` | List work items with filters | | `get-work-item-relationships` | `work_items:read` | Get work item relationships | | `get-work-item-attachments` | `work_items:read` | Get work item attachments | | `get-work-item-photos` | `work_items:read` | Get work item photos | | `get-work-item-comments` | `work_items:read` | Get work item comments | | `get-work-item-time-entries` | `work_items:read` | Get work item time entries | | `get-work-item-assignees` | `work_items:read` | Get work item assignees | | `get-work-item-analytics` | `work_items:read` | Get work item analytics | | `get-work-item-sla` | `work_items:read` | Get work item SLA status | | `get-attendance-logs` | `attendance:read` | Get clock in/out records | | `get-shift-templates` | `shifts:read` | Get shift templates | | `get-shift-roster` | `roster:read` | Get scheduled shifts | | `get-locations` | `locations:read` | Get locations and geofences | | `get-timesheets` | `timesheets:read` | Get timesheet records | | `export-timesheets` | `timesheets:read` | Export timesheets (Sage/Payspace/SimplePay/Pastel) | | `get-overtime-records` | `overtime:read` | Get overtime records | | `list-threads` | `threads:read` | List conversation threads | | `get-job-thread` | `threads:read` | Get a job thread | | `get-job-threads` | `threads:read` | List job threads | | `get-team-thread` | `threads:read` | Get a team thread | | `get-team-threads` | `threads:read` | List team threads | | `get-thread-messages` | `threads:read` | Get messages in a thread | | `list-contacts` | `contacts:read` | List contacts | | `get-contact` | `contacts:read` | Get a single contact | | `list-contact-people` | `contacts:read` | List contact people | | `get-contact-person` | `contacts:read` | Get a contact person | | `search-contact-people` | `contacts:read` | Search contact people | | `get-contact-person-locations` | `contacts:read` | Get contact person locations | | `list-contact-locations` | `contacts:read` | List contact locations | | `get-contact-location` | `contacts:read` | Get a contact location | | `get-contact-location-people` | `contacts:read` | Get people at a location | | `list-contact-documents` | `contacts:read` | List contact documents | | `search-contacts` | `contacts:read` | Search contacts | | `search-contact-locations` | `contacts:read` | Search contact locations | | `list-recurring-jobs` | `recurring:write` or `work_items:read` | List recurring jobs | | `get-recurring-job` | `recurring:write` or `work_items:read` | Get a recurring job | ### Write Actions | Action | Scope | Description | |---|---|---| | `send-thread-message` | `threads:send_message` or `threads:write` | Send a message to a thread | | `create-work-item` | `work_items:write` | Create a new work item | | `create-appointment` | `appointments:write` or `work_items:write` | Create an appointment | | `create-comment` | `comments:write` or `work_items:write` | Add a comment to a work item | | `create-recurring-job` | `recurring:write` or `work_items:write` | Create a recurring job | | `update-recurring-job` | `recurring:write` or `work_items:write` | Update a recurring job | | `pause-recurring-job` | `recurring:write` or `work_items:write` | Pause a recurring job | | `resume-recurring-job` | `recurring:write` or `work_items:write` | Resume a recurring job | | `generate-recurring-job` | `recurring:write` or `work_items:write` | Generate instances from a recurring job | | `generate-job-card-pdf` | `work_items:read` | Generate a job card PDF | | `generate-attendance-card-pdf` | `work_items:read` | Generate an attendance card PDF | | `generate-finance-document-pdf` | `invoices:read` or `bills:read` or `quotes:read` | Generate a PDF for a finance document (invoice, quote, credit note, etc.) | | `convert-finance-document` | `invoices:write` or `bills:write` or `quotes:write` | Convert one finance document type to another (e.g. quote → invoice) | ### Dynamic Per-Type Actions For each work item type defined in the system (e.g. `job`, `invoice`, `task`), a dynamic `list-<type>` action is generated that maps to `list-work-items` with the `item_type` preset.