ETK Pulse API
REST API for ETK Pulse - multi-tenant HR, payroll, attendance & double-entry finance. All tenant data is isolated by Postgres Row-Level Security; authentication is a NextAuth session cookie set by signing in. Money is always `Decimal` (string) - never float.
Auth
Sign-in and password management.
/api/auth/{nextauth}PublicNextAuth handler
Catch-all NextAuth route: session, CSRF, callbacks, sign-out.
curl -X GET 'https://your-host/api/auth/{nextauth}'/api/auth/{nextauth}PublicNextAuth handler (credentials sign-in, sign-out)
curl -X POST 'https://your-host/api/auth/{nextauth}'/api/auth/change-passwordAuthenticatedChange your password
| Field | Type | Req | Notes |
|---|---|---|---|
| currentPassword | string | yes | - |
| newPassword | string | yes | min len 8 |
curl -X POST 'https://your-host/api/auth/change-password' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"currentPassword":"oldpass123","newPassword":"n3w-strong-pass"}'{
"currentPassword": "oldpass123",
"newPassword": "n3w-strong-pass"
}{
"ok": true
}Attendance
Employee clock in/out, breaks, and self-service edits.
/api/attendance/clock-inAuthenticatedClock in
Starts a work session. Idempotent via `clientEventId` (offline replay-safe). Location captured only if the workspace enables it.
| Field | Type | Req | Notes |
|---|---|---|---|
| lat | number | - | - |
| lng | number | - | - |
| clientEventId | string | - | min len 8 |
| clientTime | string | - | format date-time |
curl -X POST 'https://your-host/api/attendance/clock-in' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"clientEventId":"evt_3f9ab1c2d4","clientTime":"2026-06-09T08:30:00.000Z"}'{
"clientEventId": "evt_3f9ab1c2d4",
"clientTime": "2026-06-09T08:30:00.000Z"
}{
"session": {
"id": "ckxyz",
"clockInAt": "2026-06-09T08:30:00.000Z",
"clockOutAt": null
}
}/api/attendance/clock-outAuthenticatedClock out
| Field | Type | Req | Notes |
|---|---|---|---|
| lat | number | - | - |
| lng | number | - | - |
| clientEventId | string | - | min len 8 |
| clientTime | string | - | format date-time |
curl -X POST 'https://your-host/api/attendance/clock-out' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"clientEventId":"evt_9c1b7a","clientTime":"2026-06-09T17:00:00.000Z"}'{
"clientEventId": "evt_9c1b7a",
"clientTime": "2026-06-09T17:00:00.000Z"
}/api/attendance/start-breakAuthenticatedStart a break
| Field | Type | Req | Notes |
|---|---|---|---|
| clientEventId | string | - | min len 8 |
| clientTime | string | - | format date-time |
curl -X POST 'https://your-host/api/attendance/start-break' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/attendance/end-breakAuthenticatedEnd a break
| Field | Type | Req | Notes |
|---|---|---|---|
| breakId | string | yes | - |
| clientEventId | string | - | min len 8 |
| clientTime | string | - | format date-time |
curl -X POST 'https://your-host/api/attendance/end-break' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"breakId":"brk_123"}'{
"breakId": "brk_123"
}/api/attendance/sessions/{sessionId}AuthenticatedEdit your own attendance session
Self-edit of clock in/out + note. Allowed **only** when the workspace has enabled “Allow manual time edits”; otherwise returns 403. Worked/overtime are recomputed server-side.
| Parameter | In | Req | Description |
|---|---|---|---|
| sessionId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| clockInAt | string | - | format date-time |
| clockOutAt | string | null | - | format date-time |
| note | string | null | - | - |
curl -X PATCH 'https://your-host/api/attendance/sessions/{sessionId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"clockInAt":"2026-06-09T08:45:00.000Z","note":"Adjusted - badge reader was down"}'{
"clockInAt": "2026-06-09T08:45:00.000Z",
"note": "Adjusted - badge reader was down"
}/api/attendance/exportAuthenticatedExport your attendance (CSV)
| Parameter | In | Req | Description |
|---|---|---|---|
| start | query | - | YYYY-MM-DD |
| end | query | - | YYYY-MM-DD |
curl -X GET 'https://your-host/api/attendance/export' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Admin · Attendance
Workspace-admin attendance management, import & export.
/api/admin/attendance/sessionsAdminCreate an attendance session
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| employeeId | string | yes | - |
| clockInAt | string | yes | format date-time |
| clockOutAt | string | null | - | format date-time |
| timezone | string | - | - |
| note | string | null | - | - |
curl -X POST 'https://your-host/api/admin/attendance/sessions' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"employeeId":"emp_123","clockInAt":"2026-06-09T08:30:00.000Z","clockOutAt":"2026-06-09T17:00:00.000Z"}'{
"employeeId": "emp_123",
"clockInAt": "2026-06-09T08:30:00.000Z",
"clockOutAt": "2026-06-09T17:00:00.000Z"
}/api/admin/attendance/sessions/{sessionId}AdminUpdate an attendance session
| Parameter | In | Req | Description |
|---|---|---|---|
| sessionId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| clockInAt | string | - | format date-time |
| clockOutAt | string | null | - | format date-time |
| timezone | string | - | - |
| note | string | null | - | - |
curl -X PATCH 'https://your-host/api/admin/attendance/sessions/{sessionId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/attendance/sessions/{sessionId}AdminDelete an attendance session
| Parameter | In | Req | Description |
|---|---|---|---|
| sessionId | path | yes | - |
| orgId | query | - | - |
curl -X DELETE 'https://your-host/api/admin/attendance/sessions/{sessionId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/attendance/importAdminBulk-import attendance rows
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| rows | array<object> | yes | - |
curl -X POST 'https://your-host/api/admin/attendance/import' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"rows":[{"employeeEmail":"jane@acme.com","clockInAt":"2026-06-09T08:30:00Z","clockOutAt":"2026-06-09T17:00:00Z"}]}'{
"rows": [
{
"employeeEmail": "jane@acme.com",
"clockInAt": "2026-06-09T08:30:00Z",
"clockOutAt": "2026-06-09T17:00:00Z"
}
]
}/api/admin/attendance/exportAdminExport company attendance (CSV)
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
| teamId | query | - | - |
| employeeId | query | - | - |
| start | query | - | YYYY-MM-DD |
| end | query | - | YYYY-MM-DD |
| exceptions | query | - | 1 = only exceptions |
| includeBreaks | query | - | 0 to exclude |
curl -X GET 'https://your-host/api/admin/attendance/export' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Admin · People
Employees, teams, and positions.
/api/admin/employeesAdminList employees
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/employees' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'{
"employees": [
{
"id": "emp_123",
"fullName": "Jane Doe",
"teamId": "team_1"
}
]
}/api/admin/employees/{employeeId}AdminUpdate an employee
| Parameter | In | Req | Description |
|---|---|---|---|
| employeeId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| fullName | string | - | min len 1 |
| string | - | format email | |
| teamId | string | null | - | - |
| positionId | string | null | - | - |
| baseSalaryCurrency | string | - | USD · EGP |
| baseSalaryAmount | number | - | ≥ 0 |
| overtimeRateUsdPerHour | number | - | ≥ 0 |
| expectedHoursPerDay | number | - | > 0 |
| expectedDaysPerWeek | integer | - | ≥ 1 · ≤ 7 |
| timezone | string | - | - |
| isActive | boolean | - | - |
curl -X PATCH 'https://your-host/api/admin/employees/{employeeId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/teamsAdminList teams
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/teams' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/teamsAdminCreate a team
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| name | string | yes | min len 1 |
curl -X POST 'https://your-host/api/admin/teams' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"name":"Engineering"}'{
"name": "Engineering"
}/api/admin/teams/{teamId}AdminRename a team
| Parameter | In | Req | Description |
|---|---|---|---|
| teamId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| name | string | - | min len 1 |
curl -X PATCH 'https://your-host/api/admin/teams/{teamId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/teams/{teamId}AdminDelete a team
| Parameter | In | Req | Description |
|---|---|---|---|
| teamId | path | yes | - |
| orgId | query | - | - |
curl -X DELETE 'https://your-host/api/admin/teams/{teamId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/positionsAdminList positions
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/positions' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/positionsAdminCreate a position
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| title | string | yes | min len 1 |
| defaultOvertimeRateUsd | number | - | ≥ 0 |
curl -X POST 'https://your-host/api/admin/positions' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"title":"Senior Engineer","defaultOvertimeRateUsd":25}'{
"title": "Senior Engineer",
"defaultOvertimeRateUsd": 25
}/api/admin/positions/{positionId}AdminUpdate a position
| Parameter | In | Req | Description |
|---|---|---|---|
| positionId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| title | string | - | min len 1 |
| defaultOvertimeRateUsd | number | null | - | ≥ 0 |
curl -X PATCH 'https://your-host/api/admin/positions/{positionId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/positions/{positionId}AdminDelete a position
| Parameter | In | Req | Description |
|---|---|---|---|
| positionId | path | yes | - |
| orgId | query | - | - |
curl -X DELETE 'https://your-host/api/admin/positions/{positionId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Admin · Shifts
Shift definitions and per-employee assignments.
/api/admin/shiftsAdminList shifts (with teams)
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/shifts' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/shiftsAdminCreate a shift
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| title | string | yes | min len 1 |
| teamId | string | null | - | - |
| type | string | - | FIXED · FLEXIBLE · ON_CALL |
| visibility | string | - | ALL · TEAM · PRIVATE |
| daysOfWeek | array<integer> | - | 0=Sun … 6=Sat. Empty = every day. |
| startTimeLocal | string | null | - | e.g. "09:00" |
| endTimeLocal | string | null | - | e.g. "17:00" |
curl -X POST 'https://your-host/api/admin/shifts' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"title":"Morning Shift","visibility":"TEAM","daysOfWeek":[1,2,3,4,5],"startTimeLocal":"09:00","endTimeLocal":"17:00"}'{
"title": "Morning Shift",
"visibility": "TEAM",
"daysOfWeek": [
1,
2,
3,
4,
5
],
"startTimeLocal": "09:00",
"endTimeLocal": "17:00"
}/api/admin/shifts/{shiftId}AdminUpdate a shift
| Parameter | In | Req | Description |
|---|---|---|---|
| shiftId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| title | string | - | min len 1 |
| teamId | string | null | - | - |
| type | string | - | FIXED · FLEXIBLE · ON_CALL |
| visibility | string | - | ALL · TEAM · PRIVATE |
| daysOfWeek | array<integer> | - | - |
| startTimeLocal | string | null | - | - |
| endTimeLocal | string | null | - | - |
curl -X PATCH 'https://your-host/api/admin/shifts/{shiftId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/shifts/{shiftId}AdminDelete a shift
| Parameter | In | Req | Description |
|---|---|---|---|
| shiftId | path | yes | - |
| orgId | query | - | - |
curl -X DELETE 'https://your-host/api/admin/shifts/{shiftId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/shifts/{shiftId}/assignmentsAdminList assigned employees
| Parameter | In | Req | Description |
|---|---|---|---|
| shiftId | path | yes | - |
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/shifts/{shiftId}/assignments' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'{
"employeeIds": [
"emp_123",
"emp_456"
]
}/api/admin/shifts/{shiftId}/assignmentsAdminAssign an employee to a shift
| Parameter | In | Req | Description |
|---|---|---|---|
| shiftId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| employeeId | string | yes | - |
curl -X POST 'https://your-host/api/admin/shifts/{shiftId}/assignments' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"employeeId":"emp_123"}'{
"employeeId": "emp_123"
}/api/admin/shifts/{shiftId}/assignmentsAdminUnassign an employee
| Parameter | In | Req | Description |
|---|---|---|---|
| shiftId | path | yes | - |
| employeeId | query | yes | Employee to unassign |
| orgId | query | - | - |
curl -X DELETE 'https://your-host/api/admin/shifts/{shiftId}/assignments' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Admin · Time Off
Leave types and request approvals.
/api/admin/timeoff/requestsAdminList time-off requests
| Parameter | In | Req | Description |
|---|---|---|---|
| status | query | - | PENDING | APPROVED | DENIED | … |
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/timeoff/requests' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/timeoff/requestsAdminApprove / deny / postpone a request
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| requestId | string | yes | - |
| action | string | yes | APPROVE · DENY · POSTPONE |
| adminNote | string | - | - |
| postponedUntil | string | - | format date |
curl -X PATCH 'https://your-host/api/admin/timeoff/requests' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"requestId":"to_1","action":"APPROVE"}'{
"requestId": "to_1",
"action": "APPROVE"
}/api/admin/timeoff/typesAdminList leave types
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/timeoff/types' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/timeoff/typesAdminCreate a leave type
| Field | Type | Req | Notes |
|---|---|---|---|
| name | string | yes | min len 1 |
| isPaid | boolean | - | - |
| requiresApproval | boolean | - | - |
| maxPerYearDays | number | - | > 0 |
curl -X POST 'https://your-host/api/admin/timeoff/types' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"name":"Vacation","isPaid":true,"requiresApproval":true}'{
"name": "Vacation",
"isPaid": true,
"requiresApproval": true
}/api/admin/timeoff/typesAdminUpdate a leave type
| Field | Type | Req | Notes |
|---|---|---|---|
| id | string | yes | - |
| name | string | - | min len 1 |
| isPaid | boolean | - | - |
| requiresApproval | boolean | - | - |
| maxPerYearDays | number | - | > 0 |
curl -X PUT 'https://your-host/api/admin/timeoff/types' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/timeoff/typesAdminDelete a leave type
| Field | Type | Req | Notes |
|---|---|---|---|
| id | string | yes | - |
curl -X DELETE 'https://your-host/api/admin/timeoff/types' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Admin · Settings
Workspace policy and finance settings.
/api/admin/settingsAdminGet workspace settings
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/settings' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/settingsAdminUpdate workspace settings
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| firstDayOfWeek | string | - | MONDAY · SUNDAY |
| defaultTimezone | string | - | - |
| allowedCurrencies | array<string> | - | - |
| allowPickOpenShifts | boolean | - | - |
| allowDropShifts | boolean | - | - |
| recordClockLocation | boolean | - | - |
| allowManualTimeEdits | boolean | - | - |
| enableFinance | boolean | - | - |
| defaultExpectedHoursPerDay | number | - | ≤ 24 · > 0 |
| overtimeGraceMinutes | integer | - | ≥ 0 · ≤ 240 |
| overtimeMultiplier | number | - | ≥ 0.25 · ≤ 5 |
| payrollRounding | string | - | NONE · NEAREST_1 · NEAREST_5 · NEAREST_10 |
curl -X PATCH 'https://your-host/api/admin/settings' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"recordClockLocation":true,"allowManualTimeEdits":false}'{
"recordClockLocation": true,
"allowManualTimeEdits": false
}/api/admin/settings/financeAdminGet finance settings
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/admin/settings/finance' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/admin/settings/financeAdminUpdate finance settings
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| baseCurrency | string | - | USD · EGP |
| fiscalYearStartMonth | integer | - | ≥ 1 · ≤ 12 |
curl -X PATCH 'https://your-host/api/admin/settings/finance' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Me
Employee self-service (profile, time off, payslips).
/api/me/profileAuthenticatedUpdate your profile
| Field | Type | Req | Notes |
|---|---|---|---|
| timezone | string | - | - |
curl -X PATCH 'https://your-host/api/me/profile' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"timezone":"Africa/Cairo"}'{
"timezone": "Africa/Cairo"
}/api/me/timeoff/requestsAuthenticatedList your time-off requests
curl -X GET 'https://your-host/api/me/timeoff/requests' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/me/timeoff/requestsAuthenticatedRequest time off
| Field | Type | Req | Notes |
|---|---|---|---|
| typeId | string | yes | - |
| startDate | string | yes | format date |
| endDate | string | yes | format date |
| durationHours | number | - | > 0 |
| reason | string | - | max len 500 |
curl -X POST 'https://your-host/api/me/timeoff/requests' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"typeId":"tot_1","startDate":"2026-07-01","endDate":"2026-07-05","reason":"Family trip"}'{
"typeId": "tot_1",
"startDate": "2026-07-01",
"endDate": "2026-07-05",
"reason": "Family trip"
}/api/me/timeoff/requests/{requestId}AuthenticatedCancel a pending request
| Parameter | In | Req | Description |
|---|---|---|---|
| requestId | path | yes | - |
curl -X DELETE 'https://your-host/api/me/timeoff/requests/{requestId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/me/timeoff/typesAuthenticatedList leave types available to you
curl -X GET 'https://your-host/api/me/timeoff/types' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/me/payslips/{payslipId}/exportAuthenticatedDownload your payslip (PDF)
| Parameter | In | Req | Description |
|---|---|---|---|
| payslipId | path | yes | - |
curl -X GET 'https://your-host/api/me/payslips/{payslipId}/export' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Payroll
Payroll runs, line items, and posting to the ledger.
/api/payroll/runsAdminList payroll runs
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/payroll/runs' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/payroll/runsAdminCreate a payroll run
| Field | Type | Req | Notes |
|---|---|---|---|
| periodStart | string | yes | format date |
| periodEnd | string | yes | format date |
| defaultUsdToEgpRate | number | yes | > 0 |
curl -X POST 'https://your-host/api/payroll/runs' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"periodStart":"2026-06-01","periodEnd":"2026-06-30","defaultUsdToEgpRate":48.5}'{
"periodStart": "2026-06-01",
"periodEnd": "2026-06-30",
"defaultUsdToEgpRate": 48.5
}/api/payroll/runs/{runId}AdminGet a payroll run
| Parameter | In | Req | Description |
|---|---|---|---|
| runId | path | yes | - |
| orgId | query | - | - |
curl -X GET 'https://your-host/api/payroll/runs/{runId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/payroll/runs/{runId}AdminRecalculate a payroll run
| Parameter | In | Req | Description |
|---|---|---|---|
| runId | path | yes | - |
curl -X POST 'https://your-host/api/payroll/runs/{runId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/payroll/runs/{runId}/line-itemsAdminOverride a run line item
| Parameter | In | Req | Description |
|---|---|---|---|
| runId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| employeeId | string | yes | - |
| usdToEgpRateUsed | number | - | > 0 |
| overtimeRateUsdPerHour | number | - | ≥ 0 |
| baseSalaryAmount | number | - | ≥ 0 |
curl -X PUT 'https://your-host/api/payroll/runs/{runId}/line-items' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/payroll/runs/{runId}/post-to-ledgerAdminPost a payroll run to the ledger
Emits balanced double-entry journal entries tagged with the payroll source.
| Parameter | In | Req | Description |
|---|---|---|---|
| runId | path | yes | - |
curl -X POST 'https://your-host/api/payroll/runs/{runId}/post-to-ledger' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Payslips
Payslip records and PDF export.
/api/payslips/{payslipId}AdminGet a payslip
| Parameter | In | Req | Description |
|---|---|---|---|
| payslipId | path | yes | - |
curl -X GET 'https://your-host/api/payslips/{payslipId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/payslips/{payslipId}/exportAdminDownload a payslip (PDF)
| Parameter | In | Req | Description |
|---|---|---|---|
| payslipId | path | yes | - |
curl -X GET 'https://your-host/api/payslips/{payslipId}/export' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Finance
Double-entry ledger: accounts, journals, periods, expenses, recurring items, banking.
/api/finance/accountsAdminList chart of accounts
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/finance/accounts' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/accountsAdminCreate an account
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| code | string | yes | min len 1 · max len 32 |
| name | string | yes | min len 1 · max len 200 |
| type | string | yes | ASSET · LIABILITY · EQUITY · INCOME · EXPENSE |
| parentAccountId | string | - | - |
curl -X POST 'https://your-host/api/finance/accounts' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"code":"6000","name":"Office Supplies","type":"EXPENSE"}'{
"code": "6000",
"name": "Office Supplies",
"type": "EXPENSE"
}/api/finance/journalsAdminList journal entries
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/finance/journals' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/journalsAdminCreate a journal entry (draft)
Lines must balance (Σ debit = Σ credit). At least two lines.
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| entryDate | string | yes | format date |
| memo | string | - | max len 2000 |
| lines | array<object> | yes | - |
curl -X POST 'https://your-host/api/finance/journals' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"entryDate":"2026-06-09","memo":"Office supplies","lines":[{"accountId":"acc_exp","debit":100},{"accountId":"acc_cash","credit":100}]}'{
"entryDate": "2026-06-09",
"memo": "Office supplies",
"lines": [
{
"accountId": "acc_exp",
"debit": 100
},
{
"accountId": "acc_cash",
"credit": 100
}
]
}/api/finance/journals/{journalEntryId}/postAdminPost a draft journal entry
| Parameter | In | Req | Description |
|---|---|---|---|
| journalEntryId | path | yes | - |
curl -X POST 'https://your-host/api/finance/journals/{journalEntryId}/post' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/journals/{journalEntryId}/reverseAdminReverse a posted journal entry
| Parameter | In | Req | Description |
|---|---|---|---|
| journalEntryId | path | yes | - |
curl -X POST 'https://your-host/api/finance/journals/{journalEntryId}/reverse' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/periodsAdminList finance periods
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/finance/periods' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/periodsAdminOpen a finance period
| Field | Type | Req | Notes |
|---|---|---|---|
| year | integer | yes | ≥ 2000 · ≤ 2100 |
| month | integer | yes | ≥ 1 · ≤ 12 |
curl -X POST 'https://your-host/api/finance/periods' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"year":2026,"month":6}'{
"year": 2026,
"month": 6
}/api/finance/periodsAdminClose / delete a period
| Field | Type | Req | Notes |
|---|---|---|---|
| year | integer | yes | - |
| month | integer | yes | - |
curl -X DELETE 'https://your-host/api/finance/periods' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/expenseAdminRecord an expense
Convenience endpoint that books a balanced expense entry.
| Field | Type | Req | Notes |
|---|---|---|---|
| entryDate | string | yes | format date |
| amount | number | yes | > 0 |
| expenseAccountId | string | yes | - |
| paymentAccountId | string | yes | - |
| memo | string | - | max len 2000 |
curl -X POST 'https://your-host/api/finance/expense' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"entryDate":"2026-06-09","amount":250,"expenseAccountId":"acc_exp","paymentAccountId":"acc_bank"}'{
"entryDate": "2026-06-09",
"amount": 250,
"expenseAccountId": "acc_exp",
"paymentAccountId": "acc_bank"
}/api/finance/recurringAdminList recurring items
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/finance/recurring' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/recurringAdminCreate a recurring item
| Field | Type | Req | Notes |
|---|---|---|---|
| name | string | yes | min len 1 · max len 120 |
| kind | string | yes | INCOME · EXPENSE |
| amount | number | yes | > 0 |
| cadence | string | yes | MONTHLY · YEARLY |
| accountId | string | yes | - |
| counterAccountId | string | yes | - |
| nextRunOn | string | yes | format date |
curl -X POST 'https://your-host/api/finance/recurring' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"name":"Office rent","kind":"EXPENSE","amount":1200,"cadence":"MONTHLY","accountId":"acc_rent","counterAccountId":"acc_bank","nextRunOn":"2026-07-01"}'{
"name": "Office rent",
"kind": "EXPENSE",
"amount": 1200,
"cadence": "MONTHLY",
"accountId": "acc_rent",
"counterAccountId": "acc_bank",
"nextRunOn": "2026-07-01"
}/api/finance/recurring/{itemId}AdminUpdate a recurring item
| Parameter | In | Req | Description |
|---|---|---|---|
| itemId | path | yes | - |
curl -X PATCH 'https://your-host/api/finance/recurring/{itemId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/recurring/{itemId}AdminDelete a recurring item
| Parameter | In | Req | Description |
|---|---|---|---|
| itemId | path | yes | - |
curl -X DELETE 'https://your-host/api/finance/recurring/{itemId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/recurring/{itemId}/bookAdminBook a recurring item now
| Parameter | In | Req | Description |
|---|---|---|---|
| itemId | path | yes | - |
curl -X POST 'https://your-host/api/finance/recurring/{itemId}/book' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/bank-accountsAdminList bank accounts
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/finance/bank-accounts' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/bank-accountsAdminCreate a bank account
| Field | Type | Req | Notes |
|---|---|---|---|
| name | string | yes | min len 1 · max len 120 |
| institution | string | - | max len 120 |
| currency | string | - | USD · EGP |
curl -X POST 'https://your-host/api/finance/bank-accounts' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"name":"Operating - CIB","currency":"EGP"}'{
"name": "Operating - CIB",
"currency": "EGP"
}/api/finance/bank-accounts/{bankAccountId}/importAdminImport bank transactions
| Parameter | In | Req | Description |
|---|---|---|---|
| bankAccountId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| source | string | - | max len 120 |
| rows | array<object> | yes | - |
curl -X POST 'https://your-host/api/finance/bank-accounts/{bankAccountId}/import' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/bank-transactions/{transactionId}AdminMatch / unmatch / ignore a transaction
| Parameter | In | Req | Description |
|---|---|---|---|
| transactionId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| action | string | yes | MATCH · UNMATCH · IGNORE |
| journalEntryId | string | - | - |
curl -X PATCH 'https://your-host/api/finance/bank-transactions/{transactionId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"action":"MATCH","journalEntryId":"je_1"}'{
"action": "MATCH",
"journalEntryId": "je_1"
}/api/finance/reports/exportAdminExport a finance report (CSV)
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/finance/reports/export' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/finance/seedAdminSeed a default chart of accounts
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X POST 'https://your-host/api/finance/seed' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Contracts
Contract templates, generation, and e-signature.
/api/contracts/templatesAdminList contract templates
curl -X GET 'https://your-host/api/contracts/templates' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/templatesAdminCreate a template
| Field | Type | Req | Notes |
|---|---|---|---|
| title | string | yes | min len 1 |
| language | string | - | EN · AR · BOTH |
| direction | string | - | LTR · RTL |
| contentHtml | string | yes | min len 1 |
| fieldsSchema | object | - | - |
curl -X POST 'https://your-host/api/contracts/templates' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/templates/{templateId}AdminGet a template
| Parameter | In | Req | Description |
|---|---|---|---|
| templateId | path | yes | - |
curl -X GET 'https://your-host/api/contracts/templates/{templateId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/templates/{templateId}AdminUpdate a template
| Parameter | In | Req | Description |
|---|---|---|---|
| templateId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| title | string | - | - |
| language | string | - | EN · AR · BOTH |
| direction | string | - | LTR · RTL |
| contentHtml | string | - | - |
| fieldsSchema | object | - | - |
| overlaySchema | object | - | - |
curl -X PUT 'https://your-host/api/contracts/templates/{templateId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/templates/{templateId}AdminDelete a template
| Parameter | In | Req | Description |
|---|---|---|---|
| templateId | path | yes | - |
curl -X DELETE 'https://your-host/api/contracts/templates/{templateId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/templates/{templateId}/uploadAdminUpload a DOCX template
multipart/form-data DOCX, converted to HTML via mammoth.
| Parameter | In | Req | Description |
|---|---|---|---|
| templateId | path | yes | - |
curl -X POST 'https://your-host/api/contracts/templates/{templateId}/upload' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/createAdminGenerate a contract from a template
| Field | Type | Req | Notes |
|---|---|---|---|
| templateId | string | yes | - |
| employeeId | string | yes | - |
| allowEmployeeEdits | boolean | - | - |
curl -X POST 'https://your-host/api/contracts/create' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"templateId":"tpl_1","employeeId":"emp_123"}'{
"templateId": "tpl_1",
"employeeId": "emp_123"
}/api/contracts/{contractId}AuthenticatedGet a contract
| Parameter | In | Req | Description |
|---|---|---|---|
| contractId | path | yes | - |
curl -X GET 'https://your-host/api/contracts/{contractId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/{contractId}AuthenticatedUpdate field values
| Parameter | In | Req | Description |
|---|---|---|---|
| contractId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| fieldValues | object | yes | - |
curl -X PUT 'https://your-host/api/contracts/{contractId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/contracts/{contractId}AuthenticatedChange contract status
| Parameter | In | Req | Description |
|---|---|---|---|
| contractId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| status | string | yes | SENT · VOID |
curl -X PATCH 'https://your-host/api/contracts/{contractId}' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"status":"SENT"}'{
"status": "SENT"
}/api/contracts/{contractId}/signAuthenticatedSign a contract
| Parameter | In | Req | Description |
|---|---|---|---|
| contractId | path | yes | - |
| Field | Type | Req | Notes |
|---|---|---|---|
| signatureType | string | yes | DRAWN · TYPED · UPLOADED |
| typedName | string | - | - |
| signatureImageDataUrl | string | - | - |
| consent | boolean | - | - |
curl -X POST 'https://your-host/api/contracts/{contractId}/sign' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"signatureType":"TYPED","typedName":"Jane Doe","consent":true}'{
"signatureType": "TYPED",
"typedName": "Jane Doe",
"consent": true
}/api/contracts/{contractId}/exportAuthenticatedDownload a contract (PDF)
| Parameter | In | Req | Description |
|---|---|---|---|
| contractId | path | yes | - |
curl -X GET 'https://your-host/api/contracts/{contractId}/export' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Notifications
In-app notification inbox.
/api/notificationsAuthenticatedList your notifications
curl -X GET 'https://your-host/api/notifications' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/notificationsAuthenticatedMark read / archive / delete
| Field | Type | Req | Notes |
|---|---|---|---|
| action | string | yes | MARK_ALL_READ · MARK_READ · ARCHIVE · DELETE |
| ids | array<string> | - | - |
curl -X PATCH 'https://your-host/api/notifications' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"action":"MARK_READ","ids":["ntf_1"]}'{
"action": "MARK_READ",
"ids": [
"ntf_1"
]
}Status
User presence (online/offline).
/api/statusAuthenticatedGet your presence
curl -X GET 'https://your-host/api/status' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'{
"status": "ONLINE"
}/api/statusAuthenticatedSet your presence
| Field | Type | Req | Notes |
|---|---|---|---|
| status | string | yes | ONLINE · OFFLINE |
curl -X PUT 'https://your-host/api/status' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"status":"ONLINE"}'{
"status": "ONLINE"
}Billing
Stripe-ready billing (dark until keys exist).
/api/billing/checkoutAdminStart a checkout session
Stripe-ready; returns a checkout URL once billing is enabled (otherwise dark).
curl -X POST 'https://your-host/api/billing/checkout' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/billing/webhookPublicStripe webhook
Verified by Stripe signature header (no session).
curl -X POST 'https://your-host/api/billing/webhook'Integrations
Third-party connectors and inbound webhooks.
/api/integrations/providersSuper AdminList integration providers
curl -X GET 'https://your-host/api/integrations/providers' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/integrations/providersSuper AdminRegister a provider
| Field | Type | Req | Notes |
|---|---|---|---|
| key | string | yes | min len 2 · max len 64 |
| name | string | yes | min len 2 · max len 200 |
| category | string | - | max len 64 |
| capabilities | object | - | - |
curl -X POST 'https://your-host/api/integrations/providers' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"key":"slack","name":"Slack"}'{
"key": "slack",
"name": "Slack"
}/api/integrations/webhook-endpointsAdminList webhook endpoints
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/integrations/webhook-endpoints' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/integrations/webhook-endpointsAdminCreate a webhook endpoint
| Field | Type | Req | Notes |
|---|---|---|---|
| orgId | string | - | Super-admin only: act within this workspace. |
| providerKey | string | yes | min len 2 · max len 64 |
| signingSecret | string | yes | min len 8 · max len 500 |
curl -X POST 'https://your-host/api/integrations/webhook-endpoints' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/integrations/webhooks/{providerKey}PublicInbound provider webhook
Verified by the provider's signing secret (no session).
| Parameter | In | Req | Description |
|---|---|---|---|
| providerKey | path | yes | - |
curl -X POST 'https://your-host/api/integrations/webhooks/{providerKey}'Super Admin
Platform operations: workspaces, users, audit.
/api/super/orgsSuper AdminList workspaces
curl -X GET 'https://your-host/api/super/orgs' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/super/orgsSuper AdminCreate a workspace
| Field | Type | Req | Notes |
|---|---|---|---|
| name | string | - | min len 1 |
curl -X POST 'https://your-host/api/super/orgs' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"name":"Acme Inc."}'{
"name": "Acme Inc."
}/api/super/orgsSuper AdminUpdate a workspace
| Field | Type | Req | Notes |
|---|---|---|---|
| id | string | - | - |
| name | string | - | - |
curl -X PUT 'https://your-host/api/super/orgs' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/super/orgsSuper AdminDelete a workspace
| Field | Type | Req | Notes |
|---|---|---|---|
| id | string | yes | - |
curl -X DELETE 'https://your-host/api/super/orgs' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/super/usersSuper AdminList users across workspaces
| Parameter | In | Req | Description |
|---|---|---|---|
| orgId | query | - | - |
curl -X GET 'https://your-host/api/super/users' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/super/usersSuper AdminCreate a user
| Field | Type | Req | Notes |
|---|---|---|---|
| string | yes | format email | |
| name | string | - | - |
| role | string | yes | SUPER_ADMIN · ADMIN · EMPLOYEE |
| organizationId | string | yes | - |
| tempPassword | string | yes | min len 8 |
curl -X POST 'https://your-host/api/super/users' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE' \
-H 'Content-Type: application/json' \
-d '{"email":"new@acme.com","role":"ADMIN","organizationId":"org_1","tempPassword":"temp-pass-123"}'{
"email": "new@acme.com",
"role": "ADMIN",
"organizationId": "org_1",
"tempPassword": "temp-pass-123"
}/api/super/usersSuper AdminUpdate a user
| Field | Type | Req | Notes |
|---|---|---|---|
| userId | string | yes | - |
| role | string | - | SUPER_ADMIN · ADMIN · EMPLOYEE |
| organizationId | string | - | - |
| name | string | - | - |
| tempPassword | string | - | min len 8 |
| attendance | boolean | - | - |
| payroll | boolean | - | - |
| contracts | boolean | - | - |
| notifications | boolean | - | - |
| timeOff | boolean | - | - |
curl -X PATCH 'https://your-host/api/super/users' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'/api/super/auditSuper AdminQuery the audit log
| Parameter | In | Req | Description |
|---|---|---|---|
| actorEmail | query | - | - |
| targetEmail | query | - | - |
| action | query | - | - |
| take | query | - | Max rows |
curl -X GET 'https://your-host/api/super/audit' \
-b 'next-auth.session-token=YOUR_SESSION_COOKIE'Support
Support tickets.
/api/support/ticketsPublicSubmit a support ticket
| Field | Type | Req | Notes |
|---|---|---|---|
| subject | string | yes | min len 4 · max len 200 |
| bodyMarkdown | string | yes | min len 10 · max len 10000 |
| category | string | - | max len 64 |
| priority | string | - | max len 16 |
curl -X POST 'https://your-host/api/support/tickets' \
-H 'Content-Type: application/json' \
-d '{"subject":"Cannot clock in","bodyMarkdown":"The clock-in button is greyed out on iOS."}'{
"subject": "Cannot clock in",
"bodyMarkdown": "The clock-in button is greyed out on iOS."
}Help
Public knowledge-base search.
/api/help/quickPublicQuick help suggestions
| Parameter | In | Req | Description |
|---|---|---|---|
| q | query | - | Search query |
curl -X GET 'https://your-host/api/help/quick'/api/help/searchPublicSearch the knowledge base
| Parameter | In | Req | Description |
|---|---|---|---|
| q | query | yes | Search query |
curl -X GET 'https://your-host/api/help/search'