Appearance
API Calls
Base: https://api.g3nretailstack.com/ofm
Source of truth: /internal-docs/ofm-openapi.yaml → /ofm/openapi.yaml
Notes: samples are schema-derived placeholders. Replace placeholder values (ORGCODE, SESSION_GUID, etc.) with real values.
Inventory
| Method | Path | Summary | Request schema | Response schema |
|---|---|---|---|---|
| POST | /cost-centre/create | Create Cost Centre | None | Envelope |
| POST | /cost-centre/get | Get Cost Centre | None | Envelope |
| POST | /cost-centre/list | List Cost Centre | None | Envelope |
| POST | /cost-centre/status/set | Set Cost Centre Status | None | Envelope |
| POST | /cost-centre/update | Update Cost Centre | None | Envelope |
| POST | /facility/legal/create | Create Facility Legal | None | Envelope |
| POST | /facility/legal/get | Get Facility Legal | None | Envelope |
| POST | /facility/legal/list | List Facility Legal | None | Envelope |
| POST | /facility/legal/status | Status Facility Legal | None | Envelope |
| POST | /facility/legal/update | Update Facility Legal | None | Envelope |
| POST | /facility/logical/create | Create Facility Logical | None | Envelope |
| POST | /facility/logical/get | Get Facility Logical | None | Envelope |
| POST | /facility/logical/list | List Facility Logical | None | Envelope |
| POST | /facility/logical/status | Status Facility Logical | None | Envelope |
| POST | /facility/logical/update | Update Facility Logical | None | Envelope |
| POST | /facility/physical/create | Create Facility Physical | None | Envelope |
| POST | /facility/physical/get | Get Facility Physical | None | Envelope |
| POST | /facility/physical/list | List Facility Physical | None | Envelope |
| POST | /facility/physical/status | Status Facility Physical | None | Envelope |
| POST | /facility/physical/update | Update Facility Physical | None | Envelope |
| POST | /member/add | Direct Add Member (owner-only) | None | Envelope |
| POST | /member/assign-logical | Call Member Assign Logical | None | Envelope |
| POST | /member/assignments | Call Member Assignments | None | Envelope |
| POST | /member/detach-logical | Call Member Detach Logical | None | Envelope |
| POST | /member/invite/accept | Call Member Invite Accept | None | Envelope |
| POST | /member/invite/create | Create Member Invite | None | Envelope |
| POST | /member/invite/list | List Member Invite | None | Envelope |
| POST | /member/invite/revoke | Revoke Member Invite | None | Envelope |
| POST | /member/list | List Member | None | Envelope |
| POST | /member/names | Batch-resolve member display names | None | Envelope |
| POST | /member/resolve | Resolve Member | None | Envelope |
| POST | /member/state/set | Set Member State | None | Envelope |
| POST | /org/create | Create Org | None | Envelope |
| POST | /org/get | Get Org | None | Envelope |
| POST | /org/list | List Org | None | Envelope |
| POST | /org/status/set | Set Org Status | None | Envelope |
| POST | /org/update | Update Org | None | Envelope |
| POST | /override-code/generate | Generate Override Code | None | OkResponse |
| POST | /override-code/list | List Override Codes | None | OkResponse |
| POST | /override-code/revoke | Revoke Override Code | None | OkResponse |
| POST | /override-code/validate | Validate Override Code | None | OkResponse |
| POST | /owner/list | List Owner | None | Envelope |
| POST | /owner/primary/set | Set Owner Primary | None | Envelope |
| POST | /owner/secondary/add | Call Owner Secondary Add | None | Envelope |
| POST | /owner/secondary/remove | Call Owner Secondary Remove | None | Envelope |
| POST | /owner/state/set | Set Owner State | None | Envelope |
| POST | /profile/assign | Assign Profile | None | OkResponse |
| POST | /profile/create | Create POS Operator Profile | None | OkResponse |
| POST | /profile/get | Get POS Operator Profile | None | OkResponse |
| POST | /profile/list | List POS Operator Profiles | None | OkResponse |
| POST | /profile/resolve | Resolve Effective Profile | None | OkResponse |
| POST | /profile/status | Set Profile Status | None | OkResponse |
| POST | /profile/unassign | Unassign Profile | None | OkResponse |
| POST | /profile/update | Update POS Operator Profile | None | OkResponse |
| POST | /resolve/cost-centre | Call Resolve Cost Centre | None | Envelope |
| POST | /resolve/facility | Call Resolve Facility | None | Envelope |
| POST | /resolve/orgcode | Call Resolve Orgcode | None | Envelope |
| POST | /resolve/zone | Call Resolve Zone | None | Envelope |
| POST | /sales-channel/config/complete | Call Sales Channel Config Complete | None | Envelope |
| POST | /sales-channel/config/presign | Call Sales Channel Config Presign | None | Envelope |
| POST | /sales-channel/create | Create Sales Channel | None | Envelope |
| POST | /sales-channel/get | Get Sales Channel | None | Envelope |
| POST | /sales-channel/inventory-sources/get | Get Sales Channel Inventory Sources | None | Envelope |
| POST | /sales-channel/inventory-sources/set | Set Sales Channel Inventory Sources | None | Envelope |
| POST | /sales-channel/list | List Sales Channel | None | Envelope |
| POST | /sales-channel/resolve | Resolve Sales Channel | None | Envelope |
| POST | /sales-channel/status | Status Sales Channel | None | Envelope |
| POST | /sales-channel/update | Update Sales Channel | None | Envelope |
| POST | /service-account/assign-logical | Call Service Account Assign Logical | None | Envelope |
| POST | /service-account/assignments | Call Service Account Assignments | None | Envelope |
| POST | /service-account/detach-logical | Call Service Account Detach Logical | None | Envelope |
| POST | /shift/create | Create Shift | None | Envelope |
| POST | /shift/get | Get Shift | None | Envelope |
| POST | /shift/list | List Shifts | None | Envelope |
| POST | /shift/status | Set Shift Status | None | Envelope |
| POST | /shift/update | Update Shift | None | Envelope |
| GET | /stat | Health check (session required) | None | Envelope |
| POST | /station/create | Create Station | None | Envelope |
| POST | /station/get | Get Station | None | Envelope |
| POST | /station/list | List Stations | None | Envelope |
| POST | /station/status | Set Station Status | None | Envelope |
| POST | /station/update | Update Station | None | Envelope |
| POST | /team/by-member | Call Team By Member | None | Envelope |
| POST | /team/create | Create Team | None | Envelope |
| POST | /team/get | Get Team | None | Envelope |
| POST | /team/list | List Team | None | Envelope |
| POST | /team/member/add | Call Team Member Add | None | Envelope |
| POST | /team/member/remove | Call Team Member Remove | None | Envelope |
| POST | /team/members | Call Team Members | None | Envelope |
| POST | /team/status | Status Team | None | Envelope |
| POST | /team/update | Update Team | None | Envelope |
| POST | /timesheet/clock-in | Clock In | None | Envelope |
| POST | /timesheet/clock-out | Clock Out | None | Envelope |
| POST | /timesheet/get | Get Timesheet Entry | None | Envelope |
| POST | /timesheet/list | List Timesheet Entries | None | Envelope |
| POST | /timesheet/void | Void Timesheet Entry | None | Envelope |
| POST | /zone/create | Create Zone | None | Envelope |
| POST | /zone/get | Get Zone | None | Envelope |
| POST | /zone/list | List Zone | None | Envelope |
| POST | /zone/status | Status Zone | None | Envelope |
Call details
POST /cost-centre/create
Purpose: Create Cost Centre
Notes: Create Cost Centre. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"cc_guid": "string",
"cccode": "ABCD-1234-EFGH",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /cost-centre/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /cost-centre/get
Purpose: Get Cost Centre
Notes: Get Cost Centre. Auth is via headers; org identity lives in the JSON body (org_guid + cc_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"cc_guid": "string",
"cccode": "ABCD-1234-EFGH",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /cost-centre/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /cost-centre/list
Purpose: List Cost Centre
Notes: List Cost Centre. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"cost_centres": [
{
"cc_guid": "string",
"cccode": "ABCD-1234-EFGH",
"caption": "Example caption"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /cost-centre/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /cost-centre/status/set
Purpose: Set Cost Centre Status
Notes: Set Cost Centre Status. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"cc_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /cost-centre/status/set",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /cost-centre/update
Purpose: Update Cost Centre
Notes: Update Cost Centre. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"cc_guid": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /cost-centre/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/legal/create
Purpose: Create Facility Legal
Notes: Create Facility Legal. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"legal_guid": "string",
"code": "CODE1",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/legal/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/legal/get
Purpose: Get Facility Legal
Notes: Get Facility Legal. Auth is via headers; org identity lives in the JSON body (org_guid + legal_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"code": "CODE1",
"caption": "Example caption",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/legal/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/legal/list
Purpose: List Facility Legal
Notes: List Facility Legal. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"facilities": [
{
"code": "CODE1",
"caption": "Example caption",
"status": "active"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/legal/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/legal/status
Purpose: Status Facility Legal
Notes: Status Facility Legal. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"legal_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/legal/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/legal/update
Purpose: Update Facility Legal
Notes: Update Facility Legal. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"legal_guid": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/legal/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/logical/create
Purpose: Create Facility Logical
Notes: Create Facility Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"logical_guid": "LOGICAL_GUID",
"code": "CODE1",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/logical/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/logical/get
Purpose: Get Facility Logical
Notes: Get Facility Logical. Auth is via headers; org identity lives in the JSON body (org_guid + logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"code": "CODE1",
"caption": "Example caption",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/logical/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/logical/list
Purpose: List Facility Logical
Notes: List Facility Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"facilities": [
{
"code": "CODE1",
"caption": "Example caption",
"status": "active"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/logical/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/logical/status
Purpose: Status Facility Logical
Notes: Status Facility Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/logical/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/logical/update
Purpose: Update Facility Logical
Notes: Update Facility Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/logical/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/physical/create
Purpose: Create Facility Physical
Notes: Create Facility Physical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"pf_guid": "33333333-3333-3333-3333-333333333333",
"code": "PH_MAIN",
"status": "active",
"revision": "44444444-4444-4444-4444-444444444444"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/physical/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/physical/get
Purpose: Get Facility Physical
Notes: Get Facility Physical. Auth is via headers; org identity lives in the JSON body (org_guid + pf_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"code": "CODE1",
"caption": "Example caption",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/physical/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/physical/list
Purpose: List Facility Physical
Notes: List Facility Physical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"facilities": [
{
"code": "CODE1",
"caption": "Example caption",
"status": "active"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/physical/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/physical/status
Purpose: Status Facility Physical
Notes: Status Facility Physical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"pf_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/physical/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /facility/physical/update
Purpose: Update Facility Physical
Notes: Update Facility Physical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"pf_guid": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /facility/physical/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/add
Purpose: Direct Add Member (owner-only)
Notes: Direct Add Member (owner-only). Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Route class Tier C (p95 150ms, p99 400ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/add",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/assign-logical
Purpose: Call Member Assign Logical
Notes: Call Member Assign Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"logical_guid": "LOGICAL_GUID",
"state": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/assign-logical",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/assignments
Purpose: Call Member Assignments
Notes: Call Member Assignments. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignments": [
{
"user_guid": "USER_GUID",
"logical_guid": "LOGICAL_GUID",
"state": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/assignments",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/detach-logical
Purpose: Call Member Detach Logical
Notes: Call Member Detach Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"logical_guid": "LOGICAL_GUID",
"detached": false
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/detach-logical",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/invite/accept
Purpose: Call Member Invite Accept
Notes: Call Member Invite Accept. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"state": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/invite/accept",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/invite/create
Purpose: Create Member Invite
Notes: Create Member Invite. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"invite_guid": "string",
"code": "CODE1",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/invite/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/invite/list
Purpose: List Member Invite
Notes: List Member Invite. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"invites": [
{
"org_guid": "ORG_GUID",
"invite_guid": "string",
"code": "CODE1"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/invite/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/invite/revoke
Purpose: Revoke Member Invite
Notes: Revoke Member Invite. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"invite_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/invite/revoke",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/list
Purpose: List Member
Notes: List Member. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"members": [
{
"user_guid": "USER_GUID",
"state": "string",
"role_profile_id": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/names
Purpose: Batch-resolve member display names
Notes: Returns user_guid → display_name for all members and owners in the org. Any authenticated org member can call this (not owner-only). Lightweight DDB projection. Route class Tier B (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{ "org_guid": "ORG_GUID" }Sample response (shape-only)
json
{
"success": true,
"data": {
"names": [
{ "user_guid": "USER_GUID_1", "display_name": "Jane Smith" },
{ "user_guid": "USER_GUID_2", "display_name": "Bob Jones" }
]
},
"stats": {
"call": "POST /member/names",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/resolve
Purpose: Resolve Member
Notes: Resolve Member. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier C (p95 150ms, p99 400ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"is_owner": false,
"roles": [
"string"
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/resolve",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /member/state/set
Purpose: Set Member State
Notes: Set Member State. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"state": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /member/state/set",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /org/create
Purpose: Create Org
Notes: Create Org. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "00000000-0000-0000-0000-000000000000",
"orgcode": "ACME",
"status": "unverified",
"invitation": {
"code": "INV123456"
},
"owners": {
"create_owner_user_guid": "11111111-1111-1111-1111-111111111111",
"primary_owner_user_guid": "11111111-1111-1111-1111-111111111111"
},
"cost_centre": {
"cc_guid": "22222222-2222-2222-2222-222222222222",
"cccode": "ABCD-EFGH-IJKL"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /org/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /org/get
Purpose: Get Org
Notes: Get Org. Auth is via headers; org identity lives in the JSON body (org_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"orgcode": "ACME",
"status": "verified",
"caption": "Acme Inc",
"timezone": "America/Los_Angeles",
"fiscal_calendar": {
"code": "retail-454",
"start_month": 2,
"start_day": 1,
"week_start": "sun"
},
"cost_centre_guid": "22222222-2222-2222-2222-222222222222",
"cost_centre": {
"cc_guid": "22222222-2222-2222-2222-222222222222",
"cccode": "ABCD-EFGH-IJKL",
"caption": "Master cost centre",
"status": "active"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /org/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /org/list
Purpose: List Org
Notes: List Org. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"orgs": [
{
"orgcode": "ORGCODE",
"status": "unverified",
"caption": "Example caption"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /org/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /org/status/set
Purpose: Set Org Status
Notes: Set Org Status. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"status": "unverified",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /org/status/set",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /org/update
Purpose: Update Org
Notes: Update Org. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /org/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /override-code/generate
Purpose: Generate Override Code
Notes: Generate 6-digit crypto-random code. Issuer profile validated — cannot exceed own limits.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /override-code/generate",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /override-code/list
Purpose: List Override Codes
Notes: Paginated list with optional status and facility filters.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /override-code/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /override-code/revoke
Purpose: Revoke Override Code
Notes: Immediately invalidate an active override code.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /override-code/revoke",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /override-code/validate
Purpose: Validate Override Code
Notes: 7-step validation (exists, active, facility match, type match, limit check, usage check, expiry).
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /override-code/validate",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /owner/list
Purpose: List Owner
Notes: List Owner. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"owners": [
{
"user_guid": "USER_GUID",
"create_owner": false,
"primary_owner": false
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /owner/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /owner/primary/set
Purpose: Set Owner Primary
Notes: Set Owner Primary. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"primary_owner": false,
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /owner/primary/set",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /owner/secondary/add
Purpose: Call Owner Secondary Add
Notes: Call Owner Secondary Add. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"secondary_owner": false,
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /owner/secondary/add",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /owner/secondary/remove
Purpose: Call Owner Secondary Remove
Notes: Call Owner Secondary Remove. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"secondary_owner": false,
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /owner/secondary/remove",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /owner/state/set
Purpose: Set Owner State
Notes: Set Owner State. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"user_guid": "USER_GUID",
"state": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /owner/state/set",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/assign
Purpose: Assign Profile
Notes: Assign profile to member+facility, facility default, or org default. 3-level cascade.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/assign",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/create
Purpose: Create POS Operator Profile
Notes: Create a named profile with 30+ cashier controls (discount limits, tender restrictions, department gating, transaction controls, cash management). Requires owner.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/get
Purpose: Get POS Operator Profile
Notes: Fetch profile by ID.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/list
Purpose: List POS Operator Profiles
Notes: Paginated list by status (active/inactive/doomed).
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/resolve
Purpose: Resolve Effective Profile
Notes: 3-level cascade (member→facility→org) to resolve effective profile for a member at a facility.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/resolve",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/status
Purpose: Set Profile Status
Notes: Activate, deactivate, or doom a profile. FSM enforced.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/unassign
Purpose: Unassign Profile
Notes: Remove member or facility assignment. Org default cannot be unassigned.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/unassign",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /profile/update
Purpose: Update POS Operator Profile
Notes: Partial merge of profile controls. Requires expected_revision.
Request schema: None Response schema: OkResponse
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /profile/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /resolve/cost-centre
Purpose: Call Resolve Cost Centre
Notes: Call Resolve Cost Centre. Owner-only. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"cc_guid": "string",
"cccode": "ABCD-1234-EFGH"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /resolve/cost-centre",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /resolve/facility
Purpose: Call Resolve Facility
Notes: Call Resolve Facility. Owner-only. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"guid": "string",
"org_guid": "ORG_GUID",
"code": "CODE1",
"kind": "physical"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /resolve/facility",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /resolve/orgcode
Purpose: Call Resolve Orgcode
Notes: Call Resolve Orgcode. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /resolve/orgcode",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /resolve/zone
Purpose: Call Resolve Zone
Notes: Call Resolve Zone. Requires facility grant for the logical (or owner). Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID",
"zone_guid": "string",
"code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /resolve/zone",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/config/complete
Purpose: Call Sales Channel Config Complete
Notes: Call Sales Channel Config Complete. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "00000000-0000-0000-0000-000000000000",
"channel_guid": "77777777-7777-7777-7777-777777777777",
"config": {
"config_s3_bucket": "ofm-sales-channel-config",
"config_s3_key": "sales-channel-config/orgcode=ACME/channel_guid=77777777-7777-7777-7777-777777777777/config/1700000000000-aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.json",
"config_s3_version_id": "3HL4kqtJlcpXrof3y7Yv9ZVY0fFeiF6o",
"config_etag": "9e107d9d372bb6826bd81d3542a419d6",
"config_size_bytes": 1234
},
"revision": "99999999-9999-9999-9999-999999999999"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/config/complete",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/config/presign
Purpose: Call Sales Channel Config Presign
Notes: Call Sales Channel Config Presign. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "00000000-0000-0000-0000-000000000000",
"channel_guid": "77777777-7777-7777-7777-777777777777",
"expected_revision": "88888888-8888-8888-8888-888888888888",
"presign": {
"upload_url": "https://example.com/presigned-upload",
"method": "PUT",
"headers": {
"Content-Type": "application/json"
},
"expires_at": "2026-01-01T00:00:00Z"
},
"config_s3_bucket": "ofm-sales-channel-config",
"config_s3_key": "sales-channel-config/orgcode=ACME/channel_guid=77777777-7777-7777-7777-777777777777/config/1700000000000-aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.json"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/config/presign",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/create
Purpose: Create Sales Channel
Notes: Create Sales Channel. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "00000000-0000-0000-0000-000000000000",
"channel_guid": "77777777-7777-7777-7777-777777777777",
"status": "draft",
"revision": "88888888-8888-8888-8888-888888888888"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/get
Purpose: Get Sales Channel
Notes: Get Sales Channel. Requires facility grant for the channel logical (or owner). Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"channel_guid": "CHANNEL_GUID",
"logical_guid": "LOGICAL_GUID",
"channel_code": "pos_generic"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/inventory-sources/get
Purpose: Get Sales Channel Inventory Sources
Notes: Retrieve inventory source configuration for a sales channel. Requires facility grant (read) on the channel's primary logical facility. Route class Tier C (p95 400ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"channel_guid": "CHANNEL_GUID",
"primary": {
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/inventory-sources/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/inventory-sources/set
Purpose: Set Sales Channel Inventory Sources
Notes: Replace inventory source configuration for a sales channel. Owner-only. Sources define which logical facilities supply inventory (with priority) for this channel. Route class Tier D (p95 800ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"channel_guid": "CHANNEL_GUID",
"sources": [
{}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/inventory-sources/set",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/list
Purpose: List Sales Channel
Notes: List Sales Channel. Org-wide list is owner-only; when logical_guid is provided, requires facility grant for that logical (or owner). Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"sales_channels": [
{
"channel_guid": "CHANNEL_GUID",
"logical_guid": "LOGICAL_GUID",
"channel_code": "pos_generic"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/resolve
Purpose: Resolve Sales Channel
Notes: Resolve a sales channel declaration by external identifier. Requires facility grant for the channel logical (or owner). Behavior: - If an active binding exists for the external id, it is returned. - If no active binding exists, the call succeeds only when exactly one non-doomed channel matches; otherwise returns 409 with tag ambiguous.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"channel_guid": "CHANNEL_GUID",
"logical_guid": "LOGICAL_GUID",
"channel_code": "pos_generic"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/resolve",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/status
Purpose: Status Sales Channel
Notes: Status Sales Channel. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"channel_guid": "CHANNEL_GUID",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /sales-channel/update
Purpose: Update Sales Channel
Notes: Update Sales Channel. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"channel_guid": "CHANNEL_GUID",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /sales-channel/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /service-account/assign-logical
Purpose: Call Service Account Assign Logical
Notes: Call Service Account Assign Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"service_account_guid": "string",
"logical_guid": "LOGICAL_GUID",
"state": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /service-account/assign-logical",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /service-account/assignments
Purpose: Call Service Account Assignments
Notes: Call Service Account Assignments. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignments": [
{
"service_account_guid": "string",
"logical_guid": "LOGICAL_GUID",
"state": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /service-account/assignments",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /service-account/detach-logical
Purpose: Call Service Account Detach Logical
Notes: Call Service Account Detach Logical. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"service_account_guid": "string",
"logical_guid": "LOGICAL_GUID",
"detached": false
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /service-account/detach-logical",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /shift/create
Purpose: Create Shift
Notes: Create a scheduled shift assigning a member to a logical facility for a role/position. Requires schedule:write grant. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"shift_guid": "string",
"shift_date": "string",
"start_time": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /shift/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /shift/get
Purpose: Get Shift
Notes: Get shift by shift_guid. Requires session + org association. Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"shift_guid": "string",
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /shift/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /shift/list
Purpose: List Shifts
Notes: List shifts by facility+date or member+date. Requires session + org association. Paginated with limit/next_token. Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /shift/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /shift/status
Purpose: Set Shift Status
Notes: Transition shift status. Allowed: scheduled→active, scheduled→cancelled, active→completed, active→cancelled. Requires schedule:write grant. expected_revision required. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"shift_guid": "string",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /shift/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /shift/update
Purpose: Update Shift
Notes: Update mutable fields of a shift (start_time, end_time, role_label, station_guid, notes, user_guid). Requires schedule:write grant. expected_revision required. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"shift_guid": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /shift/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /stat
Purpose: Health check (session required)
Notes: Health check. Requires valid session_guid or api_key. Returns service name and status.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"note": "See Envelope"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /stat",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /station/create
Purpose: Create Station
Notes: Create a POS station within a logical facility. Requires facility:write or station:write grant. station_code must be unique within the logical facility. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"station_guid": "string",
"station_code": "CODE1",
"station_type": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /station/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /station/get
Purpose: Get Station
Notes: Get station by station_guid. Requires facility grant (read) on the station's logical facility. Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"station_guid": "string",
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /station/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /station/list
Purpose: List Stations
Notes: List stations within a logical facility. Requires facility grant (read). Optional status filter. Paginated with limit/next_token. Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /station/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /station/status
Purpose: Set Station Status
Notes: Transition station status. Allowed transitions: active <-> inactive, active <-> maintenance, inactive <-> maintenance. Requires facility:write or station:write grant. expected_revision required. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"station_guid": "string",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /station/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /station/update
Purpose: Update Station
Notes: Update mutable fields of a station (caption, station_type, channel_guid, hardware_profile). Immutable: station_code, logical_guid. Requires facility:write or station:write grant. expected_revision required. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"station_guid": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /station/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/by-member
Purpose: Call Team By Member
Notes: Call Team By Member. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"teams": [
{
"team_guid": "string",
"user_guid": "USER_GUID",
"code": "CODE1"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/by-member",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/create
Purpose: Create Team
Notes: Create Team. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"team_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/get
Purpose: Get Team
Notes: Get Team. Auth is via headers; org identity lives in the JSON body (org_guid + team_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"team_guid": "string",
"logical_guid": "LOGICAL_GUID",
"code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/list
Purpose: List Team
Notes: List Team. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"teams": [
{
"team_guid": "string",
"logical_guid": "LOGICAL_GUID",
"code": "CODE1"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/member/add
Purpose: Call Team Member Add
Notes: Call Team Member Add. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"team_guid": "string",
"user_guid": "USER_GUID",
"state": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/member/add",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/member/remove
Purpose: Call Team Member Remove
Notes: Call Team Member Remove. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"team_guid": "string",
"user_guid": "USER_GUID",
"removed": false
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/member/remove",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/members
Purpose: Call Team Members
Notes: Call Team Members. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"members": [
{
"team_guid": "string",
"user_guid": "USER_GUID",
"state": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/members",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/status
Purpose: Status Team
Notes: Status Team. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"team_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /team/update
Purpose: Update Team
Notes: Update Team. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"team_guid": "string",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /team/update",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /timesheet/clock-in
Purpose: Clock In
Notes: Start a timesheet entry (clock in) for a member at a facility. Only one open entry per member. Requires timesheet:write grant. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"entry_guid": "string",
"clock_in": "2026-01-01T00:00:00Z",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /timesheet/clock-in",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /timesheet/clock-out
Purpose: Clock Out
Notes: Close an open timesheet entry (clock out). Computes duration_minutes. Requires timesheet:write grant. expected_revision required. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"entry_guid": "string",
"clock_out": "2026-01-01T00:00:00Z",
"duration_minutes": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /timesheet/clock-out",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /timesheet/get
Purpose: Get Timesheet Entry
Notes: Get timesheet entry by entry_guid. Requires session + org association. Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"entry_guid": "string",
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /timesheet/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /timesheet/list
Purpose: List Timesheet Entries
Notes: List timesheet entries by facility+date range or member+date range. Requires session + org association. Paginated with limit/next_token. Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /timesheet/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /timesheet/void
Purpose: Void Timesheet Entry
Notes: Void an open or closed timesheet entry (manager correction). Requires timesheet:write grant. expected_revision + reason required. Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"entry_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /timesheet/void",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /zone/create
Purpose: Create Zone
Notes: Create Zone. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"zone_guid": "55555555-5555-5555-5555-555555555555",
"code": "AISLE_1",
"status": "active",
"depth": 2,
"revision": "66666666-6666-6666-6666-666666666666"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /zone/create",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /zone/get
Purpose: Get Zone
Notes: Get Zone. Auth is via headers; org identity lives in the JSON body (org_guid + logical_guid + zone_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"zone_guid": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /zone/get",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /zone/list
Purpose: List Zone
Notes: List Zone. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"zones": [
{
"zone_guid": "string",
"code": "CODE1",
"caption": "Example caption"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /zone/list",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /zone/status
Purpose: Status Zone
Notes: Status Zone. Auth is via headers; org identity lives in the JSON body (org_guid/orgcode/logical_guid). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"org_guid": "ORG_GUID",
"logical_guid": "LOGICAL_GUID",
"zone_guid": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /zone/status",
"service": "ofm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}