{"openapi":"3.1.0","info":{"title":"Fortune OS API","version":"v1","description":"The public API surfaces of Fortune OS: the versioned REST facade over every business procedure, the Model Context Protocol server for AI agents, and the report and document downloads. Every operation is generated from the Zod schema that validates it."},"servers":[{"url":"https://app.fortuneos.ai"}],"components":{"securitySchemes":{"session":{"type":"apiKey","in":"cookie","name":"better-auth.session_token"},"secureSession":{"type":"apiKey","in":"cookie","name":"__Secure-better-auth.session_token"},"sessionCookie":{"type":"apiKey","in":"cookie","name":"__Secure-better-auth.session_token","description":"The signed-in session BetterAuth issues on sign-in."},"apiKey":{"type":"http","scheme":"bearer","description":"A merchant-minted key from Settings → Profile → API keys, prefixed fos_. Read-only unless the key carries a write grant; every call is still bounded by the caller's live venue permissions."},"mcpOAuth":{"type":"oauth2","description":"The MCP connector sign-in flow; discovery lives at /.well-known/oauth-authorization-server. Tokens are read-only and authenticate the MCP mount alone.","flows":{"authorizationCode":{"authorizationUrl":"https://app.fortuneos.ai/api/auth/oauth2/authorize","tokenUrl":"https://app.fortuneos.ai/api/auth/oauth2/token","scopes":{}}}}}},"paths":{"/api/mcp/v1":{"post":{"operationId":"callMcp","summary":"Send one Model Context Protocol request","description":"JSON-RPC 2.0 over streamable HTTP, stateless per request: tools/list publishes the typed tool contract and tools/call invokes business_context, describe_business_data, query_sales, read_business_records, read_merchant_data, read_catalog or set_catalog_availability. Every call authorizes the credential, the live memberships and the named business scope again.","security":[{"apiKey":[]},{"mcpOAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"anyOf":[{"type":"string"},{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}]},"method":{"type":"string"},"params":{"type":"object","properties":{"_meta":{"type":"object","properties":{"progressToken":{"anyOf":[{"type":"string"},{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}]},"io.modelcontextprotocol/related-task":{"type":"object","properties":{"taskId":{"type":"string"}},"required":["taskId"]}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["jsonrpc","id","method"],"additionalProperties":false}}}},"responses":{"200":{"description":"The JSON-RPC result or error for the request id.","content":{"application/json":{"schema":{"oneOf":[{"anyOf":[{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"anyOf":[{"type":"string"},{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}]},"result":{"type":"object","properties":{"_meta":{"type":"object","properties":{"io.modelcontextprotocol/serverInfo":{"type":"object","properties":{"name":{"type":"string"},"title":{"type":"string"},"icons":{"type":"array","items":{"type":"object","properties":{"src":{"type":"string"},"mimeType":{"type":"string"},"sizes":{"type":"array","items":{"type":"string"}},"theme":{"type":"string","enum":["light","dark"]}},"required":["src"]}},"version":{"type":"string"},"websiteUrl":{"type":"string"},"description":{"type":"string"}},"required":["name","version"]}},"additionalProperties":{}}},"additionalProperties":{}}},"required":["jsonrpc","id","result"],"additionalProperties":false},{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"anyOf":[{"type":"string"},{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}]},"error":{"type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"},"data":{}},"required":["code","message"]}},"required":["jsonrpc","error"],"additionalProperties":false}]},{"type":"object","properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"anyOf":[{"type":"string"},{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}]},"error":{"type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"message":{"type":"string"},"data":{}},"required":["code","message"]}},"required":["jsonrpc","error"],"additionalProperties":false}]}}}},"401":{"description":"Missing or invalid bearer; WWW-Authenticate names the protected-resource metadata.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"405":{"description":"Only POST is served; the server opens no SSE stream.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/api/public/v1/remoteControl/challenge":{"post":{"operationId":"remoteControl.challenge","description":"Runs the remoteControl.challenge procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"publicKey":{"type":"string","minLength":88,"maxLength":88},"platform":{"enum":["android","ios","macos","windows","linux"],"type":"string"},"locationId":{"type":"string","minLength":1,"maxLength":128},"legacyInstallId":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"type":"string","maxLength":128},"capabilities":{"type":"array","maxItems":32,"items":{"type":"string","minLength":1,"maxLength":128}}},"required":["instanceId","publicKey","platform","locationId","legacyInstallId","capabilities"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid"},"nonce":{"type":"string","minLength":1}},"required":["challengeId","nonce"]}}}}}}},"/api/public/v1/remoteControl/enroll":{"post":{"operationId":"remoteControl.enroll","description":"Runs the remoteControl.enroll procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challengeId":{"type":"string","format":"uuid"},"signature":{"type":"string","minLength":8,"maxLength":128}},"required":["challengeId","signature"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"locationId":{"type":"string","minLength":1,"maxLength":128},"legacyInstallId":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"capabilities":{"type":"array","maxItems":32,"items":{"type":"string","minLength":1,"maxLength":128}},"bindingId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","minLength":1}},"required":["instanceId","locationId","legacyInstallId","appVersion","capabilities","bindingId","organizationId"]}}}}}}},"/api/public/v1/remoteControl/current":{"post":{"operationId":"remoteControl.current","description":"Reads the remoteControl.current procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"locationId":{"type":"string","minLength":1,"maxLength":128},"legacyInstallId":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"capabilities":{"type":"array","maxItems":32,"items":{"type":"string","minLength":1,"maxLength":128}},"bindingId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","minLength":1}},"required":["instanceId","locationId","legacyInstallId","appVersion","capabilities","bindingId","organizationId"]},{"type":"null"}]}}}}}}},"/api/public/v1/remoteControl/heartbeat":{"post":{"operationId":"remoteControl.heartbeat","description":"Runs the remoteControl.heartbeat procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bindingId":{"type":"string","format":"uuid"},"foreground":{"type":"boolean"}},"required":["bindingId","foreground"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"lastSeenAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["lastSeenAt"]}}}}}}},"/api/public/v1/remoteControl/acknowledge":{"post":{"operationId":"remoteControl.acknowledge","description":"Runs the remoteControl.acknowledge procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"},"bindingId":{"type":"string","format":"uuid"},"status":{"enum":["received","running"],"type":"string"}},"required":["requestId","bindingId","status"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"accepted":{"const":true},"status":{"enum":["received","running"],"type":"string"}},"required":["accepted","status"]}}}}}}},"/api/public/v1/remoteControl/submitResult":{"post":{"operationId":"remoteControl.submitResult","description":"Runs the remoteControl.submitResult procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"},"bindingId":{"type":"string","format":"uuid"},"reportId":{"type":"string","format":"uuid"},"kind":{"enum":["network","application"],"type":"string"},"report":{},"outcome":{"enum":["completed","partial","failed"],"type":"string"},"failureReason":{"enum":["collection-failed","execution-interrupted"],"type":"string"}},"required":["bindingId","reportId","kind","outcome"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"reportId":{"type":"string","format":"uuid"},"requestId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"outcome":{"enum":["completed","partial","failed"],"type":"string"},"sentryStatus":{"enum":["pending","sent","failed","disabled"],"type":"string"}},"required":["reportId","requestId","outcome","sentryStatus"]}}}}}}},"/api/public/v1/remoteControl/onCommands":{"post":{"operationId":"remoteControl.onCommands","description":"Runs the remoteControl.onCommands procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/remoteControl/createRequest":{"post":{"operationId":"remoteControl.createRequest","description":"Runs the remoteControl.createRequest procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"kind":{"enum":["network","application"],"type":"string"}},"required":["instanceId","kind"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"version":{"const":1},"requestId":{"type":"string","format":"uuid"},"bindingId":{"type":"string","format":"uuid"},"kind":{"enum":["network","application"],"type":"string"},"expiresAt":{"type":"string","format":"date-time","x-native-type":"date"},"status":{"const":"queued"}},"required":["version","requestId","bindingId","kind","expiresAt","status"]}}}}}}},"/api/public/v1/remoteControl/listDevices":{"post":{"operationId":"remoteControl.listDevices","description":"Reads the remoteControl.listDevices procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cursor":{"type":"string","maxLength":128}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"devices":{"type":"array","items":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"locationId":{"type":"string","minLength":1,"maxLength":128},"legacyInstallId":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"capabilities":{"type":"array","maxItems":32,"items":{"type":"string","minLength":1,"maxLength":128}},"bindingId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","minLength":1},"platform":{"enum":["android","ios","macos","windows","linux"],"type":"string"},"userId":{"type":"string","minLength":1},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"lastSeenAt":{"type":"string","format":"date-time","x-native-type":"date"},"foreground":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"locationName":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}]},"online":{"type":"boolean"}},"required":["instanceId","locationId","legacyInstallId","appVersion","capabilities","bindingId","organizationId","platform","userId","revokedAt","lastSeenAt","foreground","createdAt","locationName","organizationName","online"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["devices","nextCursor"]}}}}}}},"/api/public/v1/remoteControl/deviceDetail":{"post":{"operationId":"remoteControl.deviceDetail","description":"Reads the remoteControl.deviceDetail procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"cursor":{"type":"string","maxLength":128}},"required":["instanceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"device":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"},"locationId":{"type":"string","minLength":1,"maxLength":128},"legacyInstallId":{"type":"string","minLength":1,"maxLength":128},"appVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"capabilities":{"type":"array","maxItems":32,"items":{"type":"string","minLength":1,"maxLength":128}},"bindingId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","minLength":1},"platform":{"enum":["android","ios","macos","windows","linux"],"type":"string"},"userId":{"type":"string","minLength":1},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"lastSeenAt":{"type":"string","format":"date-time","x-native-type":"date"},"foreground":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"locationName":{"anyOf":[{"type":"string"},{"type":"null"}]},"organizationName":{"anyOf":[{"type":"string"},{"type":"null"}]},"online":{"type":"boolean"}},"required":["instanceId","locationId","legacyInstallId","appVersion","capabilities","bindingId","organizationId","platform","userId","revokedAt","lastSeenAt","foreground","createdAt","locationName","organizationName","online"]},"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"instanceId":{"type":"string","format":"uuid"},"bindingId":{"type":"string","format":"uuid"},"organizationId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1},"requestedById":{"type":"string","minLength":1},"kind":{"enum":["network","application"],"type":"string"},"status":{"enum":["queued","received","running","expired","completed","partial","failed"],"type":"string"},"expiresAt":{"type":"string","format":"date-time","x-native-type":"date"},"receivedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"startedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","instanceId","bindingId","organizationId","locationId","requestedById","kind","status","expiresAt","receivedAt","startedAt","finishedAt","createdAt","updatedAt"]}},"reports":{"type":"array","items":{"type":"object","properties":{"reportId":{"type":"string","format":"uuid"},"requestId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"kind":{"enum":["network","application"],"type":"string"},"outcome":{"enum":["completed","partial","failed"],"type":"string"},"failureReason":{"anyOf":[{"enum":["collection-failed","execution-interrupted"],"type":"string"},{"type":"null"}]},"organizationId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"sentryStatus":{"enum":["pending","sent","failed","disabled"],"type":"string"},"sentryEventId":{"type":"string","minLength":1}},"required":["reportId","requestId","kind","outcome","failureReason","organizationId","locationId","createdAt","sentryStatus","sentryEventId"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["device","requests","reports","nextCursor"]}}}}}}},"/api/public/v1/remoteControl/reportDetail":{"post":{"operationId":"remoteControl.reportDetail","description":"Reads the remoteControl.reportDetail procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reportId":{"type":"string","format":"uuid"}},"required":["reportId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"kind":{"enum":["network","application"],"type":"string"},"outcome":{"enum":["completed","partial","failed"],"type":"string"},"failureReason":{"anyOf":[{"enum":["collection-failed","execution-interrupted"],"type":"string"},{"type":"null"}]},"organizationId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"sentryStatus":{"enum":["pending","sent","failed","disabled"],"type":"string"},"sentryEventId":{"type":"string","minLength":1},"id":{"type":"string","format":"uuid"},"instanceId":{"type":"string","format":"uuid"},"bindingId":{"type":"string","format":"uuid"},"userId":{"type":"string","minLength":1},"payload":{"anyOf":[{"anyOf":[{"type":"object","properties":{"reportId":{"type":"string","minLength":1,"maxLength":1024},"startedAt":{"type":"string","maxLength":1024},"finishedAt":{"type":"string","maxLength":1024},"completeness":{"enum":["complete","partial","limited"],"type":"string"},"identity":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":1024},"locationId":{"type":"string","minLength":1,"maxLength":1024},"installId":{"type":"string","minLength":1,"maxLength":1024}},"required":["organizationId","locationId","installId"]},"environment":{"type":"object","properties":{"platform":{"enum":["native","browser"],"type":"string"},"userAgent":{"type":"string","maxLength":1024},"osPlatform":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"nativeAppVersion":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"nativeProtocolVersion":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"nativeCapabilities":{"type":"array","maxItems":128,"items":{"type":"string","maxLength":1024}},"webRelease":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]}},"required":["platform","userAgent","osPlatform","nativeAppVersion","nativeProtocolVersion","nativeCapabilities","webRelease"]},"failures":{"type":"array","maxItems":128,"items":{"type":"object","properties":{"step":{"type":"string","minLength":1,"maxLength":1024},"reason":{"type":"string","maxLength":1024}},"required":["step","reason"]}},"limitations":{"type":"array","maxItems":128,"items":{"type":"string","maxLength":1024}},"version":{"const":2},"scope":{"type":"string","maxLength":1024},"discovery":{"anyOf":[{"type":"object","properties":{"mdns":{"anyOf":[{"type":"object","properties":{"state":{"const":"running"}},"required":["state"]},{"type":"object","properties":{"state":{"const":"succeeded"}},"required":["state"]},{"type":"object","properties":{"state":{"const":"failed"},"reason":{"type":"string","maxLength":1024}},"required":["state","reason"]}]},"scan":{"anyOf":[{"type":"object","properties":{"state":{"const":"running"}},"required":["state"]},{"type":"object","properties":{"state":{"const":"succeeded"}},"required":["state"]},{"type":"object","properties":{"state":{"const":"failed"},"reason":{"type":"string","maxLength":1024}},"required":["state","reason"]}]}},"required":["mdns","scan"]},{"type":"null"}]},"endpoints":{"type":"array","maxItems":256,"items":{"type":"object","properties":{"address":{"type":"string","maxLength":1024},"host":{"type":"string","maxLength":1024},"port":{"type":"integer","minimum":1,"maximum":65535},"label":{"type":"string","maxLength":1024},"model":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"discoveredBy":{"type":"array","maxItems":2,"items":{"enum":["mdns","scan"],"type":"string"}},"status":{"enum":["reachable","discovered"],"type":"string"},"macAddress":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"matchedPrinterIds":{"type":"array","maxItems":64,"items":{"type":"string","minLength":1,"maxLength":1024}}},"required":["address","host","port","label","model","discoveredBy","status","macAddress","matchedPrinterIds"]}},"endpointsOmitted":{"type":"integer","minimum":0,"maximum":9007199254740991},"printers":{"anyOf":[{"type":"array","maxItems":64,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":1024},"name":{"type":"string","maxLength":1024},"transport":{"enum":["network","serial","ble","usb"],"type":"string"},"address":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"status":{"enum":["reachable","unreachable","unknown"],"type":"string"},"reason":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"matchedEndpoint":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]}},"required":["id","name","transport","address","status","reason","matchedEndpoint"]}},{"type":"null"}]},"networkMap":{"anyOf":[{"type":"object","properties":{"state":{"enum":["scanning","completed","cancelled"],"type":"string"},"os":{"type":"object","properties":{"platform":{"type":"string"},"version":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["platform","version"]},"interfaces":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"addresses":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"family":{"enum":["ipv4","ipv6"],"type":"string"},"prefixLength":{"type":"number"}},"required":["address","family","prefixLength"]}},"gateways":{"type":"array","items":{"type":"string"}},"macAddress":{"type":"string"}},"required":["name","addresses","gateways"]}},"hosts":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"interfaceName":{"type":"string"},"hostname":{"type":"string"},"macAddress":{"type":"string"},"services":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"port":{"type":"number"},"source":{"enum":["mdns","tcp"],"type":"string"},"reachable":{"type":"boolean"}},"required":["port","source"]}},"reachability":{"enum":["reachable","unknown"],"type":"string"},"latencyMs":{"type":"number"},"sources":{"type":"array","items":{"enum":["local","gateway","mdns","tcp"],"type":"string"}}},"required":["address","services","reachability","sources"]}},"sources":{"type":"object","properties":{"interfaces":{"anyOf":[{"type":"object","properties":{"state":{"enum":["running","succeeded"],"type":"string"}},"required":["state"]},{"type":"object","properties":{"state":{"enum":["failed","unsupported"],"type":"string"},"reason":{"type":"string"}},"required":["state","reason"]}]},"mdns":{"anyOf":[{"type":"object","properties":{"state":{"enum":["running","succeeded"],"type":"string"}},"required":["state"]},{"type":"object","properties":{"state":{"enum":["failed","unsupported"],"type":"string"},"reason":{"type":"string"}},"required":["state","reason"]}]},"scan":{"anyOf":[{"type":"object","properties":{"state":{"enum":["running","succeeded"],"type":"string"}},"required":["state"]},{"type":"object","properties":{"state":{"enum":["failed","unsupported"],"type":"string"},"reason":{"type":"string"}},"required":["state","reason"]}]}},"required":["interfaces","mdns","scan"]},"limitations":{"type":"array","items":{"type":"string"}},"bounds":{"type":"object","properties":{"maxHosts":{"type":"number"},"maxServices":{"type":"number"},"maxDurationMs":{"type":"number"},"ports":{"type":"array","items":{"type":"number"}}},"required":["maxHosts","maxServices","maxDurationMs","ports"]},"truncated":{"type":"boolean"}},"required":["state","os","interfaces","hosts","sources","limitations","bounds","truncated"]},{"type":"null"}]},"unavailable":{"type":"object","properties":{"macAddress":{"type":"string","maxLength":1024},"interfaces":{"type":"string","maxLength":1024},"gateway":{"type":"string","maxLength":1024},"osVersion":{"type":"string","maxLength":1024}}}},"required":["reportId","startedAt","finishedAt","completeness","identity","environment","failures","limitations","version","scope","discovery","endpoints","endpointsOmitted","printers","networkMap","unavailable"]},{"type":"object","properties":{"reportId":{"type":"string","minLength":1,"maxLength":1024},"startedAt":{"type":"string","maxLength":1024},"finishedAt":{"type":"string","maxLength":1024},"completeness":{"enum":["complete","partial","limited"],"type":"string"},"identity":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":1024},"locationId":{"type":"string","minLength":1,"maxLength":1024},"installId":{"type":"string","minLength":1,"maxLength":1024}},"required":["organizationId","locationId","installId"]},"environment":{"type":"object","properties":{"platform":{"enum":["native","browser"],"type":"string"},"userAgent":{"type":"string","maxLength":1024},"osPlatform":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"nativeAppVersion":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]},"nativeProtocolVersion":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"nativeCapabilities":{"type":"array","maxItems":128,"items":{"type":"string","maxLength":1024}},"webRelease":{"anyOf":[{"type":"string","maxLength":1024},{"type":"null"}]}},"required":["platform","userAgent","osPlatform","nativeAppVersion","nativeProtocolVersion","nativeCapabilities","webRelease"]},"failures":{"type":"array","maxItems":128,"items":{"type":"object","properties":{"step":{"type":"string","minLength":1,"maxLength":1024},"reason":{"type":"string","maxLength":1024}},"required":["step","reason"]}},"limitations":{"type":"array","maxItems":128,"items":{"type":"string","maxLength":1024}},"version":{"const":1},"reportType":{"const":"application"},"snapshot":{"type":"object","properties":{"version":{"const":1},"collectedAt":{"type":"string"},"durationMs":{"type":"number"},"fields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"source":{"type":"string"},"status":{"enum":["available","unsupported","permission-denied","not-applicable","collection-failed"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"reason":{"type":"string"}},"required":["key","source","status"]}},"interfaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"source":{"type":"string"},"status":{"enum":["available","unsupported","permission-denied","not-applicable","collection-failed"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"reason":{"type":"string"}},"required":["key","source","status"]}}},"required":["id","fields"]}},"peripherals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"source":{"type":"string"},"status":{"enum":["available","unsupported","permission-denied","not-applicable","collection-failed"],"type":"string"},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}}]},"reason":{"type":"string"}},"required":["key","source","status"]}},"kind":{"enum":["bluetooth","usb"],"type":"string"}},"required":["id","fields","kind"]}},"limitations":{"type":"array","items":{"type":"string"}},"truncated":{"type":"boolean"}},"required":["version","collectedAt","durationMs","fields","interfaces","peripherals","limitations","truncated"]},"browserFields":{"type":"array","maxItems":34,"items":{"anyOf":[{"type":"object","properties":{"key":{"enum":["browser.userAgent","browser.platform","browser.logicalProcessors","browser.approximateMemoryGiB","browser.heapUsedBytes","browser.heapLimitBytes","browser.online","browser.connectionType","browser.effectiveConnectionType","browser.downlinkMbps","browser.roundTripMs","browser.saveData","browser.language","browser.languages","browser.timeZone","browser.displayWidthPixels","browser.displayHeightPixels","browser.pixelRatio","browser.orientation","browser.visibility","browser.focused","browser.pageUptimeSeconds","browser.secureContext","browser.cookiesEnabled","browser.originQuotaBytes","browser.originUsageBytes","browser.batteryLevelFraction","browser.batteryCharging","browser.permission.geolocation","browser.permission.notifications","browser.permission.camera","browser.permission.microphone","browser.bluetoothAuthorizedDevices","browser.usbAuthorizedDevices"],"type":"string"},"source":{"type":"string","minLength":1,"maxLength":256},"status":{"const":"available"},"value":{"anyOf":[{"type":"string","maxLength":256},{"type":"number"},{"type":"boolean"},{"type":"array","maxItems":32,"items":{"type":"string","maxLength":256}}]}},"required":["key","source","status","value"]},{"type":"object","properties":{"key":{"enum":["browser.userAgent","browser.platform","browser.logicalProcessors","browser.approximateMemoryGiB","browser.heapUsedBytes","browser.heapLimitBytes","browser.online","browser.connectionType","browser.effectiveConnectionType","browser.downlinkMbps","browser.roundTripMs","browser.saveData","browser.language","browser.languages","browser.timeZone","browser.displayWidthPixels","browser.displayHeightPixels","browser.pixelRatio","browser.orientation","browser.visibility","browser.focused","browser.pageUptimeSeconds","browser.secureContext","browser.cookiesEnabled","browser.originQuotaBytes","browser.originUsageBytes","browser.batteryLevelFraction","browser.batteryCharging","browser.permission.geolocation","browser.permission.notifications","browser.permission.camera","browser.permission.microphone","browser.bluetoothAuthorizedDevices","browser.usbAuthorizedDevices"],"type":"string"},"source":{"type":"string","minLength":1,"maxLength":256},"status":{"enum":["unsupported","permission-denied","not-applicable","collection-failed"],"type":"string"},"value":{"not":{}},"reason":{"type":"string","minLength":1,"maxLength":512}},"required":["key","source","status","reason"]}]}}},"required":["reportId","startedAt","finishedAt","completeness","identity","environment","failures","limitations","version","reportType","snapshot","browserFields"]}]},{"type":"null"}]},"payloadHash":{"type":"string","minLength":1},"sentryAttempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["requestId","kind","outcome","failureReason","organizationId","locationId","createdAt","sentryStatus","sentryEventId","id","instanceId","bindingId","userId","payload","payloadHash","sentryAttempts","updatedAt"]}}}}}}},"/api/public/v1/remoteControl/revoke":{"post":{"operationId":"remoteControl.revoke","description":"Runs the remoteControl.revoke procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"instanceId":{"type":"string","format":"uuid"}},"required":["instanceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"revoked":{"const":true}},"required":["revoked"]}}}}}}},"/api/public/v1/support/contact":{"post":{"operationId":"support.contact","description":"Reads the support.contact procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/support/inspect":{"post":{"operationId":"support.inspect","description":"Reads the support.inspect procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/support/confirm":{"post":{"operationId":"support.confirm","description":"Runs the support.confirm procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"organizationId":{"type":"string","minLength":1}},"required":["token","organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/support/disconnect":{"post":{"operationId":"support.disconnect","description":"Runs the support.disconnect procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/dashboard":{"post":{"operationId":"analytics.dashboard","description":"Reads the analytics.dashboard procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/chart":{"post":{"operationId":"analytics.chart","summary":"Legacy operational order-value chart; use analytics.dashboard financial buckets.","description":"Reads the analytics.chart procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/sales":{"post":{"operationId":"analytics.sales","summary":"Legacy activated order values before refunds; use analytics.dashboard.financial for sales Net.","description":"Reads the analytics.sales procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]},{"type":"object","properties":{"paymentTypes":{"type":"array","minItems":1,"items":{"enum":["cash","card","wallet","mixed","other"],"type":"string"}}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/items":{"post":{"operationId":"analytics.items","summary":"Legacy mutable catalog line ranking; use analytics.dashboard.financialItems.","description":"Reads the analytics.items procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]},{"type":"object","properties":{"paymentTypes":{"type":"array","minItems":1,"items":{"enum":["cash","card","wallet","mixed","other"],"type":"string"}}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/reconciliation":{"post":{"operationId":"analytics.reconciliation","summary":"Legacy order-period tax and cumulative refunds; use analytics.dashboard.financial.","description":"Reads the analytics.reconciliation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]},{"type":"object","properties":{"paymentTypes":{"type":"array","minItems":1,"items":{"enum":["cash","card","wallet","mixed","other"],"type":"string"}}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/trend":{"post":{"operationId":"analytics.trend","summary":"Legacy activated-order activity; use analytics.dashboard.financialTrading.","description":"Reads the analytics.trend procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]},{"type":"object","properties":{"paymentTypes":{"type":"array","minItems":1,"items":{"enum":["cash","card","wallet","mixed","other"],"type":"string"}}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/venues":{"post":{"operationId":"analytics.venues","summary":"Legacy activated-order location values before refunds; use analytics.dashboard.financial.","description":"Reads the analytics.venues procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]},{"type":"object","properties":{"paymentTypes":{"type":"array","minItems":1,"items":{"enum":["cash","card","wallet","mixed","other"],"type":"string"}}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/analytics/venueFinancialPulse":{"post":{"operationId":"analytics.venueFinancialPulse","description":"Reads the analytics.venueFinancialPulse procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"venues":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"activityComplete":{"type":"boolean"},"currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"todayCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yesterdayCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"complete":{"type":"boolean"},"comparisonComplete":{"type":"boolean"},"deltaPercent":{"anyOf":[{"type":"number"},{"type":"null"}]},"points":{"type":"array","items":{"type":"object","properties":{"cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cents"]}},"peakPoints":{"type":"array","items":{"type":"object","properties":{"cents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["cents"]}}},"required":["currency","todayCents","yesterdayCents","complete","comparisonComplete","deltaPercent","points","peakPoints"]}},"activity":{"type":"array","items":{"type":"object","properties":{"weekday":{"type":"integer","minimum":1,"maximum":7},"hour":{"type":"integer","minimum":0,"maximum":23},"orderCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["weekday","hour","orderCount"]}}},"required":["locationId","activityComplete","currencies","activity"]}}},"required":["venues"]}}}}}}},"/api/public/v1/analytics/venuePulse":{"post":{"operationId":"analytics.venuePulse","summary":"Legacy operational venue pulse; use analytics.venueFinancialPulse.","description":"Reads the analytics.venuePulse procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/reports/financialSummary":{"post":{"operationId":"reports.financialSummary","description":"Reads the reports.financialSummary procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"current":{"type":"object","properties":{"windows":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"fromDate":{"type":"string"},"toDate":{"type":"string"},"timeZone":{"type":"string"},"fellBackToUtc":{"type":"boolean"},"intervals":{"type":"array","items":{"type":"object","properties":{"startUtc":{"type":"string"},"endUtc":{"type":"string"}},"required":["startUtc","endUtc"]}}},"required":["locationId","fromDate","toDate","timeZone","fellBackToUtc"]}},"currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"figures":{"type":"object","properties":{"grossCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundAmountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"municipalityFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundTipCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownVatCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"netWithoutVatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"averageSaleCents":{"anyOf":[{"type":"number"},{"type":"null"}]},"averageItemsPerSale":{"anyOf":[{"type":"number"},{"type":"null"}]},"quantities":{"type":"array","items":{"type":"object","properties":{"quantityUnit":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantityMilli":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lineCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["quantityUnit","quantityMilli","lineCount"]}},"coverage":{"type":"object","properties":{"missingSaleSnapshotCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"missingSaleSnapshotCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unresolvedImportedOrderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unresolvedImportedOrderCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundPaymentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"salesComplete":{"type":"boolean"},"refundsComplete":{"type":"boolean"},"vatComplete":{"type":"boolean"},"saleUnknownTaxLineCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownTaxCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownComponentsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezoneFallbackCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["missingSaleSnapshotCount","missingSaleSnapshotCents","unresolvedImportedOrderCount","unresolvedImportedOrderCents","undatedRefundCents","undatedRefundPaymentCount","salesComplete","refundsComplete","vatComplete","saleUnknownTaxLineCount","refundUnknownTaxCount","refundUnknownComponentsCount","timezoneFallbackCount"]}},"required":["grossCents","discountCents","saleCents","refundCents","netCents","saleCount","refundCount","refundAmountCents","municipalityFeeCents","refundedFeeCents","refundTipCents","knownVatCents","vatCents","netWithoutVatCents","averageSaleCents","averageItemsPerSale","quantities","coverage"]},"methods":{"type":"array","items":{"type":"object","properties":{"paymentType":{"type":"string"},"paymentMethodName":{"anyOf":[{"type":"string"},{"type":"null"}]},"saleCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundAmountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unknownRefundCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sharePercent":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["paymentType","paymentMethodName","saleCents","refundedCents","netCents","refundAmountCents","unknownRefundCount","sharePercent"]}},"locations":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"figures":{"type":"object","properties":{"grossCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundAmountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"municipalityFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundTipCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownVatCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"netWithoutVatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"averageSaleCents":{"anyOf":[{"type":"number"},{"type":"null"}]},"averageItemsPerSale":{"anyOf":[{"type":"number"},{"type":"null"}]},"quantities":{"type":"array","items":{"type":"object","properties":{"quantityUnit":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantityMilli":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lineCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["quantityUnit","quantityMilli","lineCount"]}},"coverage":{"type":"object","properties":{"missingSaleSnapshotCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"missingSaleSnapshotCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unresolvedImportedOrderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unresolvedImportedOrderCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundPaymentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"salesComplete":{"type":"boolean"},"refundsComplete":{"type":"boolean"},"vatComplete":{"type":"boolean"},"saleUnknownTaxLineCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownTaxCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownComponentsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezoneFallbackCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["missingSaleSnapshotCount","missingSaleSnapshotCents","unresolvedImportedOrderCount","unresolvedImportedOrderCents","undatedRefundCents","undatedRefundPaymentCount","salesComplete","refundsComplete","vatComplete","saleUnknownTaxLineCount","refundUnknownTaxCount","refundUnknownComponentsCount","timezoneFallbackCount"]}},"required":["grossCents","discountCents","saleCents","refundCents","netCents","saleCount","refundCount","refundAmountCents","municipalityFeeCents","refundedFeeCents","refundTipCents","knownVatCents","vatCents","netWithoutVatCents","averageSaleCents","averageItemsPerSale","quantities","coverage"]},"sharePercent":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["locationId","figures","sharePercent"]}},"buckets":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"localDate":{"type":"string"},"localHour":{"type":"integer","minimum":0,"maximum":23},"grossCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tradingRevenueCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["locationId","localDate","localHour","grossCents","discountCents","refundCents","netCents","tradingRevenueCents","saleCount","refundCount"]}}},"required":["currency","figures","methods","locations","buckets"]}}},"required":["windows","currencies"]},"previous":{"type":"object","properties":{"windows":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"fromDate":{"type":"string"},"toDate":{"type":"string"},"timeZone":{"type":"string"},"fellBackToUtc":{"type":"boolean"},"intervals":{"type":"array","items":{"type":"object","properties":{"startUtc":{"type":"string"},"endUtc":{"type":"string"}},"required":["startUtc","endUtc"]}}},"required":["locationId","fromDate","toDate","timeZone","fellBackToUtc"]}},"currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"figures":{"type":"object","properties":{"grossCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundAmountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"municipalityFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundTipCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownVatCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"netWithoutVatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"averageSaleCents":{"anyOf":[{"type":"number"},{"type":"null"}]},"averageItemsPerSale":{"anyOf":[{"type":"number"},{"type":"null"}]},"quantities":{"type":"array","items":{"type":"object","properties":{"quantityUnit":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantityMilli":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lineCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["quantityUnit","quantityMilli","lineCount"]}},"coverage":{"type":"object","properties":{"missingSaleSnapshotCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"missingSaleSnapshotCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unresolvedImportedOrderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unresolvedImportedOrderCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundPaymentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"salesComplete":{"type":"boolean"},"refundsComplete":{"type":"boolean"},"vatComplete":{"type":"boolean"},"saleUnknownTaxLineCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownTaxCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownComponentsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezoneFallbackCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["missingSaleSnapshotCount","missingSaleSnapshotCents","unresolvedImportedOrderCount","unresolvedImportedOrderCents","undatedRefundCents","undatedRefundPaymentCount","salesComplete","refundsComplete","vatComplete","saleUnknownTaxLineCount","refundUnknownTaxCount","refundUnknownComponentsCount","timezoneFallbackCount"]}},"required":["grossCents","discountCents","saleCents","refundCents","netCents","saleCount","refundCount","refundAmountCents","municipalityFeeCents","refundedFeeCents","refundTipCents","knownVatCents","vatCents","netWithoutVatCents","averageSaleCents","averageItemsPerSale","quantities","coverage"]},"methods":{"type":"array","items":{"type":"object","properties":{"paymentType":{"type":"string"},"paymentMethodName":{"anyOf":[{"type":"string"},{"type":"null"}]},"saleCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundAmountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unknownRefundCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"sharePercent":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["paymentType","paymentMethodName","saleCents","refundedCents","netCents","refundAmountCents","unknownRefundCount","sharePercent"]}},"locations":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"figures":{"type":"object","properties":{"grossCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundAmountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"municipalityFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedFeeCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundTipCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"knownVatCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"vatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"netWithoutVatCents":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"averageSaleCents":{"anyOf":[{"type":"number"},{"type":"null"}]},"averageItemsPerSale":{"anyOf":[{"type":"number"},{"type":"null"}]},"quantities":{"type":"array","items":{"type":"object","properties":{"quantityUnit":{"anyOf":[{"type":"string"},{"type":"null"}]},"quantityMilli":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lineCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["quantityUnit","quantityMilli","lineCount"]}},"coverage":{"type":"object","properties":{"missingSaleSnapshotCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"missingSaleSnapshotCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unresolvedImportedOrderCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unresolvedImportedOrderCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedRefundPaymentCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"salesComplete":{"type":"boolean"},"refundsComplete":{"type":"boolean"},"vatComplete":{"type":"boolean"},"saleUnknownTaxLineCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownTaxCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundUnknownComponentsCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"timezoneFallbackCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["missingSaleSnapshotCount","missingSaleSnapshotCents","unresolvedImportedOrderCount","unresolvedImportedOrderCents","undatedRefundCents","undatedRefundPaymentCount","salesComplete","refundsComplete","vatComplete","saleUnknownTaxLineCount","refundUnknownTaxCount","refundUnknownComponentsCount","timezoneFallbackCount"]}},"required":["grossCents","discountCents","saleCents","refundCents","netCents","saleCount","refundCount","refundAmountCents","municipalityFeeCents","refundedFeeCents","refundTipCents","knownVatCents","vatCents","netWithoutVatCents","averageSaleCents","averageItemsPerSale","quantities","coverage"]},"sharePercent":{"anyOf":[{"type":"number"},{"type":"null"}]}},"required":["locationId","figures","sharePercent"]}},"buckets":{"type":"array","items":{"type":"object","properties":{"locationId":{"type":"string"},"localDate":{"type":"string"},"localHour":{"type":"integer","minimum":0,"maximum":23},"grossCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"discountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"netCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"tradingRevenueCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"saleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["locationId","localDate","localHour","grossCents","discountCents","refundCents","netCents","tradingRevenueCents","saleCount","refundCount"]}}},"required":["currency","figures","methods","locations","buckets"]}}},"required":["windows","currencies"]}},"required":["current","previous"]}}}}}}},"/api/public/v1/reports/financialDataset":{"post":{"operationId":"reports.financialDataset","description":"Reads the reports.financialDataset procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"locationMode":{"enum":["single","all"],"type":"string","default":"single"}},"required":["locationId"]},{"type":"object","properties":{"report":{"enum":["summary","items","locations","employees","paymentTypes","refunds","orderDetails"],"type":"string"}},"required":["report"]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"currencies":{"type":"array","items":{"type":"string"},"readOnly":true},"accountingBasis":{"type":"string"},"columns":{"type":"array","items":{"type":"string"},"readOnly":true},"rows":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["group","child","caption","grandTotal"],"type":"string"},"level":{"anyOf":[{"const":0},{"const":1},{"const":2},{"const":3}]},"cells":{"type":"array","items":{"type":"string"},"readOnly":true}},"required":["kind","level","cells"]},"readOnly":true},"labelColumns":{"type":"object","properties":{"group":{"type":"array","items":{"type":"string"},"readOnly":true},"child":{"type":"array","items":{"type":"string"},"readOnly":true},"caption":{"type":"array","items":{"type":"string"},"readOnly":true},"grandTotal":{"type":"array","items":{"type":"string"},"readOnly":true}}},"truncated":{"type":"boolean"}},"required":["columns","rows"]}}}}}}},"/api/public/v1/reports/summary":{"post":{"operationId":"reports.summary","summary":"Legacy operational pre-refund summary; use reports.financialSummary.","description":"Reads the reports.summary procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/reports/byItems":{"post":{"operationId":"reports.byItems","summary":"Legacy operational pre-refund item totals; use reports.financialDataset with report items.","description":"Reads the reports.byItems procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/reports/byLocation":{"post":{"operationId":"reports.byLocation","summary":"Legacy operational pre-refund location totals; use reports.financialDataset with report locations.","description":"Reads the reports.byLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/reports/byEmployee":{"post":{"operationId":"reports.byEmployee","summary":"Legacy operational pre-refund employee totals; use reports.financialDataset with report employees.","description":"Reads the reports.byEmployee procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/reports/paymentType":{"post":{"operationId":"reports.paymentType","summary":"Legacy collected-payment totals; use reports.financialDataset with report paymentTypes for financial Net.","description":"Reads the reports.paymentType procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/reports/refunds":{"post":{"operationId":"reports.refunds","summary":"Legacy cumulative refunds attributed to the original sale period; use reports.financialDataset with report refunds for posted returns.","description":"Reads the reports.refunds procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","deprecated":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/auth/enterOrganization":{"post":{"operationId":"auth.enterOrganization","description":"Runs the auth.enterOrganization procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/auth/capabilities":{"post":{"operationId":"auth.capabilities","description":"Reads the auth.capabilities procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/auth/refreshFlags":{"post":{"operationId":"auth.refreshFlags","description":"Reads the auth.refreshFlags procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"path":{"enum":["/dashboard","/catalog","/auth/create-enterprise","/auth/create-organization","/auth/venue","/auth/sign-in","/auth/invitation","/auth/sign-up","/support/link","/event-join/$token","/merchant-join/$token"],"type":"string"}},"required":["path"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/auth/fortisLogoutUrl":{"post":{"operationId":"auth.fortisLogoutUrl","description":"Reads the auth.fortisLogoutUrl procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/billing/getPlan":{"post":{"operationId":"billing.getPlan","description":"Reads the billing.getPlan procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/billing/startCheckout":{"post":{"operationId":"billing.startCheckout","description":"Runs the billing.startCheckout procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"interval":{"enum":["month","year"],"type":"string"}},"required":["organizationId","interval"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/billing/openPortal":{"post":{"operationId":"billing.openPortal","description":"Runs the billing.openPortal procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/billing/getStatus":{"post":{"operationId":"billing.getStatus","description":"Reads the billing.getStatus procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/categories":{"get":{"operationId":"catalog.listCategories","summary":"List catalog categories with their items","description":"Reads the organization-wide catalog, including item variations and their prices in minor currency units. Use this snapshot to resolve IDs before editing. Venue QR-menu placement is available separately through emenu.listContent.","tags":["catalog"],"parameters":[{"name":"organizationId","in":"query","required":true,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true},{"name":"includeArchived","in":"query","required":false,"schema":{"type":"boolean"},"allowEmptyValue":true,"allowReserved":true},{"name":"locationId","in":"query","required":false,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/hasEverHadItems":{"post":{"operationId":"catalog.hasEverHadItems","description":"Reads the catalog.hasEverHadItems procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/proposeCategorySlug":{"post":{"operationId":"catalog.proposeCategorySlug","description":"Reads the catalog.proposeCategorySlug procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"parentCategoryId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"categoryId":{"type":"string","minLength":1}},"required":["organizationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/createCategory":{"post":{"operationId":"catalog.createCategory","summary":"Create a catalog category","description":"Creates a category in the organization-wide live catalog. Omit parentCategoryId to create it at the root; the new category is placed first among siblings. Its URL slug is derived from the name automatically and cannot be chosen.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"parentCategoryId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["organizationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/updateCategory":{"post":{"operationId":"catalog.updateCategory","summary":"Edit or move a catalog category","description":"Updates only supplied fields in the organization-wide live catalog. Set parentCategoryId to null to move to the root. The URL slug is managed automatically: renaming preserves it, and moving can change it to avoid a conflict.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"parentCategoryId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"isAvailableByDefault":{"type":"boolean"},"isShownInOnlineMenu":{"type":"boolean"},"position":{"type":"number"},"color":{"anyOf":[{"enum":["amber","orange","red","pink","purple","indigo","blue","cyan","teal","green","lime","brown","slate"],"type":"string"},{"type":"null"}]}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveCategory":{"post":{"operationId":"catalog.archiveCategory","summary":"Archive a catalog category","description":"Archives only this category in the organization-wide live catalog and moves its direct child categories and items to its parent. Keep the returned moved IDs to restore their placement with restoreCategory.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/restoreCategory":{"post":{"operationId":"catalog.restoreCategory","summary":"Restore a catalog category","description":"Restores this category in the organization-wide live catalog. Pass movedCategoryIds and movedItemIds from archiveCategory to readopt children still at its parent; omitting them restores only the category.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"movedCategoryIds":{"type":"array","maxItems":500,"items":{"type":"string"}},"movedItemIds":{"type":"array","maxItems":500,"items":{"type":"string"}}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/createMasterItem":{"post":{"operationId":"catalog.createMasterItem","description":"Runs the catalog.createMasterItem procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"unit":{"enum":["piece","gram","kilogram","milliliter","liter"],"type":"string"},"quantity":{"type":"number","exclusiveMinimum":0},"calories":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"proteins":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"fats":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"carbs":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["name","unit","quantity"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/items":{"post":{"operationId":"catalog.addCatalogItem","summary":"Add an item to the catalog","description":"Creates an organization-wide live catalog item and its unnamed pricing variation. priceCents is an absolute price in minor currency units. Omit categoryId for a root item; availability and online-menu visibility settings control where it appears.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"id":{"type":"string","format":"uuid"},"masterItemId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"categoryId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":2147483647},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"unit":{"enum":["piece","gram","kilogram","milliliter","liter"],"type":"string"},"quantity":{"type":"number","exclusiveMinimum":0},"calories":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"proteins":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"fats":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"carbs":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"allergens":{"type":"array","items":{"enum":["eggs","wheat","soy","fish","shellfish","sesame","milk","peanuts","tree_nuts","gluten","corn"],"type":"string"}},"labels":{"type":"array","items":{"type":"string","minLength":1,"maxLength":40}}},"required":["organizationId","priceCents","name","unit","quantity"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"patch":{"operationId":"catalog.updateCatalogItem","summary":"Update a catalog item","description":"Updates only supplied fields in the organization-wide live catalog. Supplied allergens and labels replace their collections. priceCents is in minor currency units and can only update an item with an unnamed pricing variation; use updateItemVariation for named sizes.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"categoryId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"priceCents":{"type":"integer","minimum":0,"maximum":2147483647},"isAvailableByDefault":{"type":"boolean"},"isShownInOnlineMenu":{"type":"boolean"},"position":{"type":"number"},"name":{"type":"string","minLength":1,"maxLength":120},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"unit":{"enum":["piece","gram","kilogram","milliliter","liter"],"type":"string"},"quantity":{"type":"number","exclusiveMinimum":0},"calories":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"proteins":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"fats":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"carbs":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"allergens":{"type":"array","items":{"enum":["eggs","wheat","soy","fish","shellfish","sesame","milk","peanuts","tree_nuts","gluten","corn"],"type":"string"}},"labels":{"type":"array","items":{"type":"string","minLength":1,"maxLength":40}}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveCatalogItem":{"post":{"operationId":"catalog.archiveCatalogItem","summary":"Archive a catalog item","description":"Immediately archives this item across the organization. This is reversible with restoreCatalogItem and does not delete historical sales.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/restoreCatalogItem":{"post":{"operationId":"catalog.restoreCatalogItem","summary":"Restore a catalog item","description":"Restores this archived item in the organization-wide live catalog. Existing availability and online-menu visibility settings still apply.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/items/availability":{"put":{"operationId":"catalog.setCatalogItemAvailability","summary":"Set an item's availability per venue","description":"Immediately sets item availability and station overrides at the named venues. These overrides are separate from the organization-wide item defaults and remain subject to category availability gates.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"overrides":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"isAvailable":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"stationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["locationId","isAvailable"]}}},"required":["catalogItemId","overrides"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/setCatalogRowsAvailability":{"post":{"operationId":"catalog.setCatalogRowsAvailability","summary":"Set availability for selected catalog rows","description":"Immediately updates selected categories and items at the named venues and optionally their organization-wide online-menu visibility in one transaction. Category gates affect descendants without replacing their own availability settings.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"categoryIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"catalogItemIds":{"type":"array","maxItems":5000,"items":{"type":"string","minLength":1}},"locations":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"isAvailable":{"type":"boolean"}},"required":["locationId","isAvailable"]}},"isAvailableByDefault":{"type":"boolean"},"isShownInOnlineMenu":{"type":"boolean"}},"required":["organizationId","categoryIds","catalogItemIds","locations"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/setCategoryAvailability":{"post":{"operationId":"catalog.setCategoryAvailability","summary":"Set category availability per venue","description":"Immediately sets category gates at the named venues. Descendants follow the gate without changing their own settings, which apply again when the category reopens.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"categoryId":{"type":"string","minLength":1},"overrides":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"isAvailable":{"type":"boolean"}},"required":["locationId","isAvailable"]}}},"required":["categoryId","overrides"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/sync":{"post":{"operationId":"catalog.sync","description":"Reads the catalog.sync procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"includeArchived":{"type":"boolean"},"locationId":{"type":"string","minLength":1},"since":{"type":"string","pattern":"^\\d{1,19}$"}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/listCatalogLabels":{"post":{"operationId":"catalog.listCatalogLabels","description":"Reads the catalog.listCatalogLabels procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/createCatalogLabel":{"post":{"operationId":"catalog.createCatalogLabel","description":"Runs the catalog.createCatalogLabel procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":40}},"required":["organizationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/listStations":{"post":{"operationId":"catalog.listStations","description":"Reads the catalog.listStations procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/createStation":{"post":{"operationId":"catalog.createStation","description":"Runs the catalog.createStation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"symbol":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"const":"icon"},"value":{"enum":["chef-hat","flame","cooking-pot","utensils-crossed","coffee","wine","pizza","cake-slice","snowflake","soup"],"type":"string"}},"required":["type","value"]},{"type":"object","properties":{"type":{"const":"emoji"},"value":{"enum":["👨‍🍳","🔥","🍳","🍲","🥗","🍕","🍣","🍰","☕","🍹"],"type":"string"}},"required":["type","value"]}]},{"type":"null"}],"default":null}},"required":["locationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/updateStation":{"post":{"operationId":"catalog.updateStation","description":"Runs the catalog.updateStation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"symbol":{"anyOf":[{"anyOf":[{"type":"object","properties":{"type":{"const":"icon"},"value":{"enum":["chef-hat","flame","cooking-pot","utensils-crossed","coffee","wine","pizza","cake-slice","snowflake","soup"],"type":"string"}},"required":["type","value"]},{"type":"object","properties":{"type":{"const":"emoji"},"value":{"enum":["👨‍🍳","🔥","🍳","🍲","🥗","🍕","🍣","🍰","☕","🍹"],"type":"string"}},"required":["type","value"]}]},{"type":"null"}]}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/deleteStation":{"post":{"operationId":"catalog.deleteStation","description":"Runs the catalog.deleteStation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/createModifierGroup":{"post":{"operationId":"catalog.createModifierGroup","summary":"Create a reusable modifier set","description":"Creates an organization-wide set without attaching it to items. A required set needs minSelect >= 1; maxSelect must be null or >= minSelect.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"selectionType":{"enum":["single","multiple"],"type":"string"},"isRequired":{"type":"boolean"},"minSelect":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxSelect":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["organizationId","name","selectionType"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/updateModifierGroup":{"post":{"operationId":"catalog.updateModifierGroup","summary":"Edit a shared modifier set","description":"Changes the set wherever its options are attached. Omitted fields stay unchanged. Effective minSelect/maxSelect must remain compatible, and required sets need minSelect >= 1.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"isAvailableByDefault":{"type":"boolean"},"position":{"type":"number"},"selectionType":{"enum":["single","multiple"],"type":"string"},"isRequired":{"type":"boolean"},"minSelect":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxSelect":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveModifierGroup":{"post":{"operationId":"catalog.archiveModifierGroup","summary":"Archive a modifier set across all items","description":"Hides the set and its options everywhere while retaining rows and attachments for restoration. To remove the set from one item, use detachModifierGroupFromCatalogItem.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/restoreModifierGroup":{"post":{"operationId":"catalog.restoreModifierGroup","summary":"Restore an archived modifier set","description":"Clears the set's archive flag, retaining its existing attachments. Separately archived options and availability switches remain unchanged.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/createModifier":{"post":{"operationId":"catalog.createModifier","summary":"Create a reusable modifier option","description":"Creates an option in the organization's set, or loose when modifierGroupId is null. priceDeltaCents is a nonnegative additive price in cents. A grouped option immediately appears on items assigned to its set; a loose option needs an explicit assignment.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"modifierGroupId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"id":{"type":"string","format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":120},"priceDeltaCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["organizationId","modifierGroupId","name","priceDeltaCents"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/updateModifier":{"post":{"operationId":"catalog.updateModifier","summary":"Edit a shared modifier option","description":"Updates the option across all attached items. priceDeltaCents is additive cents. Omitted fields stay unchanged; changing modifierGroupId changes which assigned sets expose it. Moving it to null does not create standalone item assignments.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"modifierGroupId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"isAvailableByDefault":{"type":"boolean"},"position":{"type":"number"},"name":{"type":"string","minLength":1,"maxLength":120},"priceDeltaCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveModifier":{"post":{"operationId":"catalog.archiveModifier","summary":"Archive a modifier option across all items","description":"Hides this option everywhere while retaining its row and attachments for restoration. Detaching a grouped assignment from one item removes the whole set; standalone assignments detach individually.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/restoreModifier":{"post":{"operationId":"catalog.restoreModifier","summary":"Restore an archived modifier option","description":"Clears the option's archive flag. Existing attachments remain; an archived or unavailable parent set can still hide the option.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/attachModifierToCatalogItem":{"post":{"operationId":"catalog.attachModifierToCatalogItem","summary":"Attach an option or its whole set to one item","description":"Attaches a standalone option or the whole current set of a grouped option; returns the actual assignment ID.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"modifierId":{"type":"string","minLength":1}},"required":["catalogItemId","modifierId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/detachModifierFromCatalogItem":{"post":{"operationId":"catalog.detachModifierFromCatalogItem","summary":"Remove a modifier assignment from one item","description":"Detaches a standalone assignment or the entire set resolved by a set assignment, effective option, or retained option-link ID. Stale identifiers are refused.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemModifierId":{"type":"string","minLength":1,"description":"Standalone link ID, set-assignment ID, effective group-option ID, or retained grouped link ID with a current assignment; grouped identifiers address the whole set."}},"required":["catalogItemModifierId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/setItemModifierAvailability":{"post":{"operationId":"catalog.setItemModifierAvailability","summary":"Set one modifier assignment’s availability","description":"Switches a standalone assignment or the entire set resolved by a set assignment, effective option, or retained option-link ID.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemModifierId":{"type":"string","minLength":1,"description":"Standalone link ID, set-assignment ID, effective group-option ID, or retained grouped link ID with a current assignment; grouped identifiers address the whole set."},"isAvailable":{"type":"boolean"}},"required":["catalogItemModifierId","isAvailable"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/reorderCatalogItemModifiers":{"post":{"operationId":"catalog.reorderCatalogItemModifiers","summary":"Reorder one item’s modifier assignments","description":"Orders standalone and whole-set assignments. Option aliases for the same set use the first positions entry; explicit groupPositions override that set position.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"positions":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"catalogItemModifierId":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["catalogItemModifierId","position"]},"default":[],"description":"Assignment identifiers; multiple option aliases for one set use their first array entry."},"groupPositions":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"catalogItemModifierGroupId":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["catalogItemModifierGroupId","position"]},"default":[]}},"required":["catalogItemId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/attachModifierGroupToCatalogItem":{"post":{"operationId":"catalog.attachModifierGroupToCatalogItem","summary":"Attach a live modifier set to one item","description":"Attaches a live set, including an empty set. attachedCount counts set assignments, not options.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"modifierGroupId":{"type":"string","minLength":1}},"required":["catalogItemId","modifierGroupId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/detachModifierGroupFromCatalogItem":{"post":{"operationId":"catalog.detachModifierGroupFromCatalogItem","summary":"Remove a live modifier set from one item","description":"Detaches the live set assignment. detachedCount counts assignments, not options.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"modifierGroupId":{"type":"string","minLength":1}},"required":["catalogItemId","modifierGroupId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/setItemModifierGroupAvailability":{"post":{"operationId":"catalog.setItemModifierGroupAvailability","summary":"Set availability of an item’s modifier set","description":"Switches the live set assignment. updatedCount counts assignments, not options.","tags":["catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"modifierGroupId":{"type":"string","minLength":1},"isAvailable":{"type":"boolean"}},"required":["catalogItemId","modifierGroupId","isAvailable"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveModifierRows":{"post":{"operationId":"catalog.archiveModifierRows","summary":"Archive selected modifier sets and options","description":"Archives a same-organization selection atomically across all items, retaining rows and assignments. Returns only IDs newly archived by this call.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"modifierGroupIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"modifierIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}}},"required":["organizationId","modifierGroupIds","modifierIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/setModifierRowsAvailability":{"post":{"operationId":"catalog.setModifierRowsAvailability","summary":"Set availability of shared modifier sets and options","description":"Sets one organization-wide availability value on the selected sets and options. Preserves each item's assignment switches; this does not attach, detach or archive rows.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"modifierGroupIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"modifierIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"isAvailableByDefault":{"type":"boolean"}},"required":["organizationId","modifierGroupIds","modifierIds","isAvailableByDefault"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/moveModifierRows":{"post":{"operationId":"catalog.moveModifierRows","summary":"Move modifier options into or out of a set","description":"Moves live options to a same-organization set, or the catalog root when modifierGroupId is null. Keeps option IDs; effective assignments follow current set membership. Loose assignments promote to the destination set; moving out creates no standalone assignments.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"modifierIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"modifierGroupId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["organizationId","modifierIds","modifierGroupId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/repositionModifierRows":{"post":{"operationId":"catalog.repositionModifierRows","summary":"Reposition modifier sets and options","description":"Writes the supplied positions to organization-wide sets and options in one transaction, moving the options to modifierGroupId; null means the catalog root. Sets are only positioned at the root.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"modifierGroupId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"modifierGroups":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["id","position"]}},"modifiers":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["id","position"]}}},"required":["organizationId","modifierGroupId","modifierGroups","modifiers"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"modifierGroupIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"modifierIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}}},"required":["modifierGroupIds","modifierIds"]}}}}}}},"/api/public/v1/catalog/createItemVariation":{"post":{"operationId":"catalog.createItemVariation","summary":"Create an item variation","description":"Creates a named size in the organization-wide live catalog. priceCents is an absolute price in minor currency units. The first named size reuses the unnamed pricing row and returns its ID; an omitted price preserves or copies an existing price.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"id":{"type":"string","format":"uuid"},"isDefault":{"type":"boolean"},"isAvailableByDefault":{"type":"boolean"},"name":{"type":"string","minLength":1,"maxLength":120},"priceCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"calories":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["catalogItemId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/updateItemVariation":{"post":{"operationId":"catalog.updateItemVariation","summary":"Edit an item variation or price","description":"Updates only supplied fields on this organization-wide live variation. priceCents is an absolute price in minor currency units, not a modifier surcharge. Setting isDefault clears the other defaults for this item.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"isDefault":{"type":"boolean"},"isAvailableByDefault":{"type":"boolean"},"position":{"type":"number"},"name":{"type":"string","minLength":1,"maxLength":120},"priceCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"calories":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"videoUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveItemVariation":{"post":{"operationId":"catalog.archiveItemVariation","summary":"Archive an item variation","description":"Immediately removes this variation from the live catalog. Removing the last named variation instead clears its name, keeps its price, and enables its default availability. The last unnamed pricing row cannot be archived. Keep blankedSibling from the response for restoreItemVariation.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/restoreItemVariation":{"post":{"operationId":"catalog.restoreItemVariation","summary":"Restore an item variation","description":"Restores this variation in the organization-wide live catalog. Pass blankedSibling from archiveItemVariation when undoing removal of the last named variation to restore its name and availability.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"blankedSibling":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"isAvailableByDefault":{"type":"boolean"}},"required":["id","name","isAvailableByDefault"]}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/duplicateCatalogItem":{"post":{"operationId":"catalog.duplicateCatalogItem","summary":"Duplicate a catalog item","description":"Creates a live organization-wide copy below the original, including variations, tags, availability and links to the same shared modifiers. Identity fields such as barcodes and SKUs are cleared. Only live items can be copied.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["id","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/duplicateCategory":{"post":{"operationId":"catalog.duplicateCategory","summary":"Duplicate a category and its contents","description":"Copies this category and its live subtree into the organization-wide live catalog in one transaction, including items and variations. Modifier links still reference shared options. The copy is placed below the original.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["id","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/archiveCatalogRows":{"post":{"operationId":"catalog.archiveCatalogRows","summary":"Archive selected catalog rows","description":"Immediately archives the selected organization-wide categories, items and variations in one transaction. Category children are lifted to the parent; selecting a category does not archive its subtree. Selecting every live variation of an item archives all but its earliest-created one, which instead loses its name, keeps its price, and enables its default availability. Keep the returned IDs, blankedSiblings and category move records for restoreCatalogRows.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"categoryIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"itemIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"variationIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1},"default":[]}},"required":["organizationId","categoryIds","itemIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/moveCatalogRows":{"post":{"operationId":"catalog.moveCatalogRows","summary":"Move catalog categories and items","description":"Moves the selected organization-wide live catalog rows to parentCategoryId with the supplied positions in one transaction; null means the root. Category URL slugs may change to avoid conflicts. Venue-specific QR-menu order overrides remain separate.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"parentCategoryId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"categories":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["id","position"]}},"items":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["id","position"]}}},"required":["organizationId","parentCategoryId","categories","items"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalog/restoreCatalogRows":{"post":{"operationId":"catalog.restoreCatalogRows","summary":"Restore a batch of catalog rows","description":"Restores organization-wide catalog rows in one transaction using the IDs, blankedSiblings and category move records returned by archiveCatalogRows. Categories readopt moved children only when those children still remain at the expected parent. Pass blankedSiblings back unchanged to restore those variations' names and availability. Returns BAD_REQUEST with refusal blankedSiblingsMismatch when a blankedSiblings entry is no longer its item's unnamed variation, or when restoring would leave an unnamed variation beside a named one because blankedSiblings omits it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"itemIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"variationIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1},"default":[]},"blankedSiblings":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"isAvailableByDefault":{"type":"boolean"}},"required":["id","name","isAvailableByDefault"]},"default":[]},"categories":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"movedCategoryIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}},"movedItemIds":{"type":"array","maxItems":500,"items":{"type":"string","minLength":1}}},"required":["id","movedCategoryIds","movedItemIds"]}}},"required":["organizationId","itemIds","categories"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/create":{"post":{"operationId":"catalogImports.create","description":"Runs the catalogImports.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"sources":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"fileName":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"enum":["application/pdf","application/zip","image/jpeg","image/png","image/webp","text/csv","text/tab-separated-values","text/plain","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],"type":"string"},"bytes":{"type":"integer","minimum":1,"maximum":26214400},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["fileName","mediaType","bytes"],"additionalProperties":false}}},"required":["organizationId","sources"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/attach":{"post":{"operationId":"catalogImports.attach","description":"Runs the catalogImports.attach procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"},"sourceId":{"type":"string","format":"uuid"},"sourceUrl":{"type":"string","maxLength":4096,"format":"uri"}},"required":["organizationId","importId","sourceId","sourceUrl"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/initialize":{"post":{"operationId":"catalogImports.initialize","description":"Runs the catalogImports.initialize procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"},"sourceId":{"type":"string","format":"uuid"}},"required":["organizationId","importId","sourceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/complete":{"post":{"operationId":"catalogImports.complete","description":"Runs the catalogImports.complete procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"},"sourceId":{"type":"string","format":"uuid"}},"required":["organizationId","importId","sourceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/submit":{"post":{"operationId":"catalogImports.submit","description":"Runs the catalogImports.submit procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"}},"required":["organizationId","importId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/active":{"post":{"operationId":"catalogImports.active","description":"Reads the catalogImports.active procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/catalogImports/status":{"post":{"operationId":"catalogImports.status","description":"Reads the catalogImports.status procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"}},"required":["organizationId","importId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/clientRefresh/request":{"post":{"operationId":"clientRefresh.request","description":"Runs the clientRefresh.request procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/create":{"post":{"operationId":"customerImports.create","description":"Runs the customerImports.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"sources":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"fileName":{"type":"string","minLength":1,"maxLength":255},"mediaType":{"enum":["application/pdf","application/zip","image/jpeg","image/png","image/webp","text/csv","text/tab-separated-values","text/plain","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.wordprocessingml.document"],"type":"string"},"bytes":{"type":"integer","minimum":1,"maximum":26214400},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["fileName","mediaType","bytes"],"additionalProperties":false}}},"required":["organizationId","sources"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/attach":{"post":{"operationId":"customerImports.attach","description":"Runs the customerImports.attach procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"},"sourceId":{"type":"string","format":"uuid"},"sourceUrl":{"type":"string","maxLength":4096,"format":"uri"}},"required":["organizationId","importId","sourceId","sourceUrl"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/initialize":{"post":{"operationId":"customerImports.initialize","description":"Runs the customerImports.initialize procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"},"sourceId":{"type":"string","format":"uuid"}},"required":["organizationId","importId","sourceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/complete":{"post":{"operationId":"customerImports.complete","description":"Runs the customerImports.complete procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"},"sourceId":{"type":"string","format":"uuid"}},"required":["organizationId","importId","sourceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/submit":{"post":{"operationId":"customerImports.submit","description":"Runs the customerImports.submit procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"}},"required":["organizationId","importId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/latest":{"post":{"operationId":"customerImports.latest","description":"Reads the customerImports.latest procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customerImports/status":{"post":{"operationId":"customerImports.status","description":"Reads the customerImports.status procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"}},"required":["organizationId","importId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/list":{"post":{"operationId":"customers.list","description":"Reads the customers.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"query":{"type":"string","maxLength":120},"page":{"type":"integer","minimum":1,"maximum":9007199254740991,"default":1},"segment":{"enum":["contactOnly","new","oneTime","active","atRisk","lost"],"type":"string"},"badge":{"enum":["regular","vip"],"type":"string"},"timeZone":{"type":"string","minLength":1},"sort":{"enum":["created","totalSpent","visits","lastVisit"],"type":"string"},"direction":{"enum":["asc","desc"],"type":"string"},"createdFrom":{"type":"string","format":"date"},"createdTo":{"type":"string","format":"date"},"source":{"enum":["manual","import","pos"],"type":"string"},"birthdayFrom":{"type":"string","pattern":"^(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"birthdayTo":{"type":"string","pattern":"^(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"orderedFrom":{"type":"string","format":"date"},"orderedTo":{"type":"string","format":"date"},"firstOrderFrom":{"type":"string","format":"date"},"firstOrderTo":{"type":"string","format":"date"},"lastOrderFrom":{"type":"string","format":"date"},"lastOrderTo":{"type":"string","format":"date"},"minOrders":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxOrders":{"type":"integer","minimum":0,"maximum":9007199254740991},"minSpentCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxSpentCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"categoryId":{"type":"string","minLength":1,"maxLength":64},"catalogItemId":{"type":"string","minLength":1,"maxLength":64},"locationId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","timeZone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/composition":{"post":{"operationId":"customers.composition","description":"Reads the customers.composition procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"query":{"type":"string","maxLength":120},"timeZone":{"type":"string","minLength":1},"createdFrom":{"type":"string","format":"date"},"createdTo":{"type":"string","format":"date"},"source":{"enum":["manual","import","pos"],"type":"string"},"birthdayFrom":{"type":"string","pattern":"^(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"birthdayTo":{"type":"string","pattern":"^(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$"},"orderedFrom":{"type":"string","format":"date"},"orderedTo":{"type":"string","format":"date"},"firstOrderFrom":{"type":"string","format":"date"},"firstOrderTo":{"type":"string","format":"date"},"lastOrderFrom":{"type":"string","format":"date"},"lastOrderTo":{"type":"string","format":"date"},"minOrders":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxOrders":{"type":"integer","minimum":0,"maximum":9007199254740991},"minSpentCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxSpentCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"categoryId":{"type":"string","minLength":1,"maxLength":64},"catalogItemId":{"type":"string","minLength":1,"maxLength":64},"locationId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/search":{"post":{"operationId":"customers.search","description":"Reads the customers.search procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"query":{"type":"string","minLength":1,"maxLength":120}},"required":["organizationId","query"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/tillSearch":{"post":{"operationId":"customers.tillSearch","description":"Reads the customers.tillSearch procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"mode":{"enum":["phone","name"],"type":"string"},"query":{"type":"string","maxLength":120}},"required":["organizationId","mode","query"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"customers":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"isExact":{"type":"boolean"}},"required":["id","name","phone","isExact"]}}},"required":["customers"]}}}}}}},"/api/public/v1/customers/tillPhoneCountry":{"post":{"operationId":"customers.tillPhoneCountry","description":"Reads the customers.tillPhoneCountry procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"phoneCountry":{"anyOf":[{"not":{}},{"type":"null"}]}},"required":["phoneCountry"]}}}}}}},"/api/public/v1/customers/tillCard":{"post":{"operationId":"customers.tillCard","description":"Reads the customers.tillCard procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"profileId":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"visits":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"usualOrder":{"type":"array","items":{"type":"string"}},"latestNote":{"anyOf":[{"type":"string"},{"type":"null"}]},"loyalty":{"anyOf":[{"anyOf":[{"type":"object","properties":{"status":{"const":"notMember"},"hasPhone":{"type":"boolean"}},"required":["status","hasPhone"]},{"type":"object","properties":{"status":{"const":"member"},"balanceHundredths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"cashbackBasisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"nextExpiry":{"anyOf":[{"type":"object","properties":{"amountHundredths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"date":{"type":"string","format":"date"}},"required":["amountHundredths","date"]},{"type":"null"}]}},"required":["status","balanceHundredths","cashbackBasisPoints","nextExpiry"]}]},{"type":"null"}]}},"required":["profileId","name","phone","visits","usualOrder","latestNote","loyalty"]}}}}}}},"/api/public/v1/customers/tillAddresses":{"post":{"operationId":"customers.tillAddresses","description":"Reads the customers.tillAddresses procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"area":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"isDefault":{"type":"boolean"}},"required":["id","address","area","city","isDefault"]}}},"required":["addresses"]}}}}}}},"/api/public/v1/customers/tillLoyaltyProgram":{"post":{"operationId":"customers.tillLoyaltyProgram","description":"Reads the customers.tillLoyaltyProgram procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"isLive":{"type":"boolean"}},"required":["isLive"]}}}}}}},"/api/public/v1/customers/joinLoyaltyAtTill":{"post":{"operationId":"customers.joinLoyaltyAtTill","description":"Runs the customers.joinLoyaltyAtTill procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/customers/addNoteAtTill":{"post":{"operationId":"customers.addNoteAtTill","description":"Runs the customers.addNoteAtTill procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"text":{"type":"string","minLength":1,"maxLength":500}},"required":["orderId","text"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/customers/create":{"post":{"operationId":"customers.create","description":"Runs the customers.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"phone":{"type":"string","minLength":1,"maxLength":40},"email":{"type":"string","format":"email"},"dateOfBirth":{"type":"string","format":"date"},"comment":{"type":"string","maxLength":500}},"required":["organizationId","phone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/createAtTill":{"post":{"operationId":"customers.createAtTill","description":"Runs the customers.createAtTill procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"phone":{"type":"string","minLength":1,"maxLength":40},"email":{"type":"string","format":"email"},"dateOfBirth":{"type":"string","format":"date"},"comment":{"type":"string","maxLength":500},"joinLoyalty":{"type":"boolean"}},"required":["organizationId","phone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","phone"]}}}}}}},"/api/public/v1/customers/profile":{"post":{"operationId":"customers.profile","description":"Reads the customers.profile procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/loyalty":{"post":{"operationId":"customers.loyalty","description":"Reads the customers.loyalty procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"programStatus":{"anyOf":[{"enum":["draft","live","stopped"],"type":"string"},{"type":"null"}]},"member":{"anyOf":[{"type":"object","properties":{"joinedAt":{"type":"string","format":"date-time","x-native-type":"date"},"balanceHundredths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["joinedAt","balanceHundredths"]},{"type":"null"}]}},"required":["programStatus","member"]}}}}}}},"/api/public/v1/customers/adjustLoyalty":{"post":{"operationId":"customers.adjustLoyalty","description":"Runs the customers.adjustLoyalty procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"direction":{"enum":["add","remove"],"type":"string"},"amountHundredths":{"type":"integer","minimum":1,"maximum":100000000},"reasonCode":{"enum":["goodwill","staff_error","promotion","program_migration"],"type":"string"},"note":{"type":"string","maxLength":500}},"required":["organizationId","customerId","direction","amountHundredths","reasonCode"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"balanceHundredths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["balanceHundredths"]}}}}}}},"/api/public/v1/customers/topItems":{"post":{"operationId":"customers.topItems","description":"Reads the customers.topItems procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/timelinePage":{"post":{"operationId":"customers.timelinePage","description":"Reads the customers.timelinePage procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"tab":{"enum":["all","orders","notes","loyalty"],"type":"string"},"timeZone":{"type":"string"},"page":{"type":"integer","minimum":1,"maximum":9007199254740991,"default":1},"withLoyalty":{"type":"boolean"}},"required":["organizationId","customerId","tab","timeZone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","x-native-type":"date"},"kind":{"const":"order"},"orderNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"totalCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"locationName":{"type":"string"},"items":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","occurredAt","kind","orderNumber","totalCents","locationName","items"]},{"type":"object","properties":{"id":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","x-native-type":"date"},"kind":{"const":"note"},"body":{"type":"string"},"authorName":{"anyOf":[{"type":"string"},{"type":"null"}]},"source":{"enum":["manual","import","carriedOver"],"type":"string"}},"required":["id","occurredAt","kind","body","authorName","source"]},{"type":"object","properties":{"id":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","x-native-type":"date"},"kind":{"const":"created"},"source":{"anyOf":[{"enum":["manual","import","pos"],"type":"string"},{"type":"null"}]}},"required":["id","occurredAt","kind","source"]},{"type":"object","properties":{"id":{"type":"string"},"occurredAt":{"type":"string","format":"date-time","x-native-type":"date"},"kind":{"const":"loyalty"},"entryKind":{"enum":["welcome","earn","birthday","adjustment","redeem","earn_reversal","redeem_return","expiry"],"type":"string"},"amountHundredths":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"orderId":{"anyOf":[{"type":"string"},{"type":"null"}]},"orderNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"reasonCode":{"anyOf":[{"enum":["goodwill","staff_error","promotion","program_migration"],"type":"string"},{"type":"null"}]},"note":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","occurredAt","kind","entryKind","amountHundredths","orderId","orderNumber","reasonCode","note"]}]}},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"page":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"pageCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["rows","total","page","pageCount"]}}}}}}},"/api/public/v1/customers/notes":{"post":{"operationId":"customers.notes","description":"Reads the customers.notes procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/addNote":{"post":{"operationId":"customers.addNote","description":"Runs the customers.addNote procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"body":{"type":"string","minLength":1,"maxLength":500}},"required":["organizationId","customerId","body"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/update":{"post":{"operationId":"customers.update","description":"Runs the customers.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"name":{"anyOf":[{"type":"string","minLength":1,"maxLength":120},{"type":"null"}]},"phone":{"type":"string","minLength":1,"maxLength":40},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}]},"dateOfBirth":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}]}},"required":["organizationId","customerId","name","phone","dateOfBirth"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/customers/addAddress":{"post":{"operationId":"customers.addAddress","description":"Runs the customers.addAddress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"address":{"type":"string","maxLength":300},"area":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"city":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["organizationId","customerId","address","area","city"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"area":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"isDefault":{"type":"boolean"}},"required":["id","address","area","city","isDefault"]}}}}}}},"/api/public/v1/customers/updateAddress":{"post":{"operationId":"customers.updateAddress","description":"Runs the customers.updateAddress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"addressId":{"type":"string","minLength":1,"maxLength":64},"address":{"type":"string","maxLength":300},"area":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"city":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["organizationId","customerId","addressId","address","area","city"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"address":{"type":"string"},"area":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"isDefault":{"type":"boolean"}},"required":["id","address","area","city","isDefault"]}}}}}}},"/api/public/v1/customers/deleteAddress":{"post":{"operationId":"customers.deleteAddress","description":"Runs the customers.deleteAddress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"addressId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId","addressId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/customers/setDefaultAddress":{"post":{"operationId":"customers.setDefaultAddress","description":"Runs the customers.setDefaultAddress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64},"addressId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId","addressId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/customers/archive":{"post":{"operationId":"customers.archive","description":"Runs the customers.archive procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"customerId":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","customerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/demo/ensure":{"post":{"operationId":"demo.ensure","description":"Runs the demo.ensure procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"status":{"const":"ready"},"demoOrganizationId":{"type":"string","minLength":1}},"required":["status","demoOrganizationId"],"additionalProperties":false},{"type":"object","properties":{"status":{"const":"preparing"}},"required":["status"],"additionalProperties":false},{"type":"object","properties":{"status":{"const":"unavailable"}},"required":["status"],"additionalProperties":false}]}}}}}}},"/api/public/v1/demo/enter":{"post":{"operationId":"demo.enter","description":"Runs the demo.enter procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/demo/leave":{"post":{"operationId":"demo.leave","description":"Runs the demo.leave procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/loyalty/getProgram":{"post":{"operationId":"loyalty.getProgram","description":"Reads the loyalty.getProgram procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"status":{"enum":["draft","live","stopped"],"type":"string"},"settings":{"type":"object","properties":{"cashbackBasisPoints":{"type":"integer","minimum":1,"maximum":10000,"default":500},"expiryDays":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":365},"welcome":{"type":"object","properties":{"enabled":{"type":"boolean","default":true},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"default":1000},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"minRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0}},"default":{}},"maxRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"percent":{"type":"integer","minimum":1,"maximum":100,"default":100}},"default":{}},"birthday":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"happyHours":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"default":[]},"from":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"15:00"},"to":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"18:00"},"multiplierBasisPoints":{"type":"integer","minimum":10001,"maximum":100000,"default":15000}},"default":{}}}}},"required":["status","settings"]},{"type":"null"}]}}}}}}},"/api/public/v1/loyalty/launchProgram":{"post":{"operationId":"loyalty.launchProgram","description":"Runs the loyalty.launchProgram procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"settings":{"type":"object","properties":{"cashbackBasisPoints":{"type":"integer","minimum":1,"maximum":10000,"default":500},"expiryDays":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":365},"welcome":{"type":"object","properties":{"enabled":{"type":"boolean","default":true},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"default":1000},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"minRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0}},"default":{}},"maxRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"percent":{"type":"integer","minimum":1,"maximum":100,"default":100}},"default":{}},"birthday":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"happyHours":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"default":[]},"from":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"15:00"},"to":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"18:00"},"multiplierBasisPoints":{"type":"integer","minimum":10001,"maximum":100000,"default":15000}},"default":{}}}}},"required":["organizationId","settings"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["draft","live","stopped"],"type":"string"},"settings":{"type":"object","properties":{"cashbackBasisPoints":{"type":"integer","minimum":1,"maximum":10000,"default":500},"expiryDays":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":365},"welcome":{"type":"object","properties":{"enabled":{"type":"boolean","default":true},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"default":1000},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"minRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0}},"default":{}},"maxRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"percent":{"type":"integer","minimum":1,"maximum":100,"default":100}},"default":{}},"birthday":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"happyHours":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"default":[]},"from":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"15:00"},"to":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"18:00"},"multiplierBasisPoints":{"type":"integer","minimum":10001,"maximum":100000,"default":15000}},"default":{}}}}},"required":["status","settings"]}}}}}}},"/api/public/v1/loyalty/updateSettings":{"post":{"operationId":"loyalty.updateSettings","description":"Runs the loyalty.updateSettings procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"settings":{"type":"object","properties":{"cashbackBasisPoints":{"type":"integer","minimum":1,"maximum":10000,"default":500},"expiryDays":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":365},"welcome":{"type":"object","properties":{"enabled":{"type":"boolean","default":true},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"default":1000},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"minRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0}},"default":{}},"maxRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"percent":{"type":"integer","minimum":1,"maximum":100,"default":100}},"default":{}},"birthday":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"happyHours":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"default":[]},"from":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"15:00"},"to":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"18:00"},"multiplierBasisPoints":{"type":"integer","minimum":10001,"maximum":100000,"default":15000}},"default":{}}}}},"required":["organizationId","settings"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["draft","live","stopped"],"type":"string"},"settings":{"type":"object","properties":{"cashbackBasisPoints":{"type":"integer","minimum":1,"maximum":10000,"default":500},"expiryDays":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":365},"welcome":{"type":"object","properties":{"enabled":{"type":"boolean","default":true},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"default":1000},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"minRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0}},"default":{}},"maxRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"percent":{"type":"integer","minimum":1,"maximum":100,"default":100}},"default":{}},"birthday":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"happyHours":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"default":[]},"from":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"15:00"},"to":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"18:00"},"multiplierBasisPoints":{"type":"integer","minimum":10001,"maximum":100000,"default":15000}},"default":{}}}}},"required":["status","settings"]}}}}}}},"/api/public/v1/loyalty/setStatus":{"post":{"operationId":"loyalty.setStatus","description":"Runs the loyalty.setStatus procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"status":{"enum":["live","stopped"],"type":"string"}},"required":["organizationId","status"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"enum":["draft","live","stopped"],"type":"string"},"settings":{"type":"object","properties":{"cashbackBasisPoints":{"type":"integer","minimum":1,"maximum":10000,"default":500},"expiryDays":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":365},"welcome":{"type":"object","properties":{"enabled":{"type":"boolean","default":true},"points":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0,"default":1000},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"minRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0}},"default":{}},"maxRedemption":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"percent":{"type":"integer","minimum":1,"maximum":100,"default":100}},"default":{}},"birthday":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"points":{"type":"integer","minimum":0,"maximum":2147483647,"default":0},"days":{"type":"integer","minimum":-9007199254740991,"maximum":3650,"exclusiveMinimum":0,"default":30}},"default":{}},"happyHours":{"type":"object","properties":{"enabled":{"type":"boolean","default":false},"weekdays":{"type":"array","items":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"default":[]},"from":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"15:00"},"to":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$","default":"18:00"},"multiplierBasisPoints":{"type":"integer","minimum":10001,"maximum":100000,"default":15000}},"default":{}}}}},"required":["status","settings"]}}}}}}},"/api/public/v1/emenu/codes/{code}":{"get":{"operationId":"emenu.resolveCode","summary":"Resolve a printed QR code to its venue and table","description":"Reads the emenu.resolveCode procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["emenu"],"parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":40}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/venue":{"get":{"operationId":"emenu.venue","summary":"Read a venue's guest menu","description":"Returns the venue's published QR menu: categories and items ordered and styled by its published version, with names, prices and availability read live from the catalog. A venue that has never published answers not found; draft reorders and appearance reach guests only after emenu.publish.","tags":["emenu"],"parameters":[{"name":"organizationSlug","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":60},"allowEmptyValue":true,"allowReserved":true},{"name":"locationSlug","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":60},"allowEmptyValue":true,"allowReserved":true},{"name":"code","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":40},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/previewVenue":{"post":{"operationId":"emenu.previewVenue","description":"Reads the emenu.previewVenue procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationSlug":{"type":"string","minLength":1,"maxLength":60},"locationSlug":{"type":"string","minLength":1,"maxLength":60},"versionId":{"type":"string","minLength":1}},"required":["organizationSlug","locationSlug"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/item":{"post":{"operationId":"emenu.item","description":"Reads the emenu.item procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationSlug":{"type":"string","minLength":1,"maxLength":60},"locationSlug":{"type":"string","minLength":1,"maxLength":60},"catalogItemId":{"type":"string","minLength":1}},"required":["organizationSlug","locationSlug","catalogItemId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/tableOrder":{"post":{"operationId":"emenu.tableOrder","description":"Reads the emenu.tableOrder procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40}},"required":["code"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/listTableOrderStages":{"post":{"operationId":"emenu.listTableOrderStages","description":"Reads the emenu.listTableOrderStages procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"guestToken":{"type":"string","minLength":1,"maxLength":100}},"required":["code"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/tableBill":{"post":{"operationId":"emenu.tableBill","description":"Reads the emenu.tableBill procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"guestToken":{"type":"string","minLength":1,"maxLength":100}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/createGuestPaymentSession":{"post":{"operationId":"emenu.createGuestPaymentSession","summary":"Reserve a guest's share of a table bill and open its checkout","description":"Reserves the requested share (full, equal, items or custom) against the table's live bill and opens a MyFatoorah checkout for it. The first share held for the current party, paid or still being paid, fixes the mode for the rest of the party (refusal splitModeMismatch otherwise), and for equal also the way-count: any other ways value is refused as splitWaysMismatch, even after earlier shares were paid, so a paid split's remainder is never re-split. A slot already held is refused as equalSlotClaimed. While the table's open party is one order, the till's own split parts on it count as held shares too: a Split equally part holds its slot and a By items part holds its lines (refusal itemAlreadyClaimed for a line it took), and either fixes the mode as a guest's share does. With several open orders at the table the till's parts are its order's own and are not counted. An optional tip (a venue QR preset by its key, or a custom amount in cents) is priced on the reserved share and charged with it, never inside it; it is refused as tipsOff where the venue's QR tips are off and tipChanged for a preset the venue no longer offers, and a changed tip opens a new session.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"mode":{"const":"full"},"guestToken":{"type":"string","minLength":1,"maxLength":100},"tip":{"anyOf":[{"type":"object","properties":{"kind":{"const":"preset"},"key":{"type":"string","minLength":1,"maxLength":40}},"required":["kind","key"]},{"type":"object","properties":{"kind":{"const":"custom"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}},"required":["code","mode","guestToken"]},{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"mode":{"const":"equal"},"guestToken":{"type":"string","minLength":1,"maxLength":100},"ways":{"type":"integer","minimum":1,"maximum":20},"slotIndex":{"type":"integer","minimum":1,"maximum":9007199254740991},"tip":{"anyOf":[{"type":"object","properties":{"kind":{"const":"preset"},"key":{"type":"string","minLength":1,"maxLength":40}},"required":["kind","key"]},{"type":"object","properties":{"kind":{"const":"custom"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}},"required":["code","mode","guestToken","ways","slotIndex"]},{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"mode":{"const":"items"},"guestToken":{"type":"string","minLength":1,"maxLength":100},"items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":1,"maximum":99}},"tip":{"anyOf":[{"type":"object","properties":{"kind":{"const":"preset"},"key":{"type":"string","minLength":1,"maxLength":40}},"required":["kind","key"]},{"type":"object","properties":{"kind":{"const":"custom"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}},"required":["code","mode","guestToken","items"]},{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"mode":{"const":"custom"},"guestToken":{"type":"string","minLength":1,"maxLength":100},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"tip":{"anyOf":[{"type":"object","properties":{"kind":{"const":"preset"},"key":{"type":"string","minLength":1,"maxLength":40}},"required":["kind","key"]},{"type":"object","properties":{"kind":{"const":"custom"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}},"required":["code","mode","guestToken","amountCents"]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/createGuestPrepaySession":{"post":{"operationId":"emenu.createGuestPrepaySession","description":"Runs the emenu.createGuestPrepaySession procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"lines":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"quantity":{"type":"integer","minimum":1,"maximum":99},"notes":{"type":"string","maxLength":500},"itemVariationId":{"type":"string","minLength":1},"modifierIds":{"type":"array","maxItems":12,"items":{"type":"string","minLength":1}}},"required":["catalogItemId","quantity"]}},"guestToken":{"type":"string","minLength":1,"maxLength":100},"tip":{"anyOf":[{"type":"object","properties":{"kind":{"const":"preset"},"key":{"type":"string","minLength":1,"maxLength":40}},"required":["kind","key"]},{"type":"object","properties":{"kind":{"const":"custom"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}},"required":["code","lines","guestToken"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/executeGuestPaymentCharge":{"post":{"operationId":"emenu.executeGuestPaymentCharge","description":"Runs the emenu.executeGuestPaymentCharge procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"sessionId":{"type":"string","minLength":1}},"required":["code","sessionId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/cancelGuestPaymentSession":{"post":{"operationId":"emenu.cancelGuestPaymentSession","description":"Runs the emenu.cancelGuestPaymentSession procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"sessionId":{"type":"string","minLength":1},"guestToken":{"type":"string","minLength":1,"maxLength":100}},"required":["code","sessionId","guestToken"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/guestPaymentAttemptOutcome":{"post":{"operationId":"emenu.guestPaymentAttemptOutcome","description":"Reads the emenu.guestPaymentAttemptOutcome procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"guestToken":{"type":"string","minLength":1,"maxLength":100},"attemptId":{"type":"string","minLength":1}},"required":["code","guestToken","attemptId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/guestPaymentDocuments":{"post":{"operationId":"emenu.guestPaymentDocuments","description":"Reads the emenu.guestPaymentDocuments procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"guestToken":{"type":"string","minLength":1,"maxLength":100}},"required":["code","guestToken"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/guestPaymentReceipt":{"post":{"operationId":"emenu.guestPaymentReceipt","description":"Reads the emenu.guestPaymentReceipt procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"guestToken":{"type":"string","minLength":1,"maxLength":100},"receiptId":{"type":"string","minLength":1,"maxLength":100}},"required":["code","guestToken","receiptId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/guestInvoice":{"post":{"operationId":"emenu.guestInvoice","description":"Reads the emenu.guestInvoice procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"guestToken":{"type":"string","minLength":1,"maxLength":100},"invoiceId":{"type":"string","minLength":1,"maxLength":100}},"required":["code","guestToken","invoiceId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/orders":{"post":{"operationId":"emenu.submitOrder","summary":"Submit a guest order from a QR code","description":"Runs the emenu.submitOrder procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["emenu"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":40},"idempotencyKey":{"type":"string","format":"uuid"},"lines":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"catalogItemId":{"type":"string","minLength":1},"quantity":{"type":"integer","minimum":1,"maximum":99},"notes":{"type":"string","maxLength":500},"itemVariationId":{"type":"string","minLength":1},"modifierIds":{"type":"array","maxItems":12,"items":{"type":"string","minLength":1}}},"required":["catalogItemId","quantity"]}},"captchaToken":{"type":"string","maxLength":2048}},"required":["code","idempotencyKey","lines"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/getVenueUrl":{"post":{"operationId":"emenu.getVenueUrl","description":"Reads the emenu.getVenueUrl procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/getPreviewConfig":{"post":{"operationId":"emenu.getPreviewConfig","description":"Reads the emenu.getPreviewConfig procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/getPreviewTable":{"post":{"operationId":"emenu.getPreviewTable","description":"Reads the emenu.getPreviewTable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/listPrintedCodes":{"post":{"operationId":"emenu.listPrintedCodes","description":"Reads the emenu.listPrintedCodes procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/reassignCode":{"post":{"operationId":"emenu.reassignCode","description":"Runs the emenu.reassignCode procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"printedCodeId":{"type":"string","minLength":1},"tableId":{"type":"string","minLength":1}},"required":["printedCodeId","tableId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/unassignCode":{"post":{"operationId":"emenu.unassignCode","description":"Runs the emenu.unassignCode procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"printedCodeId":{"type":"string","minLength":1}},"required":["printedCodeId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/getQrDesign":{"post":{"operationId":"emenu.getQrDesign","description":"Reads the emenu.getQrDesign procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/getOutletInfo":{"post":{"operationId":"emenu.getOutletInfo","description":"Reads the emenu.getOutletInfo procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/saveOutletInfo":{"post":{"operationId":"emenu.saveOutletInfo","description":"Runs the emenu.saveOutletInfo procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"googleMapsUrl":{"type":"string","maxLength":2048},"website":{"type":"string","maxLength":2048},"instagram":{"type":"string","maxLength":120},"customLinks":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"label":{"type":"string","maxLength":60},"url":{"type":"string","maxLength":2048}},"required":["label","url"]}}},"required":["locationId","googleMapsUrl","website","instagram","customLinks"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/getAppearance":{"post":{"operationId":"emenu.getAppearance","description":"Reads the emenu.getAppearance procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/saveAppearance":{"post":{"operationId":"emenu.saveAppearance","description":"Runs the emenu.saveAppearance procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"appearance":{"type":"object","properties":{"logoUrl":{"anyOf":[{"type":"string","maxLength":262144},{"type":"null"}]},"background":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"backgroundImageUrl":{"anyOf":[{"type":"string","maxLength":262144},{"type":"null"}]},"itemGridColumns":{"anyOf":[{"const":1},{"const":2},{"const":3}]}},"required":["logoUrl","background","backgroundImageUrl","itemGridColumns"]}},"required":["locationId","appearance"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"logoUrl":{"anyOf":[{"type":"string","maxLength":262144},{"type":"null"}]},"background":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"backgroundImageUrl":{"anyOf":[{"type":"string","maxLength":262144},{"type":"null"}]},"itemGridColumns":{"anyOf":[{"const":1},{"const":2},{"const":3}]}},"required":["logoUrl","background","backgroundImageUrl","itemGridColumns"]}}}}}}},"/api/public/v1/emenu/contentOrder":{"post":{"operationId":"emenu.contentOrder","summary":"Read venue QR-menu order","description":"Returns QR-menu position overrides for this venue. These are separate from organization-wide catalog/POS positions; catalog positions apply where no override exists.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/listContent":{"post":{"operationId":"emenu.listContent","summary":"Read venue QR-menu content and placement","description":"Returns live catalog categories and items with effective QR-menu positions and on-menu flags at this venue. Off-menu and unavailable items are included; uncategorized items appear in a synthetic category. Content comes directly from the organization-wide catalog; positions are the venue's draft, which guests see once published.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/moveCategory":{"post":{"operationId":"emenu.moveCategory","summary":"Reorder a category on a venue QR menu","description":"Sets this category position in the venue's QR-menu draft only, leaving catalog/POS order and other venues unchanged; guests see it once emenu.publish publishes the draft. Accepts the synthetic Uncategorized category ID returned by listContent.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"categoryId":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["locationId","categoryId","position"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/moveItem":{"post":{"operationId":"emenu.moveItem","summary":"Reorder an item on a venue QR menu","description":"Sets this item position in the venue's QR-menu draft only, leaving its catalog category, catalog/POS order and other venues unchanged; guests see it once emenu.publish publishes the draft.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"catalogItemId":{"type":"string","minLength":1},"position":{"type":"number"}},"required":["locationId","catalogItemId","position"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/emenu/publish":{"post":{"operationId":"emenu.publish","summary":"Publish the venue's QR menu","description":"Freezes the venue's draft QR-menu order and appearance as the version guests see, archiving the version published before it. Catalog content is never versioned.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"name":{"type":"string","maxLength":60}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","publishedAt"]}}}}}}},"/api/public/v1/emenu/restoreVersion":{"post":{"operationId":"emenu.restoreVersion","summary":"Restore a published QR-menu version","description":"Publishes a copy of an earlier version and loads it into the draft. Restoring the version live now only resets the draft to it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"versionId":{"type":"string","minLength":1}},"required":["locationId","versionId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/emenu/renameVersion":{"post":{"operationId":"emenu.renameVersion","summary":"Rename a QR-menu version","description":"Sets or clears the owner's name for one of the venue's published or archived QR-menu versions. A name is a label only; it changes nothing guests see.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"versionId":{"type":"string","minLength":1},"name":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]}},"required":["locationId","versionId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","publishedAt"]}}}}}}},"/api/public/v1/emenu/listVersions":{"post":{"operationId":"emenu.listVersions","summary":"List the venue's QR-menu versions","description":"Returns the venue's published and archived QR-menu versions, newest first, and whether the draft differs from the version guests see.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"versions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"publishedAt":{"type":"string","format":"date-time","x-native-type":"date"},"status":{"enum":["published","archived"],"type":"string"},"publishedByName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","name","publishedAt","status","publishedByName"]}},"hasUnpublishedChanges":{"type":"boolean"}},"required":["versions","hasUnpublishedChanges"]}}}}}}},"/api/public/v1/media/control":{"post":{"operationId":"media.control","description":"Runs the media.control procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"operation":{"const":"initUpload"},"input":{"anyOf":[{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"const":"organization"},"id":{"type":"string","minLength":1,"maxLength":119,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["type","id"],"additionalProperties":false},"contentType":{"enum":["image/jpeg","image/png","image/webp","image/avif"],"type":"string"},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":10485760,"exclusiveMinimum":0},"checksumSha256":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"},"idempotencyKey":{"type":"string","format":"uuid"}},"required":["contentType","sizeBytes","checksumSha256"],"additionalProperties":false},{"type":"object","properties":{"tenantId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_-]+$"},"contentType":{"enum":["image/jpeg","image/png","image/webp","image/avif"],"type":"string"},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":10485760,"exclusiveMinimum":0},"checksumSha256":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"},"idempotencyKey":{"type":"string","format":"uuid"}},"required":["tenantId","contentType","sizeBytes","checksumSha256"],"additionalProperties":false}]}},"required":["operation","input"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"completeUpload"},"receipt":{"type":"string","minLength":64,"maxLength":8192}},"required":["operation","receipt"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"signTransforms"},"canonicalUrl":{"type":"string","maxLength":4096,"format":"uri"},"transforms":{"type":"array","minItems":1,"maxItems":16,"items":{"anyOf":[{"type":"object","properties":{"preset":{"enum":["menuItemThumbnail","menuItemDetail","optimizedOriginal"],"type":"string"}},"required":["preset"],"additionalProperties":false},{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096},"fit":{"enum":["fit","fill","crop"],"type":"string","default":"fit"},"gravity":{"enum":["center","north","south","east","west","smart"],"type":"string","default":"center"},"dpr":{"type":"integer","minimum":1,"maximum":3,"default":1},"quality":{"type":"integer","minimum":1,"maximum":100,"default":82},"format":{"enum":["auto","jpeg","png","webp","avif"],"type":"string","default":"auto"},"upscale":{"type":"boolean","default":false}},"additionalProperties":false}]}}},"required":["operation","canonicalUrl","transforms"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"signTransformsBatch"},"assets":{"type":"array","minItems":1,"maxItems":64,"items":{"type":"object","properties":{"canonicalUrl":{"type":"string","maxLength":4096,"format":"uri"},"transforms":{"type":"array","minItems":1,"maxItems":16,"items":{"anyOf":[{"type":"object","properties":{"preset":{"enum":["menuItemThumbnail","menuItemDetail","optimizedOriginal"],"type":"string"}},"required":["preset"],"additionalProperties":false},{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":4096},"height":{"type":"integer","minimum":1,"maximum":4096},"fit":{"enum":["fit","fill","crop"],"type":"string","default":"fit"},"gravity":{"enum":["center","north","south","east","west","smart"],"type":"string","default":"center"},"dpr":{"type":"integer","minimum":1,"maximum":3,"default":1},"quality":{"type":"integer","minimum":1,"maximum":100,"default":82},"format":{"enum":["auto","jpeg","png","webp","avif"],"type":"string","default":"auto"},"upscale":{"type":"boolean","default":false}},"additionalProperties":false}]}}},"required":["canonicalUrl","transforms"],"additionalProperties":false}}},"required":["operation","assets"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"deleteAsset"},"canonicalUrl":{"type":"string","maxLength":4096,"format":"uri"}},"required":["operation","canonicalUrl"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"initDocumentUpload"},"input":{"type":"object","properties":{"contentType":{"enum":["application/pdf","image/jpeg","image/png"],"type":"string"},"sizeBytes":{"type":"integer","minimum":-9007199254740991,"maximum":10485760,"exclusiveMinimum":0},"checksumSha256":{"type":"string","pattern":"^[A-Za-z0-9+/]{43}=$"},"idempotencyKey":{"type":"string","format":"uuid"},"fileName":{"type":"string","minLength":1,"maxLength":255},"owner":{"type":"object","properties":{"type":{"const":"organization"},"id":{"type":"string","minLength":1,"maxLength":119,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["type","id"],"additionalProperties":false}},"required":["contentType","sizeBytes","checksumSha256","fileName","owner"],"additionalProperties":false}},"required":["operation","input"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"completeDocumentUpload"},"receipt":{"type":"string","minLength":64,"maxLength":8192}},"required":["operation","receipt"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"signDocumentDownload"},"input":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"const":"organization"},"id":{"type":"string","minLength":1,"maxLength":119,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["type","id"],"additionalProperties":false},"assetId":{"type":"string","format":"uuid"}},"required":["owner","assetId"],"additionalProperties":false}},"required":["operation","input"],"additionalProperties":false},{"type":"object","properties":{"operation":{"const":"deleteDocument"},"input":{"type":"object","properties":{"owner":{"type":"object","properties":{"type":{"const":"organization"},"id":{"type":"string","minLength":1,"maxLength":119,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["type","id"],"additionalProperties":false},"assetId":{"type":"string","format":"uuid"}},"required":["owner","assetId"],"additionalProperties":false}},"required":["operation","input"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPay/availability":{"post":{"operationId":"niPushToPay.availability","description":"Reads the niPushToPay.availability procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPay/attemptForOrder":{"post":{"operationId":"niPushToPay.attemptForOrder","description":"Reads the niPushToPay.attemptForOrder procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPay/start":{"post":{"operationId":"niPushToPay.start","description":"Runs the niPushToPay.start procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"terminalId":{"type":"string","minLength":1}},"required":["orderId","terminalId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPay/status":{"post":{"operationId":"niPushToPay.status","description":"Reads the niPushToPay.status procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attemptId":{"type":"string","minLength":1}},"required":["attemptId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPay/recheck":{"post":{"operationId":"niPushToPay.recheck","description":"Runs the niPushToPay.recheck procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attemptId":{"type":"string","minLength":1}},"required":["attemptId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPay/cancel":{"post":{"operationId":"niPushToPay.cancel","description":"Runs the niPushToPay.cancel procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"attemptId":{"type":"string","minLength":1}},"required":["attemptId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPayAdmin/merchants":{"post":{"operationId":"niPushToPayAdmin.merchants","description":"Reads the niPushToPayAdmin.merchants procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPayAdmin/get":{"post":{"operationId":"niPushToPayAdmin.get","description":"Reads the niPushToPayAdmin.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niPushToPayAdmin/save":{"post":{"operationId":"niPushToPayAdmin.save","description":"Runs the niPushToPayAdmin.save procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"enabled":{"type":"boolean"},"clientId":{"type":"string","minLength":1,"maxLength":256},"clientSecret":{"type":"string","minLength":1,"maxLength":256},"chainId":{"type":"string","minLength":1,"maxLength":256},"mid":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9]+$"}},"required":["organizationId","enabled","clientId","chainId","mid"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niTerminals/list":{"post":{"operationId":"niTerminals.list","description":"Reads the niTerminals.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niTerminals/save":{"post":{"operationId":"niTerminals.save","description":"Runs the niTerminals.save procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"terminalId":{"type":"string","minLength":1},"tid":{"type":"string","minLength":1,"maxLength":32,"pattern":"^[A-Za-z0-9]+$"},"name":{"type":"string","minLength":1,"maxLength":48}},"required":["locationId","tid","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/niTerminals/delete":{"post":{"operationId":"niTerminals.delete","description":"Runs the niTerminals.delete procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"terminalId":{"type":"string","minLength":1}},"required":["locationId","terminalId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/create":{"post":{"operationId":"enterprises.create","description":"Runs the enterprises.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/invite":{"post":{"operationId":"enterprises.invite","description":"Runs the enterprises.invite procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"userEmail":{"type":"string","format":"email"}},"required":["organizationId","userEmail"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/merchantCommissions":{"post":{"operationId":"enterprises.merchantCommissions","description":"Reads the enterprises.merchantCommissions procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":200},"rateBps":{"type":"integer","minimum":0,"maximum":10000}},"required":["organizationId","rateBps"]}}}}}}}},"/api/public/v1/enterprises/setMerchantCommission":{"post":{"operationId":"enterprises.setMerchantCommission","description":"Runs the enterprises.setMerchantCommission procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":200},"rateBps":{"type":"integer","minimum":0,"maximum":10000}},"required":["organizationId","rateBps"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":200},"rateBps":{"type":"integer","minimum":0,"maximum":10000}},"required":["organizationId","rateBps"]}}}}}}},"/api/public/v1/enterprises/register":{"post":{"operationId":"enterprises.register","description":"Runs the enterprises.register procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/dashboard":{"post":{"operationId":"enterprises.dashboard","description":"Reads the enterprises.dashboard procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}},{"type":"object","properties":{"merchantId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1},"eventId":{"type":"string","minLength":1},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/dashboardExport":{"post":{"operationId":"enterprises.dashboardExport","description":"Reads the enterprises.dashboardExport procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","properties":{"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}},{"type":"object","properties":{"merchantId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1},"eventId":{"type":"string","minLength":1},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}}}]},{"type":"object","properties":{"report":{"enum":["summary","merchants","locations"],"type":"string"}},"required":["report"]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/dashboardExportV2":{"post":{"operationId":"enterprises.dashboardExportV2","description":"Reads the enterprises.dashboardExportV2 procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"allOf":[{"type":"object","properties":{"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}},{"type":"object","properties":{"merchantId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1},"eventId":{"type":"string","minLength":1},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}}}]},{"type":"object","properties":{"report":{"enum":["summary","merchants","locations"],"type":"string"}},"required":["report"]}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string"},"csv":{"type":"string"}},"required":["filename","csv"]}}}}}}},"/api/public/v1/enterprises/list":{"post":{"operationId":"enterprises.list","description":"Reads the enterprises.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/merchants":{"post":{"operationId":"enterprises.merchants","description":"Reads the enterprises.merchants procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/overview":{"post":{"operationId":"enterprises.overview","description":"Reads the enterprises.overview procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterprises/merchantCatalog":{"post":{"operationId":"enterprises.merchantCatalog","description":"Reads the enterprises.merchantCatalog procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/activeForLocation":{"post":{"operationId":"enterpriseEvents.activeForLocation","description":"Reads the enterpriseEvents.activeForLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1,"maxLength":200}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/list":{"post":{"operationId":"enterpriseEvents.list","description":"Reads the enterpriseEvents.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"includeArchived":{"type":"boolean"},"query":{"type":"string","maxLength":200},"page":{"type":"integer","minimum":1,"maximum":9007199254740991}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/availableParticipants":{"post":{"operationId":"enterpriseEvents.availableParticipants","description":"Reads the enterpriseEvents.availableParticipants procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/get":{"post":{"operationId":"enterpriseEvents.get","description":"Reads the enterpriseEvents.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200},"assignmentPage":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/setVendorCommission":{"post":{"operationId":"enterpriseEvents.setVendorCommission","description":"Runs the enterpriseEvents.setVendorCommission procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200},"organizationId":{"type":"string","minLength":1,"maxLength":200},"rateBps":{"anyOf":[{"type":"integer","minimum":0,"maximum":10000},{"type":"null"}]}},"required":["eventId","organizationId","rateBps"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/create":{"post":{"operationId":"enterpriseEvents.create","description":"Runs the enterpriseEvents.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"timeZone":{"type":"string","minLength":1}},"required":["name","startsAt","endsAt","timeZone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/update":{"post":{"operationId":"enterpriseEvents.update","description":"Runs the enterpriseEvents.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"timeZone":{"type":"string","minLength":1},"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["name","startsAt","endsAt","timeZone","eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/archive":{"post":{"operationId":"enterpriseEvents.archive","description":"Runs the enterpriseEvents.archive procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/addParticipation":{"post":{"operationId":"enterpriseEvents.addParticipation","description":"Runs the enterpriseEvents.addParticipation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200},"locationId":{"type":"string","minLength":1,"maxLength":200},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["eventId","locationId","startsAt","endsAt"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/updateParticipation":{"post":{"operationId":"enterpriseEvents.updateParticipation","description":"Runs the enterpriseEvents.updateParticipation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"participationId":{"type":"string","minLength":1,"maxLength":200},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["participationId","startsAt","endsAt"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEvents/archiveParticipation":{"post":{"operationId":"enterpriseEvents.archiveParticipation","description":"Runs the enterpriseEvents.archiveParticipation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"participationId":{"type":"string","minLength":1,"maxLength":200}},"required":["participationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/get":{"post":{"operationId":"enterpriseEventInvitations.get","description":"Reads the enterpriseEventInvitations.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/enable":{"post":{"operationId":"enterpriseEventInvitations.enable","description":"Runs the enterpriseEventInvitations.enable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/rotate":{"post":{"operationId":"enterpriseEventInvitations.rotate","description":"Runs the enterpriseEventInvitations.rotate procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/disable":{"post":{"operationId":"enterpriseEventInvitations.disable","description":"Runs the enterpriseEventInvitations.disable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/preview":{"post":{"operationId":"enterpriseEventInvitations.preview","description":"Reads the enterpriseEventInvitations.preview procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/choices":{"post":{"operationId":"enterpriseEventInvitations.choices","description":"Reads the enterpriseEventInvitations.choices procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/join":{"post":{"operationId":"enterpriseEventInvitations.join","description":"Runs the enterpriseEventInvitations.join procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"organizationId":{"type":"string","minLength":1,"maxLength":200},"locationIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1,"maxLength":200}},"consent":{"const":true}},"required":["token","organizationId","locationIds","consent"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/listSharing":{"post":{"operationId":"enterpriseEventInvitations.listSharing","description":"Reads the enterpriseEventInvitations.listSharing procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":200}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventInvitations/revokeSharing":{"post":{"operationId":"enterpriseEventInvitations.revokeSharing","description":"Runs the enterpriseEventInvitations.revokeSharing procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":200},"enterpriseId":{"type":"string","minLength":1,"maxLength":200},"locationId":{"type":"string","minLength":1,"maxLength":200}},"required":["organizationId","enterpriseId","locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseMerchantInvitations/get":{"post":{"operationId":"enterpriseMerchantInvitations.get","description":"Reads the enterpriseMerchantInvitations.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseMerchantInvitations/enable":{"post":{"operationId":"enterpriseMerchantInvitations.enable","description":"Runs the enterpriseMerchantInvitations.enable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseMerchantInvitations/disable":{"post":{"operationId":"enterpriseMerchantInvitations.disable","description":"Runs the enterpriseMerchantInvitations.disable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseMerchantInvitations/preview":{"post":{"operationId":"enterpriseMerchantInvitations.preview","description":"Reads the enterpriseMerchantInvitations.preview procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseMerchantInvitations/choices":{"post":{"operationId":"enterpriseMerchantInvitations.choices","description":"Reads the enterpriseMerchantInvitations.choices procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseMerchantInvitations/join":{"post":{"operationId":"enterpriseMerchantInvitations.join","description":"Runs the enterpriseMerchantInvitations.join procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"organizationId":{"type":"string","minLength":1,"maxLength":200},"locationIds":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1,"maxLength":200}},"consent":{"const":true}},"required":["token","organizationId","locationIds","consent"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventReports/get":{"post":{"operationId":"enterpriseEventReports.get","description":"Reads the enterpriseEventReports.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseEventReports/exportCsv":{"post":{"operationId":"enterpriseEventReports.exportCsv","description":"Reads the enterpriseEventReports.exportCsv procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":200}},"required":["eventId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/list":{"post":{"operationId":"enterpriseTerminals.list","description":"Reads the enterpriseTerminals.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"includeArchived":{"type":"boolean"},"query":{"type":"string","maxLength":200},"page":{"type":"integer","minimum":1,"maximum":9007199254740991}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/locations":{"post":{"operationId":"enterpriseTerminals.locations","description":"Reads the enterpriseTerminals.locations procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/history":{"post":{"operationId":"enterpriseTerminals.history","description":"Reads the enterpriseTerminals.history procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"terminalId":{"type":"string","minLength":1,"maxLength":200},"page":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["terminalId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/create":{"post":{"operationId":"enterpriseTerminals.create","description":"Runs the enterpriseTerminals.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"inventoryNumber":{"type":"string","minLength":1,"maxLength":100},"merchantId":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"terminalExternalId":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"provider":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]}},"required":["name","inventoryNumber"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/update":{"post":{"operationId":"enterpriseTerminals.update","description":"Runs the enterpriseTerminals.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"inventoryNumber":{"type":"string","minLength":1,"maxLength":100},"merchantId":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"terminalExternalId":{"anyOf":[{"type":"string","minLength":1,"maxLength":200},{"type":"null"}]},"provider":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"terminalId":{"type":"string","minLength":1,"maxLength":200}},"required":["name","inventoryNumber","terminalId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/archive":{"post":{"operationId":"enterpriseTerminals.archive","description":"Runs the enterpriseTerminals.archive procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"terminalId":{"type":"string","minLength":1,"maxLength":200}},"required":["terminalId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/assign":{"post":{"operationId":"enterpriseTerminals.assign","description":"Runs the enterpriseTerminals.assign procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1,"maxLength":200},"participationId":{"type":"string","minLength":1,"maxLength":200},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"terminals":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","properties":{"source":{"const":"fortis","default":"fortis"},"merchantId":{"type":"string","minLength":1,"maxLength":200},"terminalExternalId":{"type":"string","minLength":1,"maxLength":200},"provider":{"type":"string","minLength":1,"maxLength":100},"terminalId":{"type":"string","minLength":1,"maxLength":200}},"required":["terminalId"]}}},"required":["endsAt","terminals"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/return":{"post":{"operationId":"enterpriseTerminals.return","description":"Runs the enterpriseTerminals.return procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string","minLength":1,"maxLength":200}},"required":["assignmentId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/transfer":{"post":{"operationId":"enterpriseTerminals.transfer","description":"Runs the enterpriseTerminals.transfer procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"const":"fortis","default":"fortis"},"merchantId":{"type":"string","minLength":1,"maxLength":200},"terminalExternalId":{"type":"string","minLength":1,"maxLength":200},"provider":{"type":"string","minLength":1,"maxLength":100},"assignmentId":{"type":"string","minLength":1,"maxLength":200},"locationId":{"type":"string","minLength":1,"maxLength":200},"participationId":{"type":"string","minLength":1,"maxLength":200},"endsAt":{"type":"string","format":"date-time"}},"required":["assignmentId","endsAt"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/cancelAssignment":{"post":{"operationId":"enterpriseTerminals.cancelAssignment","description":"Runs the enterpriseTerminals.cancelAssignment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"assignmentId":{"type":"string","minLength":1,"maxLength":200}},"required":["assignmentId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/enterpriseTerminals/updateAssignment":{"post":{"operationId":"enterpriseTerminals.updateAssignment","description":"Runs the enterpriseTerminals.updateAssignment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"const":"fortis","default":"fortis"},"merchantId":{"type":"string","minLength":1,"maxLength":200},"terminalExternalId":{"type":"string","minLength":1,"maxLength":200},"provider":{"type":"string","minLength":1,"maxLength":100},"assignmentId":{"type":"string","minLength":1,"maxLength":200},"locationId":{"type":"string","minLength":1,"maxLength":200},"participationId":{"type":"string","minLength":1,"maxLength":200},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["assignmentId","startsAt","endsAt"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/fortis/importStatus":{"post":{"operationId":"fortis.importStatus","description":"Reads the fortis.importStatus procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/fortisSyncAdmin/list":{"post":{"operationId":"fortisSyncAdmin.list","description":"Reads the fortisSyncAdmin.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/fortisSyncAdmin/end":{"post":{"operationId":"fortisSyncAdmin.end","description":"Runs the fortisSyncAdmin.end procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"reason":{"type":"string","minLength":1,"maxLength":500,"default":"Transition to FortuneOS completed"}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/kitchen/getTimerThresholds":{"post":{"operationId":"kitchen.getTimerThresholds","description":"Reads the kitchen.getTimerThresholds procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1},"exactShift":{"const":true},"tableId":{"type":"string","minLength":1},"status":{"type":"array","minItems":1,"maxItems":4,"items":{"enum":["new","in_progress","done","cancelled"],"type":"string"}},"types":{"type":"array","minItems":1,"maxItems":3,"items":{"enum":["dine_in","takeaway","delivery"],"type":"string"}},"createdAfter":{"type":"string","format":"date"},"dateRange":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["from","to"]}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/kitchen/ready":{"post":{"operationId":"kitchen.ready","description":"Runs the kitchen.ready procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/kitchen/readyMany":{"post":{"operationId":"kitchen.readyMany","description":"Runs the kitchen.readyMany procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"ticketIds":{"type":"array","items":{"type":"string","minLength":1}}},"required":["locationId","ticketIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahDocuments/list":{"post":{"operationId":"myFatoorahDocuments.list","description":"Reads the myFatoorahDocuments.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahDocuments/confirm":{"post":{"operationId":"myFatoorahDocuments.confirm","description":"Runs the myFatoorahDocuments.confirm procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahDocuments/resubmit":{"post":{"operationId":"myFatoorahDocuments.resubmit","description":"Runs the myFatoorahDocuments.resubmit procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahPaymentMethods/list":{"post":{"operationId":"myFatoorahPaymentMethods.list","description":"Reads the myFatoorahPaymentMethods.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahPaymentMethods/refresh":{"post":{"operationId":"myFatoorahPaymentMethods.refresh","description":"Runs the myFatoorahPaymentMethods.refresh procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahPaymentMethods/setEnabled":{"post":{"operationId":"myFatoorahPaymentMethods.setEnabled","description":"Runs the myFatoorahPaymentMethods.setEnabled procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"isEnabled":{"type":"boolean"}},"required":["paymentMethodId","isEnabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/myFatoorahPaymentMethods/setCommission":{"post":{"operationId":"myFatoorahPaymentMethods.setCommission","description":"Runs the myFatoorahPaymentMethods.setCommission procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"commissionValue":{"type":"number","minimum":0},"commissionPercentage":{"type":"number","minimum":0,"maximum":1},"isPercentageOfNetValue":{"type":"boolean"}},"required":["paymentMethodId","commissionValue","commissionPercentage","isPercentageOfNetValue"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/applePayDomains/status":{"post":{"operationId":"applePayDomains.status","description":"Reads the applePayDomains.status procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"environment":{"enum":["sandbox","production"],"type":"string"},"hosts":{"type":"array","items":{"type":"object","properties":{"hostname":{"type":"string"},"registration":{"anyOf":[{"type":"object","properties":{"succeeded":{"type":"boolean"},"message":{"type":"string"},"registeredAt":{"type":"string","format":"date-time"},"actorName":{"type":"string"}},"required":["succeeded","message","registeredAt","actorName"]},{"type":"null"}]}},"required":["hostname","registration"]}}},"required":["environment","hosts"]}}}}}}},"/api/public/v1/applePayDomains/register":{"post":{"operationId":"applePayDomains.register","description":"Runs the applePayDomains.register procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string"}},"required":["hostname"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"succeeded":{"type":"boolean"},"message":{"type":"string"},"registeredAt":{"type":"string","format":"date-time"},"actorName":{"type":"string"}},"required":["succeeded","message","registeredAt","actorName"]}}}}}}},"/api/public/v1/myFatoorahRecovery/run":{"post":{"operationId":"myFatoorahRecovery.run","description":"Runs the myFatoorahRecovery.run procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"}},"required":["start","end"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/notificationSettings/supplierReview":{"post":{"operationId":"notificationSettings.supplierReview","description":"Reads the notificationSettings.supplierReview procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/notificationSettings/saveSupplierReview":{"post":{"operationId":"notificationSettings.saveSupplierReview","description":"Runs the notificationSettings.saveSupplierReview procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isEnabled":{"type":"boolean"},"channelId":{"anyOf":[{"type":"string","pattern":"^[CG][A-Z0-9]{8,}$"},{"const":""}]}},"required":["isEnabled","channelId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/notificationSettings/paymentIssues":{"post":{"operationId":"notificationSettings.paymentIssues","description":"Reads the notificationSettings.paymentIssues procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"isEnabled":{"type":"boolean"},"channelId":{"anyOf":[{"type":"string","pattern":"^[CG][A-Z0-9]{8,}$"},{"const":""}]}},"required":["isEnabled","channelId"]}}}}}}},"/api/public/v1/notificationSettings/savePaymentIssues":{"post":{"operationId":"notificationSettings.savePaymentIssues","description":"Runs the notificationSettings.savePaymentIssues procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isEnabled":{"type":"boolean"},"channelId":{"anyOf":[{"type":"string","pattern":"^[CG][A-Z0-9]{8,}$"},{"const":""}]}},"required":["isEnabled","channelId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"isEnabled":{"type":"boolean"},"channelId":{"anyOf":[{"type":"string","pattern":"^[CG][A-Z0-9]{8,}$"},{"const":""}]}},"required":["isEnabled","channelId"]}}}}}}},"/api/public/v1/onboarding/active":{"post":{"operationId":"onboarding.active","description":"Reads the onboarding.active procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"}},"required":["key"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/onboarding/saveProgress":{"post":{"operationId":"onboarding.saveProgress","description":"Runs the onboarding.saveProgress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quizId":{"type":"string","minLength":1},"answers":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"questionId":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"optionIds":{"type":"array","maxItems":12,"items":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"}},"customText":{"type":"string","minLength":1,"maxLength":500}},"required":["questionId","optionIds"],"additionalProperties":false}}},"required":["quizId","answers"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/onboarding/submit":{"post":{"operationId":"onboarding.submit","description":"Runs the onboarding.submit procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"quizId":{"type":"string","minLength":1},"answers":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"questionId":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"optionIds":{"type":"array","maxItems":12,"items":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"}},"customText":{"type":"string","minLength":1,"maxLength":500}},"required":["questionId","optionIds"],"additionalProperties":false}},"skipped":{"type":"boolean"}},"required":["quizId","answers","skipped"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/onboarding/list":{"post":{"operationId":"onboarding.list","description":"Reads the onboarding.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/onboarding/create":{"post":{"operationId":"onboarding.create","description":"Runs the onboarding.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"title":{"type":"string","minLength":1,"maxLength":120},"definition":{"type":"object","properties":{"questions":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"kind":{"enum":["single","multi"],"type":"string"},"title":{"type":"string","minLength":1,"maxLength":200},"subtitle":{"type":"string","minLength":1,"maxLength":300},"options":{"type":"array","minItems":1,"maxItems":12,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"label":{"type":"string","minLength":1,"maxLength":120}},"required":["id","label"],"additionalProperties":false}},"allowCustom":{"type":"boolean"}},"required":["id","kind","title","options","allowCustom"],"additionalProperties":false}}},"required":["questions"],"additionalProperties":false}},"required":["key","title","definition"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/onboarding/update":{"post":{"operationId":"onboarding.update","description":"Runs the onboarding.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"title":{"type":"string","minLength":1,"maxLength":120},"definition":{"type":"object","properties":{"questions":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"kind":{"enum":["single","multi"],"type":"string"},"title":{"type":"string","minLength":1,"maxLength":200},"subtitle":{"type":"string","minLength":1,"maxLength":300},"options":{"type":"array","minItems":1,"maxItems":12,"items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$"},"label":{"type":"string","minLength":1,"maxLength":120}},"required":["id","label"],"additionalProperties":false}},"allowCustom":{"type":"boolean"}},"required":["id","kind","title","options","allowCustom"],"additionalProperties":false}}},"required":["questions"],"additionalProperties":false}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/onboarding/archive":{"post":{"operationId":"onboarding.archive","description":"Runs the onboarding.archive procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/saveTradeLicense":{"post":{"operationId":"organization.saveTradeLicense","description":"Runs the organization.saveTradeLicense procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":256},"receipt":{"type":"string","minLength":64,"maxLength":8192},"expectedId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["organizationId","receipt","expectedId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/tradeLicense":{"post":{"operationId":"organization.tradeLicense","description":"Reads the organization.tradeLicense procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1,"maxLength":256}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/createEnterprise":{"post":{"operationId":"organization.createEnterprise","description":"Runs the organization.createEnterprise procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setPaymentMethods":{"post":{"operationId":"organization.setPaymentMethods","description":"Runs the organization.setPaymentMethods procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"enabled":{"type":"array","items":{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"}}},"required":["organizationId","enabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/addCustomPaymentMethod":{"post":{"operationId":"organization.addCustomPaymentMethod","description":"Runs the organization.addCustomPaymentMethod procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":32}},"required":["organizationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/removeCustomPaymentMethod":{"post":{"operationId":"organization.removeCustomPaymentMethod","description":"Runs the organization.removeCustomPaymentMethod procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"key":{"not":{}}},"required":["organizationId","key"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setLocationPaymentMethods":{"post":{"operationId":"organization.setLocationPaymentMethods","description":"Runs the organization.setLocationPaymentMethods procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"disabled":{"type":"array","items":{"anyOf":[{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"}]}}},"required":["locationId","disabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/addDiscount":{"post":{"operationId":"organization.addDiscount","description":"Runs the organization.addDiscount procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"percent":{"type":"integer","minimum":1,"maximum":100},"id":{"type":"string","format":"uuid"},"name":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}],"default":null}},"required":["organizationId","percent"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"discounts":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","percent"]}}},"required":["presets"]},"id":{"type":"string"}},"required":["discounts","id"]}}}}}}},"/api/public/v1/organization/updateDiscount":{"post":{"operationId":"organization.updateDiscount","description":"Runs the organization.updateDiscount procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"percent":{"type":"integer","minimum":1,"maximum":100},"id":{"type":"string","minLength":1,"maxLength":64},"name":{"anyOf":[{"type":"string","maxLength":30},{"type":"null"}]}},"required":["organizationId","percent","id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"discounts":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","percent"]}}},"required":["presets"]}},"required":["discounts"]}}}}}}},"/api/public/v1/organization/archiveDiscount":{"post":{"operationId":"organization.archiveDiscount","description":"Runs the organization.archiveDiscount procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"id":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"discounts":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","percent"]}}},"required":["presets"]}},"required":["discounts"]}}}}}}},"/api/public/v1/organization/removeDiscount":{"post":{"operationId":"organization.removeDiscount","description":"Runs the organization.removeDiscount procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"id":{"type":"string","minLength":1,"maxLength":64}},"required":["organizationId","id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"discounts":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","percent"]}}},"required":["presets"]}},"required":["discounts"]}}}}}}},"/api/public/v1/organization/setLocationDiscounts":{"post":{"operationId":"organization.setLocationDiscounts","description":"Runs the organization.setLocationDiscounts procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"disabled":{"type":"array","maxItems":100,"items":{"type":"string","minLength":1,"maxLength":64}}},"required":["locationId","disabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"discounts":{"type":"object","properties":{"disabled":{"type":"array","items":{"type":"string"}}},"required":["disabled"]}},"required":["discounts"]}}}}}}},"/api/public/v1/organization/locationDiscounts":{"post":{"operationId":"organization.locationDiscounts","description":"Reads the organization.locationDiscounts procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"presets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"percent":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["id","name","percent"]}}},"required":["presets"]}}}}}}},"/api/public/v1/organization/setOrderTypes":{"post":{"operationId":"organization.setOrderTypes","description":"Runs the organization.setOrderTypes procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"enabled":{"type":"array","items":{"enum":["dine_in","takeaway","delivery"],"type":"string"}}},"required":["organizationId","enabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setLocationOrderTypes":{"post":{"operationId":"organization.setLocationOrderTypes","description":"Runs the organization.setLocationOrderTypes procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"disabled":{"type":"array","items":{"enum":["dine_in","takeaway","delivery"],"type":"string"}}},"required":["locationId","disabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setDeliveryMethods":{"post":{"operationId":"organization.setDeliveryMethods","description":"Runs the organization.setDeliveryMethods procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"enabled":{"type":"array","items":{"enum":["own_rider","talabat","deliveroo","careem","noon"],"type":"string"}}},"required":["organizationId","enabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setLocationDeliveryMethods":{"post":{"operationId":"organization.setLocationDeliveryMethods","description":"Runs the organization.setLocationDeliveryMethods procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"disabled":{"type":"array","items":{"enum":["own_rider","talabat","deliveroo","careem","noon"],"type":"string"}}},"required":["locationId","disabled"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/proposeSlug":{"post":{"operationId":"organization.proposeSlug","description":"Reads the organization.proposeSlug procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/create":{"post":{"operationId":"organization.create","description":"Runs the organization.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"required":["name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/archive":{"post":{"operationId":"organization.archive","description":"Runs the organization.archive procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/listArchived":{"post":{"operationId":"organization.listArchived","description":"Reads the organization.listArchived procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/unarchive":{"post":{"operationId":"organization.unarchive","description":"Runs the organization.unarchive procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/get":{"post":{"operationId":"organization.get","description":"Reads the organization.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/hasBusinessDetails":{"post":{"operationId":"organization.hasBusinessDetails","description":"Reads the organization.hasBusinessDetails procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/rename":{"post":{"operationId":"organization.rename","description":"Runs the organization.rename procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["organizationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setLogo":{"post":{"operationId":"organization.setLogo","description":"Runs the organization.setLogo procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"logo":{"anyOf":[{"type":"string","maxLength":4096,"format":"uri"},{"type":"null"}]}},"required":["organizationId","logo"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setCurrency":{"post":{"operationId":"organization.setCurrency","description":"Runs the organization.setCurrency procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"currency":{"enum":["AED","USD","MXN","RUB"],"type":"string"}},"required":["organizationId","currency"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setCurrencySymbol":{"post":{"operationId":"organization.setCurrencySymbol","description":"Runs the organization.setCurrencySymbol procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"showCurrencySymbol":{"type":"boolean"}},"required":["organizationId","showCurrencySymbol"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/saveProfile":{"post":{"operationId":"organization.saveProfile","description":"Runs the organization.saveProfile procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"region":{"not":{}},"tradeName":{"anyOf":[{"type":"string"},{"type":"null"}]},"taxId":{"anyOf":[{"type":"string"},{"type":"null"}]},"licenseNumber":{"anyOf":[{"type":"string"},{"type":"null"}]},"legalType":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"emirate":{"anyOf":[{"not":{}},{"type":"null"}]},"vatRate":{"anyOf":[{"not":{}},{"type":"null"}]}},"required":["organizationId","region","tradeName","taxId","licenseNumber","legalType","vatRate"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/createLocation":{"post":{"operationId":"organization.createLocation","description":"Runs the organization.createLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"addressLine":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"category":{"enum":["restaurant","coffee_shop","cafeteria","bakery_sweets","bistro","fast_street_food","bar"],"type":"string"},"businessHours":{"type":"array","maxItems":7,"items":{"type":"object","properties":{"day":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"openedAt":{"anyOf":[{"type":"string","pattern":"^([01]?\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]},"closedAt":{"anyOf":[{"type":"string","pattern":"^([01]?\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]}},"required":["day","openedAt","closedAt"]}},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":280},{"type":"null"}]},"website":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"menuUrl":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}]},"googleMenuRemoved":{"type":"boolean"},"placeId":{"type":"string","minLength":1,"maxLength":400},"ownerPhone":{"type":"string"}},"required":["organizationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setOrganizationSlug":{"post":{"operationId":"organization.setOrganizationSlug","description":"Runs the organization.setOrganizationSlug procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])$"}},"required":["organizationId","slug"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/renameLocation":{"post":{"operationId":"organization.renameLocation","description":"Runs the organization.renameLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120}},"required":["locationId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/setLocationSlug":{"post":{"operationId":"organization.setLocationSlug","description":"Runs the organization.setLocationSlug procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"slug":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])$"}},"required":["locationId","slug"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/updateLocation":{"post":{"operationId":"organization.updateLocation","description":"Runs the organization.updateLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":120},"slug":{"anyOf":[{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])$"},{"type":"null"}]},"addressLine":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"description":{"anyOf":[{"type":"string","maxLength":280},{"type":"null"}]},"phone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}]},"labels":{"type":"array","maxItems":12,"items":{"type":"string","minLength":1,"maxLength":32}},"businessHours":{"anyOf":[{"type":"array","maxItems":7,"items":{"type":"object","properties":{"day":{"enum":["sun","mon","tue","wed","thu","fri","sat"],"type":"string"},"openedAt":{"anyOf":[{"type":"string","pattern":"^([01]?\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]},"closedAt":{"anyOf":[{"type":"string","pattern":"^([01]?\\d|2[0-3]):[0-5]\\d$"},{"type":"null"}]}},"required":["day","openedAt","closedAt"]}},{"type":"null"}]},"timeZone":{"type":"string"},"isTwentyFourHourClock":{"type":"boolean"}},"required":["locationId","name","slug","addressLine","description","phone","labels","businessHours","timeZone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/moveLocation":{"post":{"operationId":"organization.moveLocation","description":"Runs the organization.moveLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"position":{"type":"number","minimum":-1000000,"maximum":1000000}},"required":["locationId","position"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/archiveLocation":{"post":{"operationId":"organization.archiveLocation","description":"Runs the organization.archiveLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/organization/unarchiveLocation":{"post":{"operationId":"organization.unarchiveLocation","description":"Runs the organization.unarchiveLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/recentDrafts":{"post":{"operationId":"orders.recentDrafts","description":"Reads the orders.recentDrafts procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1}},"required":["locationId","shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/shiftDrafts":{"post":{"operationId":"orders.shiftDrafts","description":"Reads the orders.shiftDrafts procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/types":{"post":{"operationId":"orders.types","description":"Reads the orders.types procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/hasEverSold":{"post":{"operationId":"orders.hasEverSold","description":"Reads the orders.hasEverSold procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/collections":{"post":{"operationId":"orders.collections","description":"Reads the orders.collections procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1},"dateRange":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["from","to"]}},"required":["locationId","dateRange"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"collectedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retainedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"undatedRefundCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"undatedCollectionCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"methods":{"type":"array","items":{"type":"object","properties":{"collectedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"refundedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"retainedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paymentType":{"type":"string"},"paymentMethodName":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["collectedCents","refundedCents","retainedCents","paymentType","paymentMethodName"]}}},"required":["collectedCents","refundedCents","retainedCents","currency","undatedRefundCents","undatedCollectionCents","methods"]}}}}}}}},"/api/public/v1/orders/listTypes":{"post":{"operationId":"orders.listTypes","description":"Reads the orders.listTypes procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1},"exactShift":{"const":true},"tableId":{"type":"string","minLength":1},"status":{"type":"array","minItems":1,"maxItems":4,"items":{"enum":["new","in_progress","done","cancelled"],"type":"string"}},"types":{"type":"array","minItems":1,"maxItems":3,"items":{"enum":["dine_in","takeaway","delivery"],"type":"string"}},"createdAfter":{"type":"string","format":"date"},"dateRange":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["from","to"]}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/board":{"post":{"operationId":"orders.board","description":"Reads the orders.board procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1},"createdAfter":{"type":"string","format":"date"}},"required":["locationId","createdAfter"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders":{"get":{"operationId":"orders.list","summary":"List a venue's orders","description":"Reads the orders.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["orders"],"parameters":[{"name":"locationId","in":"query","required":true,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true},{"name":"shiftId","in":"query","required":false,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true},{"name":"exactShift","in":"query","required":false,"schema":{"const":true},"allowEmptyValue":true,"allowReserved":true},{"name":"tableId","in":"query","required":false,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true},{"name":"status","in":"query","required":false,"schema":{"type":"array","minItems":1,"maxItems":4,"items":{"enum":["new","in_progress","done","cancelled"],"type":"string"}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"types","in":"query","required":false,"schema":{"type":"array","minItems":1,"maxItems":3,"items":{"enum":["dine_in","takeaway","delivery"],"type":"string"}},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true},{"name":"createdAfter","in":"query","required":false,"schema":{"type":"string","format":"date"},"allowEmptyValue":true,"allowReserved":true},{"name":"dateRange","in":"query","required":false,"schema":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["from","to"]},"style":"deepObject","explode":true,"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"post":{"operationId":"orders.create","summary":"Create an order","description":"Runs the orders.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1},"tableId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"tableNumber":{"anyOf":[{"type":"integer","minimum":1,"maximum":999999999},{"type":"null"}]},"notes":{"type":"string","maxLength":500},"items":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"quantity":{"type":"integer","minimum":1,"maximum":99},"notes":{"type":"string","maxLength":500},"catalogItemId":{"type":"string","minLength":1},"priceCents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","quantity"]}}},"required":["locationId","shiftId","items"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"patch":{"operationId":"orders.update","summary":"Update an order's table, notes or lines","description":"Refused with CONFLICT `orderPartPaid` when the write would move a part-paid order to another table, off its table or onto one, and `guestPaymentUnderWay` when guests hold shares of its table's bill from the QR menu.","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"tableId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"tableNumber":{"anyOf":[{"type":"integer","minimum":1,"maximum":999999999},{"type":"null"}]},"notes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["id","notes"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/listOpenByTable":{"post":{"operationId":"orders.listOpenByTable","description":"Reads the orders.listOpenByTable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/listPendingGuest":{"post":{"operationId":"orders.listPendingGuest","description":"Reads the orders.listPendingGuest procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/createDraft":{"post":{"operationId":"orders.createDraft","description":"Runs the orders.createDraft procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"shiftId":{"type":"string","minLength":1},"orderType":{"enum":["dine_in","takeaway","delivery"],"type":"string"},"tableId":{"type":"string","minLength":1}},"required":["locationId","shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/{id}":{"get":{"operationId":"orders.get","summary":"Read one order with its lines, tickets and payments","description":"Reads the orders.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["orders"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/events":{"post":{"operationId":"orders.events","description":"Reads the orders.events procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/lines":{"post":{"operationId":"orders.addLine","summary":"Add a line to an order","description":"Runs the orders.addLine procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"quantity":{"type":"integer","minimum":1,"maximum":99},"notes":{"type":"string","maxLength":500},"catalogItemId":{"type":"string","minLength":1},"priceCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"orderId":{"type":"string","minLength":1},"idempotencyKey":{"type":"string","minLength":1,"maxLength":64},"skipMerge":{"type":"boolean"},"itemVariationId":{"type":"string","minLength":1},"modifierIds":{"type":"array","maxItems":12,"items":{"type":"string","minLength":1}},"modifierQuantities":{"type":"array","maxItems":12,"items":{"type":"integer","minimum":1,"maximum":99}}},"required":["name","quantity","orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/updateLine":{"post":{"operationId":"orders.updateLine","description":"Refused with CONFLICT `lineClaimed` when a line it changes is held by a By items part — paid at the till, or claimed by a guest from the QR menu — and `totalBelowPaid` when it would take the order's total below what is already paid.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string","minLength":1},"modifierQuantityChange":{"type":"object","properties":{"modifierId":{"type":"string","minLength":1},"quantity":{"type":"integer","minimum":0,"maximum":99}},"required":["modifierId","quantity"]},"quantity":{"type":"integer","minimum":1,"maximum":99},"notes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"discountPresetId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"discountPercent":{"type":"integer","minimum":0,"maximum":100},"discountAmountCents":{"type":"integer","minimum":0,"maximum":2147483647},"itemVariationId":{"type":"string","minLength":1},"modifierIds":{"type":"array","maxItems":12,"items":{"type":"string","minLength":1}},"modifierQuantities":{"type":"array","maxItems":12,"items":{"type":"integer","minimum":1,"maximum":99}}},"required":["itemId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/removeLine":{"post":{"operationId":"orders.removeLine","description":"Refused with CONFLICT `lineClaimed` when a line it changes is held by a By items part — paid at the till, or claimed by a guest from the QR menu — and `totalBelowPaid` when it would take the order's total below what is already paid.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string","minLength":1}},"required":["itemId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/voidLine":{"post":{"operationId":"orders.voidLine","description":"Refused with CONFLICT `lineClaimed` when a line it changes is held by a By items part — paid at the till, or claimed by a guest from the QR menu — and `totalBelowPaid` when it would take the order's total below what is already paid.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string","minLength":1},"reason":{"enum":["customer_changed_mind","entered_by_mistake","kitchen_unable_to_fulfill","already_prepared","other"],"type":"string"}},"required":["itemId","reason"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/setType":{"post":{"operationId":"orders.setType","description":"Refused with CONFLICT `orderPartPaid` when the write would move a part-paid order to another table, off its table or onto one, and `guestPaymentUnderWay` when guests hold shares of its table's bill from the QR menu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"orderType":{"enum":["dine_in","takeaway","delivery"],"type":"string"},"tableId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"tableNumber":{"anyOf":[{"type":"integer","minimum":1,"maximum":999999999},{"type":"null"}]}},"required":["orderId","orderType"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/setDelivery":{"post":{"operationId":"orders.setDelivery","description":"Refused with CONFLICT `orderPartPaid` when the write would move a part-paid order to another table, off its table or onto one, and `guestPaymentUnderWay` when guests hold shares of its table's bill from the QR menu. On an own-rider delivery whose order names no customer, and with the POS customer popup switched on, saving also makes the recipient the order's customer: the customer already holding the number, else a new one, when the number reads in the organization's region. A saved address also joins that customer's addresses when the recipient is the customer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"deliveryChannel":{"anyOf":[{"enum":["own_rider","talabat","deliveroo","careem","noon"],"type":"string"},{"type":"null"}],"default":null},"deliveryOrderNo":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"default":null},"deliveryName":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"default":null},"deliveryPhone":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"default":null},"deliveryAddress":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"default":null},"deliveryArea":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"default":null},"deliveryCity":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"default":null},"deliveryNotes":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"default":null}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/setComment":{"post":{"operationId":"orders.setComment","description":"Runs the orders.setComment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"comment":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["orderId","comment"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/clearCart":{"post":{"operationId":"orders.clearCart","description":"Refused with CONFLICT `lineClaimed` when a line it changes is held by a By items part — paid at the till, or claimed by a guest from the QR menu — and `totalBelowPaid` when it would take the order's total below what is already paid.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/cancel":{"post":{"operationId":"orders.cancel","summary":"Cancel an order","description":"Cancels an order not yet done; a retried cancel changes nothing. A prepaid order — one a guest paid through MyFatoorah before it was sent — is refunded by the cancel itself: all that is left of its MyFatoorah payment is sent back to the guest's card as a real refund, once, after the cancel commits. The cancel stands whatever MyFatoorah answers; follow the refund with payments.myFatoorahRefundDetails.","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"reason":{"enum":["customer_changed_mind","kitchen_unable_to_fulfill","duplicate_order","payment_failed","other"],"type":"string"}},"required":["orderId","reason"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/setOrderDiscount":{"post":{"operationId":"orders.setOrderDiscount","description":"Refused with CONFLICT `totalBelowPaid` when it would take the order's total below what is already paid.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"discountPresetId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"discountPercent":{"type":"integer","minimum":0,"maximum":100},"discountAmountCents":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/setCustomer":{"post":{"operationId":"orders.setCustomer","summary":"Attach, change or detach an order's customer","description":"Sets the order's customer, or clears it with a null customerId. A paid order earns its loyalty points for a member attached to it. Once any loyalty ledger entry names the order (points earned, spent or reversed on it), a change or detach is refused with BAD_REQUEST and refusal customerLockedByLoyalty; orders.get answers canChangeCustomer beforehand. On an own-rider delivery order, attaching fills the recipient's blank name and phone from the customer and a blank address (Address, Area and City all empty) with the customer's default saved address; a recipient or address still holding the replaced customer's phone or default address is replaced. A paid order's address is never written, and detaching leaves the recipient and address as they are.","tags":["orders"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"customerId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["orderId","customerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/move":{"post":{"operationId":"orders.move","description":"Runs the orders.move procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"status":{"enum":["new","in_progress","done","cancelled"],"type":"string"},"position":{"type":"number"}},"required":["id","status","position"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/{id}/send":{"post":{"operationId":"orders.send","summary":"Send an order to the kitchen","description":"Runs the orders.send procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["orders"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/{id}/complete":{"post":{"operationId":"orders.complete","summary":"Complete an order","description":"Runs the orders.complete procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["orders"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/markDelivered":{"post":{"operationId":"orders.markDelivered","description":"Runs the orders.markDelivered procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/activateForPayment":{"post":{"operationId":"orders.activateForPayment","description":"Runs the orders.activateForPayment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/lockForPayment":{"post":{"operationId":"orders.lockForPayment","description":"Runs the orders.lockForPayment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"deviceToken":{"type":"string","minLength":1}},"required":["orderId","deviceToken"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/unlockPayment":{"post":{"operationId":"orders.unlockPayment","description":"Runs the orders.unlockPayment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"deviceToken":{"type":"string","minLength":1}},"required":["orderId","deviceToken"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/toggleItem":{"post":{"operationId":"orders.toggleItem","description":"Runs the orders.toggleItem procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"itemId":{"type":"string","minLength":1},"isReady":{"type":"boolean"}},"required":["itemId","isReady"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/orders/remove":{"post":{"operationId":"orders.remove","description":"Runs the orders.remove procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/pagers/getConfig":{"post":{"operationId":"pagers.getConfig","description":"Reads the pagers.getConfig procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"pagerCount":{"type":"integer","minimum":1,"maximum":999},"enabled":{"type":"boolean"},"tablesEnabled":{"type":"boolean"}},"required":["pagerCount","enabled","tablesEnabled"]}}}}}}},"/api/public/v1/pagers/updateCount":{"post":{"operationId":"pagers.updateCount","description":"Runs the pagers.updateCount procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"pagerCount":{"type":"integer","minimum":1,"maximum":999}},"required":["locationId","pagerCount"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"pagerCount":{"type":"integer","minimum":1,"maximum":999}},"required":["pagerCount"]}}}}}}},"/api/public/v1/pagers/availability":{"post":{"operationId":"pagers.availability","description":"Reads the pagers.availability procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"pagerCount":{"type":"integer","minimum":1,"maximum":999},"enabled":{"type":"boolean"},"tablesEnabled":{"type":"boolean"},"reservations":{"type":"array","items":{"type":"object","properties":{"orderId":{"type":"string"},"orderNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"pagerNumber":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},{"type":"null"}]}},"required":["orderId","orderNumber","pagerNumber"]}}},"required":["pagerCount","enabled","tablesEnabled","reservations"]}}}}}}},"/api/public/v1/pagers/assign":{"post":{"operationId":"pagers.assign","description":"Refused with CONFLICT `orderPartPaid` when the write would move a part-paid order to another table, off its table or onto one, and `guestPaymentUnderWay` when guests hold shares of its table's bill from the QR menu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"deviceToken":{"type":"string","minLength":1},"pagerNumber":{"anyOf":[{"type":"integer","minimum":1,"maximum":999},{"type":"null"}]}},"required":["orderId","pagerNumber"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}}}}},"/api/public/v1/pagers/assignTable":{"post":{"operationId":"pagers.assignTable","description":"Refused with CONFLICT `orderPartPaid` when the write would move a part-paid order to another table, off its table or onto one, and `guestPaymentUnderWay` when guests hold shares of its table's bill from the QR menu.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"deviceToken":{"type":"string","minLength":1},"tableId":{"type":"string","minLength":1}},"required":["orderId","tableId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}}}}},"/api/public/v1/pagers/returnPager":{"post":{"operationId":"pagers.returnPager","description":"Runs the pagers.returnPager procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"deviceToken":{"type":"string","minLength":1}},"required":["orderId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1}},"required":["orderId"]}}}}}}},"/api/public/v1/paymentProviders/availableProviders":{"post":{"operationId":"paymentProviders.availableProviders","description":"Reads the paymentProviders.availableProviders procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/paymentProviders/listConnections":{"post":{"operationId":"paymentProviders.listConnections","description":"Reads the paymentProviders.listConnections procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/paymentProviders/refreshMyFatoorahStatus":{"post":{"operationId":"paymentProviders.refreshMyFatoorahStatus","description":"Runs the paymentProviders.refreshMyFatoorahStatus procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/paymentProviders/connectMyFatoorah":{"post":{"operationId":"paymentProviders.connectMyFatoorah","description":"Runs the paymentProviders.connectMyFatoorah procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"supplierName":{"type":"string","minLength":1,"maxLength":200},"mobile":{"type":"string","pattern":"^\\+?[0-9]{6,15}$"},"email":{"type":"string","maxLength":200,"format":"email"}},"required":["organizationId","supplierName","mobile","email"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/places/autocomplete":{"post":{"operationId":"places.autocomplete","description":"Reads the places.autocomplete procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":100},"sessionToken":{"type":"string","format":"uuid"},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"lang":{"enum":["en","ru","ar"],"type":"string","default":"en"},"cursor":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}]},"direction":{"enum":["forward","backward"],"type":"string"}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/places/autocompleteAddress":{"post":{"operationId":"places.autocompleteAddress","description":"Reads the places.autocompleteAddress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","minLength":2,"maxLength":100},"sessionToken":{"type":"string","format":"uuid"},"lat":{"type":"number","minimum":-90,"maximum":90},"lng":{"type":"number","minimum":-180,"maximum":180},"lang":{"enum":["en","ru","ar"],"type":"string","default":"en"}},"required":["query"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/places/details":{"post":{"operationId":"places.details","description":"Reads the places.details procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"placeId":{"type":"string","minLength":1,"maxLength":400},"sessionToken":{"type":"string","format":"uuid"},"lang":{"enum":["en","ru","ar"],"type":"string","default":"en"}},"required":["placeId"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/placeMenu/saved":{"post":{"operationId":"placeMenu.saved","description":"Reads the placeMenu.saved procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"menuUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"googleMenu":{"anyOf":[{"type":"object","properties":{"categories":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"photos":{"type":"integer","minimum":0,"maximum":9007199254740991},"preview":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"price":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","description","price"],"additionalProperties":false}}},"required":["title","items"],"additionalProperties":false}},"photoUrls":{"type":"array","items":{"type":"string"}},"thumbnailUrls":{"type":"array","items":{"type":"string"}}},"required":["categories","items","photos","preview","photoUrls","thumbnailUrls"],"additionalProperties":false},{"type":"null"}]}},"required":["menuUrl","googleMenu"],"additionalProperties":false}}}}}}},"/api/public/v1/placeMenu/importUrl":{"post":{"operationId":"placeMenu.importUrl","description":"Runs the placeMenu.importUrl procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["organizationId","url"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"importId":{"type":"string","format":"uuid"}},"required":["importId"],"additionalProperties":false}}}}}}},"/api/public/v1/placeMenu/importGoogle":{"post":{"operationId":"placeMenu.importGoogle","description":"Runs the placeMenu.importGoogle procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"importId":{"type":"string","format":"uuid"}},"required":["importId"],"additionalProperties":false}}}}}}},"/api/public/v1/placeMenu/find":{"post":{"operationId":"placeMenu.find","description":"Runs the placeMenu.find procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"placeId":{"type":"string","minLength":1,"maxLength":400}},"required":["organizationId","placeId"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"state":{"const":"found"},"menuUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"categories":{"type":"integer","minimum":0,"maximum":9007199254740991},"items":{"type":"integer","minimum":0,"maximum":9007199254740991},"photos":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["state","menuUrl","categories","items","photos"],"additionalProperties":false},{"type":"object","properties":{"state":{"const":"notFound"}},"required":["state"],"additionalProperties":false}]}}}}}}},"/api/public/v1/placeMenu/progress":{"post":{"operationId":"placeMenu.progress","description":"Reads the placeMenu.progress procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"importId":{"type":"string","format":"uuid"}},"required":["organizationId","importId"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/platformDashboard/overview":{"post":{"operationId":"platformDashboard.overview","description":"Reads the platformDashboard.overview procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"period":{"enum":["today","yesterday","last7","thisMonth","custom"],"type":"string","default":"today"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/payments/methods":{"post":{"operationId":"payments.methods","description":"Reads the payments.methods procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/payments/pay":{"post":{"operationId":"payments.pay","description":"Records one payment against an order, the whole balance or a part of it. While the order's bill is split equally (a payment sent `equalSplit`), refused with CONFLICT `splitWaysMismatch` for a part under another number of people, `equalSlotClaimed` for a part already paid or being paid, `splitModeMismatch` for a partial payment without `equalSplit`, and `equalSplitUnavailable` when a guest split held from the QR menu rules Split equally out. A By items part (a payment sent `claimedItems`) is refused with BAD_REQUEST `itemNotOnBill` for a line not on the order, and CONFLICT `itemAlreadyClaimed` for a quantity already paid or being paid, `itemsShareChanged` for an amount other than the lines' share, and `itemsSplitUnavailable` while the bill is split another way; a partial payment without `claimedItems`, an equal part included, is refused `splitModeMismatch` while items are claimed. A payment of the whole balance is never refused for the split. An optional `tipCents` rides beside `amountCents`, never inside it: it covers nothing on the bill, cash must cover both, and it is refused with BAD_REQUEST `tipsOff` where the venue's POS tips are off.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"paymentType":{"anyOf":[{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"}]},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"tenderedCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"tipCents":{"type":"integer","minimum":0,"maximum":2147483647},"idempotencyKey":{"type":"string","minLength":1},"expectedRemainingCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"equalSplit":{"type":"object","properties":{"ways":{"type":"integer","minimum":2,"maximum":20},"part":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["ways","part"]},"claimedItems":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":1,"maximum":99}}},"required":["orderId","paymentType","amountCents","idempotencyKey"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/payments/refundDetails":{"post":{"operationId":"payments.refundDetails","description":"Reads the payments.refundDetails procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"currency":{"type":"string"},"remainingCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"tipCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"unpostedHistoricalCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"canRecord":{"type":"boolean"},"blockedReason":{"anyOf":[{"enum":["imported","unpaid"],"type":"string"},{"type":"null"}]},"basis":{"type":"object","properties":{"lines":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string"},"name":{"type":"string"},"saleCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"municipalityFeeCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"taxAmountCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"refundedSaleCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"refundedFeeCents":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["orderItemId","name","saleCents","municipalityFeeCents","taxAmountCents","refundedSaleCents","refundedFeeCents"]}},{"type":"null"}]}},"required":["lines"]},"methods":{"type":"array","items":{"type":"object","properties":{"key":{"anyOf":[{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"},{"not":{}}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name"]}},"history":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"saleCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"municipalityFeeCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"taxAmountCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"tipReturnedCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"timeZone":{"type":"string"},"postedAt":{"type":"string","format":"date-time","x-native-type":"date"},"paymentTypes":{"type":"array","items":{"type":"string"}},"paymentMethods":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","name"]}}},"required":["id","amountCents","saleCents","municipalityFeeCents","taxAmountCents","reason","tipReturnedCents","timeZone","postedAt","paymentTypes","paymentMethods"]}}},"required":["currency","remainingCents","tipCents","unpostedHistoricalCents","canRecord","blockedReason","basis","methods","history"]}}}}}}},"/api/public/v1/payments/myFatoorahRefundDetails":{"post":{"operationId":"payments.myFatoorahRefundDetails","summary":"Read an order's MyFatoorah refunds","description":"Each of the order's guest MyFatoorah payments with what is left to refund and its QR tip and what is left of that, its items for a payment made by items, the order's other payments, and every MyFatoorah refund request with its status and any attention it needs. Read only; MyFatoorah is not called.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"currency":{"type":"string"},"payments":{"type":"array","items":{"type":"object","properties":{"paymentId":{"type":"string"},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"remainingCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"tipCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"tipLeftCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"mode":{"enum":["full","equal","items","custom","prepay"],"type":"string"},"paidAt":{"type":"string","format":"date-time","x-native-type":"date"},"items":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"orderItemId":{"type":"string"},"name":{"type":"string"},"quantity":{"type":"number"},"amountCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["orderItemId","name","quantity","amountCents"]}},{"type":"null"}]},"inDoubt":{"type":"boolean"}},"required":["paymentId","amountCents","remainingCents","tipCents","tipLeftCents","mode","paidAt","items","inDoubt"]}},"hasOtherPayments":{"type":"boolean"},"requests":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"paymentId":{"type":"string"},"amountCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"tipCents":{"type":"integer","minimum":0,"maximum":9007199254740991},"returnedCents":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"status":{"enum":["requested","scheduled","pending","refunded","canceled","failed","unknown","released","withdrawn"],"type":"string"},"attention":{"anyOf":[{"enum":["stillScheduled","stillPending","released","lookupFailing","lateConfirmed","amountMismatch","unpostable"],"type":"string"},{"type":"null"}]},"requestedAt":{"type":"string","format":"date-time","x-native-type":"date"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","paymentId","amountCents","tipCents","returnedCents","status","attention","requestedAt","lastError"]}}},"required":["currency","payments","hasOtherPayments","requests"]}}}}}}},"/api/public/v1/payments/setTip":{"post":{"operationId":"payments.setTip","description":"Sets a paid order's tip after payment; zero removes it. `tipCents` is the order's whole tip: the difference is posted as signed tip rows shared over the tenders not wholly refunded that were tipped — a cut in proportion to their tips now, never taking one below zero; a raise in proportion to what each was tipped — so lowering and restoring a tip puts each tender back where it was. What no such tender can take lands on the latest tender not wholly refunded. The response names the tender the change was posted on, the newest when it is shared over several. Refused with BAD_REQUEST `tipWindowClosed` once the order's shift has closed or for an order with no shift, `tipsOff` where the venue's POS tips are off, `orderCancelled` for a cancelled order, `orderNotPaid` before the order is fully paid, `noStandingPayment` when every tender was refunded, and `qrTipped` for an order a guest tipped through the QR menu, since that tip rode their MyFatoorah charge. Changing a tip already set, or any tip on a done order, needs `order:adjustTip`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"tipCents":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["orderId","tipCents"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"paymentId":{"type":"string"},"tipCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["paymentId","tipCents"]}}}}}}},"/api/public/v1/payments/refund":{"post":{"operationId":"payments.refund","summary":"Record a refund of an order","description":"Records money already returned to the guest outside this app (cash, card terminal, a till's own tenders); no payment provider is called, and imported orders are refused for Fortis to record. A guest's online MyFatoorah payment is never recorded here: it is refunded through payments.refundMyFatoorah. Refused with BAD_REQUEST and refusal `refundThroughMyFatoorah` when such a payment still has money to refund and the request names no amount, asks for more than the order's other payments hold, or sends an expectedRemainingCents that counts that payment. Each refunded payment's tip goes back with it, in the share of that payment refunded, posted as negative tip rows; the refunds that empty a payment return exactly the tip paid on it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0},"paymentType":{"anyOf":[{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"}]},"lineIds":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"string","minLength":1}},"reason":{"type":"string","maxLength":500},"idempotencyKey":{"type":"string","minLength":1,"maxLength":200},"expectedRemainingCents":{"type":"integer","minimum":0,"maximum":2147483647}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/payments/equalSplit":{"post":{"operationId":"payments.equalSplit","description":"Reads the payments.equalSplit procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ways":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"parts":{"type":"array","items":{"type":"object","properties":{"part":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"paymentType":{"anyOf":[{"anyOf":[{"enum":["cash","card","wallet","mixed","other"],"type":"string"},{"anyOf":[{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"},{"not":{}}]}]},{"type":"null"}]},"paid":{"type":"boolean"}},"required":["part","amountCents","paymentType","paid"]}},"reservedCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"guestSplitConflict":{"type":"boolean"},"claimedItems":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"paidBy":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"anyOf":[{"enum":["cash","card","wallet","mixed","other"],"type":"string"},{"anyOf":[{"enum":["cash","card","voucher","gift_card","staff","bank_transfer","payment_link","zomato_pay","careem_pay","myfatoorah"],"type":"string"},{"not":{}}]}]}}},"paidItems":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"itemsSplitConflict":{"type":"boolean"}},"required":["ways","parts","reservedCents","guestSplitConflict","claimedItems","paidBy","paidItems","itemsSplitConflict"]}}}}}}},"/api/public/v1/payments/cancelMyFatoorahRefund":{"post":{"operationId":"payments.cancelMyFatoorahRefund","summary":"Cancel a scheduled MyFatoorah refund","description":"Withdraws a refund MyFatoorah refused for insufficient balance and that waits to be sent again daily: no refund exists on MyFatoorah's side, so its amount is freed. A refund MyFatoorah accepted can't be canceled through its API. Refused with CONFLICT and refusal `notScheduled` when the refund is no longer scheduled.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"refundId":{"type":"string","minLength":1}},"required":["orderId","refundId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"refundId":{"type":"string"},"status":{"enum":["requested","scheduled","pending","refunded","canceled","failed","unknown","released","withdrawn"],"type":"string"}},"required":["refundId","status"]}}}}}}},"/api/public/v1/payments/refundMyFatoorah":{"post":{"operationId":"payments.refundMyFatoorah","summary":"Refund a guest's MyFatoorah payment","description":"Sends a real refund to the guest's card through MyFatoorah: all that is left of the payment, `amountCents` of it, or the `itemIds` a payment made by items paid for, plus the guest's QR tip on it in the share of the payment refunded, given back as a negative tip row once MyFatoorah returns it. Answers `pending` once MyFatoorah accepted it, `scheduled` when its balance can't fund it yet (sent again daily), or `unknown` when it never answered (looked up before anything is resent). Refused with BAD_REQUEST and refusal `notMyFatoorah` for a payment not made through MyFatoorah, BAD_REQUEST and refusal `overLimit` for more than is left of it, CONFLICT and refusal `inDoubt` while its last refund is still unconfirmed, and PRECONDITION_FAILED when the business has no MyFatoorah connection. A retried `idempotencyKey` returns the same refund.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"orderId":{"type":"string","minLength":1},"paymentId":{"type":"string","minLength":1},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":2147483647,"exclusiveMinimum":0},"itemIds":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"string","minLength":1}},"reason":{"type":"string","maxLength":500},"idempotencyKey":{"type":"string","minLength":1,"maxLength":200}},"required":["orderId","paymentId","idempotencyKey"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"refundId":{"type":"string"},"status":{"enum":["requested","scheduled","pending","refunded","canceled","failed","unknown","released","withdrawn"],"type":"string"}},"required":["refundId","status"]}}}}}}},"/api/public/v1/payments/guestPaymentLock":{"post":{"operationId":"payments.guestPaymentLock","description":"Reads the payments.guestPaymentLock procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/preferences/update":{"post":{"operationId":"preferences.update","description":"Runs the preferences.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"enum":["light","dark","system"],"type":"string"},"posLayout":{"enum":["catalog-first","cart-first"],"type":"string"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/preferences/finishOnboardingGuide":{"post":{"operationId":"preferences.finishOnboardingGuide","description":"Runs the preferences.finishOnboardingGuide procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/preferences/contactPhone":{"post":{"operationId":"preferences.contactPhone","description":"Reads the preferences.contactPhone procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"phone":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["phone"]}}}}}}},"/api/public/v1/preferences/setContactPhone":{"post":{"operationId":"preferences.setContactPhone","description":"Runs the preferences.setContactPhone procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phone":{"type":"string"}},"required":["phone"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{"not":{}},{"not":{}}]}}}}}}},"/api/public/v1/printing/listPrinters":{"post":{"operationId":"printing.listPrinters","description":"Reads the printing.listPrinters procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/savePrinter":{"post":{"operationId":"printing.savePrinter","description":"Runs the printing.savePrinter procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"printerId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"name":{"type":"string","minLength":1,"maxLength":64},"transport":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"const":"network"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]},{"type":"object","properties":{"kind":{"const":"serial"},"path":{"type":"string","minLength":1,"maxLength":255,"pattern":"^\\/dev\\/[A-Za-z0-9._-]+$"}},"required":["kind","path"]},{"type":"object","properties":{"kind":{"const":"ble"},"name":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"const":"usb"},"device":{"type":"string","minLength":1,"maxLength":128}},"required":["kind","device"]}]},{"type":"object","properties":{"kind":{"const":"wifi"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]}]},"paperWidth":{"enum":[58,80]},"ownerInstallId":{"anyOf":[{"type":"string","minLength":1,"maxLength":64},{"type":"null"}]},"printShiftReport":{"type":"boolean"},"stationIds":{"type":"array","maxItems":50,"items":{"type":"string","minLength":1}},"identity":{"type":"object","properties":{"serial":{"type":"string","minLength":1,"maxLength":64},"model":{"type":"string","minLength":1,"maxLength":64},"mdnsInstance":{"type":"string","minLength":1,"maxLength":255}},"required":["serial"]}},"required":["locationId","printerId","name","transport","paperWidth","ownerInstallId","stationIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/deletePrinter":{"post":{"operationId":"printing.deletePrinter","description":"Runs the printing.deletePrinter procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"printerId":{"type":"string","minLength":1}},"required":["printerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/setReceiptPrinter":{"post":{"operationId":"printing.setReceiptPrinter","description":"Runs the printing.setReceiptPrinter procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"printerId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"document":{"enum":["bill","invoice"],"type":"string"}},"required":["locationId","printerId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/createPrintJob":{"post":{"operationId":"printing.createPrintJob","description":"Runs the printing.createPrintJob procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"printerId":{"type":"string","minLength":1},"document":{"type":"object","properties":{"kind":{"const":"test"}},"required":["kind"]}},"required":["printerId","document"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/onQueueChanged":{"post":{"operationId":"printing.onQueueChanged","description":"Runs the printing.onQueueChanged procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"installId":{"type":"string","minLength":1,"maxLength":64}},"required":["locationId","installId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/claimPrintJobs":{"post":{"operationId":"printing.claimPrintJobs","description":"Runs the printing.claimPrintJobs procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"installId":{"type":"string","minLength":1,"maxLength":64},"limit":{"type":"integer","minimum":1,"maximum":10,"default":5},"exceptPrinterIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"supportsShiftReport":{"type":"boolean","default":false}},"required":["locationId","installId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/reportPrintJobResult":{"post":{"operationId":"printing.reportPrintJobResult","description":"Runs the printing.reportPrintJobResult procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","minLength":1},"installId":{"type":"string","minLength":1,"maxLength":64},"outcome":{"enum":["sent","accepted","failed","unknown","undelivered"],"type":"string"},"error":{"type":"string","maxLength":500},"status":{"type":"integer","minimum":0,"maximum":255},"identity":{"type":"object","properties":{"serial":{"type":"string","minLength":1,"maxLength":64},"model":{"type":"string","minLength":1,"maxLength":64},"mdnsInstance":{"type":"string","minLength":1,"maxLength":255}},"required":["serial"]}},"required":["jobId","installId","outcome"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/printing/rebindPrinter":{"post":{"operationId":"printing.rebindPrinter","description":"Runs the printing.rebindPrinter procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"printerId":{"type":"string","minLength":1},"from":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"const":"network"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]},{"type":"object","properties":{"kind":{"const":"serial"},"path":{"type":"string","minLength":1,"maxLength":255,"pattern":"^\\/dev\\/[A-Za-z0-9._-]+$"}},"required":["kind","path"]},{"type":"object","properties":{"kind":{"const":"ble"},"name":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"const":"usb"},"device":{"type":"string","minLength":1,"maxLength":128}},"required":["kind","device"]}]},{"type":"object","properties":{"kind":{"const":"wifi"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]}]},"to":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"const":"network"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]},{"type":"object","properties":{"kind":{"const":"serial"},"path":{"type":"string","minLength":1,"maxLength":255,"pattern":"^\\/dev\\/[A-Za-z0-9._-]+$"}},"required":["kind","path"]},{"type":"object","properties":{"kind":{"const":"ble"},"name":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"const":"usb"},"device":{"type":"string","minLength":1,"maxLength":128}},"required":["kind","device"]}]},{"type":"object","properties":{"kind":{"const":"wifi"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]}]},"serial":{"type":"string","minLength":1,"maxLength":64},"mdnsInstance":{"type":"string","minLength":1,"maxLength":255}},"required":["printerId","from","to"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"rebound":{"type":"boolean"}},"required":["rebound"]}}}}}}},"/api/public/v1/printing/flagPrinterRebind":{"post":{"operationId":"printing.flagPrinterRebind","description":"Runs the printing.flagPrinterRebind procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"printerId":{"type":"string","minLength":1},"from":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"const":"network"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]},{"type":"object","properties":{"kind":{"const":"serial"},"path":{"type":"string","minLength":1,"maxLength":255,"pattern":"^\\/dev\\/[A-Za-z0-9._-]+$"}},"required":["kind","path"]},{"type":"object","properties":{"kind":{"const":"ble"},"name":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"const":"usb"},"device":{"type":"string","minLength":1,"maxLength":128}},"required":["kind","device"]}]},{"type":"object","properties":{"kind":{"const":"wifi"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]}]}},"required":["printerId","from"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"flagged":{"const":true}},"required":["flagged"]}}}}}}},"/api/public/v1/printing/pendingJobs":{"post":{"operationId":"printing.pendingJobs","description":"Reads the printing.pendingJobs procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/receipts/printability":{"post":{"operationId":"receipts.printability","description":"Reads the receipts.printability procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/receipts/queuePrint":{"post":{"operationId":"receipts.queuePrint","description":"Runs the receipts.queuePrint procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1},"kind":{"enum":["bill","invoice"],"type":"string"}},"required":["id","kind"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/receipts/printJobStatus":{"post":{"operationId":"receipts.printJobStatus","description":"Reads the receipts.printJobStatus procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","minLength":1}},"required":["jobId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/receipts/kitchenSlips":{"post":{"operationId":"receipts.kitchenSlips","description":"Reads the receipts.kitchenSlips procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"printerName":{"type":"string"},"stationName":{"type":"string"},"firedAtIso":{"type":"string"},"isFirstRound":{"type":"boolean"},"isReprint":{"type":"boolean"},"status":{"enum":["pending","claimed","sent","accepted","failed","unknown"],"type":"string"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]},"isDelayed":{"type":"boolean"},"canReprint":{"type":"boolean"}},"required":["id","printerName","stationName","firedAtIso","isFirstRound","isReprint","status","lastError","isDelayed","canReprint"]}}}}}}}},"/api/public/v1/receipts/reprintKitchenSlip":{"post":{"operationId":"receipts.reprintKitchenSlip","description":"Runs the receipts.reprintKitchenSlip procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","minLength":1}},"required":["jobId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string"}},"required":["jobId"]}}}}}}},"/api/public/v1/receipts/document":{"post":{"operationId":"receipts.document","description":"Reads the receipts.document procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/receipts/printJobDocument":{"post":{"operationId":"receipts.printJobDocument","description":"Reads the receipts.printJobDocument procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"jobId":{"type":"string","minLength":1},"installId":{"type":"string","minLength":1,"maxLength":64}},"required":["jobId","installId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/regions/deployment":{"post":{"operationId":"regions.deployment","description":"Reads the regions.deployment procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/roles/list":{"post":{"operationId":"roles.list","description":"Reads the roles.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/roles/create":{"post":{"operationId":"roles.create","description":"Runs the roles.create procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":50},"permissions":{"type":"object","properties":{"order":{"enum":["full","viewOnly","none"],"type":"string"},"staff":{"enum":["full","viewOnly","none"],"type":"string"},"report":{"enum":["full","viewOnly","none"],"type":"string"},"menu":{"enum":["full","viewOnly","none"],"type":"string"},"shift":{"enum":["full","viewOnly","none"],"type":"string"},"settings":{"enum":["full","viewOnly","none"],"type":"string"},"customer":{"enum":["full","viewOnly","none"],"type":"string"},"organization":{"enum":["full","viewOnly","none"],"type":"string"},"loyalty":{"enum":["full","viewOnly","none"],"type":"string"},"enterpriseEvents":{"enum":["full","viewOnly","none"],"type":"string","default":"none"},"enterpriseTerminals":{"enum":["full","viewOnly","none"],"type":"string","default":"none"},"enterpriseMerchants":{"enum":["full","viewOnly","none"],"type":"string","default":"none"}},"required":["order","staff","report","menu","shift","settings","customer","organization","loyalty"]}},"required":["organizationId","name","permissions"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/roles/update":{"post":{"operationId":"roles.update","description":"Runs the roles.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":50},"permissions":{"type":"object","properties":{"order":{"enum":["full","viewOnly","none"],"type":"string"},"staff":{"enum":["full","viewOnly","none"],"type":"string"},"report":{"enum":["full","viewOnly","none"],"type":"string"},"menu":{"enum":["full","viewOnly","none"],"type":"string"},"shift":{"enum":["full","viewOnly","none"],"type":"string"},"settings":{"enum":["full","viewOnly","none"],"type":"string"},"customer":{"enum":["full","viewOnly","none"],"type":"string"},"organization":{"enum":["full","viewOnly","none"],"type":"string"},"loyalty":{"enum":["full","viewOnly","none"],"type":"string"},"enterpriseEvents":{"enum":["full","viewOnly","none"],"type":"string","default":"none"},"enterpriseTerminals":{"enum":["full","viewOnly","none"],"type":"string","default":"none"},"enterpriseMerchants":{"enum":["full","viewOnly","none"],"type":"string","default":"none"}},"required":["order","staff","report","menu","shift","settings","customer","organization","loyalty"]}},"required":["organizationId","id","name","permissions"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/roles/delete":{"post":{"operationId":"roles.delete","description":"Runs the roles.delete procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"id":{"type":"string","minLength":1}},"required":["organizationId","id"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/get":{"post":{"operationId":"settings.get","description":"Reads the settings.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/update":{"post":{"operationId":"settings.update","description":"Runs the settings.update procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"orderWarningMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":1440,"exclusiveMinimum":0},"orderOverdueMinutes":{"type":"integer","minimum":-9007199254740991,"maximum":1440,"exclusiveMinimum":0}},"required":["locationId","orderWarningMinutes","orderOverdueMinutes"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/getReceiptSettings":{"post":{"operationId":"settings.getReceiptSettings","description":"Reads the settings.getReceiptSettings procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/updateReceiptConnection":{"post":{"operationId":"settings.updateReceiptConnection","description":"Runs the settings.updateReceiptConnection procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"transport":{"anyOf":[{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"const":"network"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]},{"type":"object","properties":{"kind":{"const":"serial"},"path":{"type":"string","minLength":1,"maxLength":255,"pattern":"^\\/dev\\/[A-Za-z0-9._-]+$"}},"required":["kind","path"]},{"type":"object","properties":{"kind":{"const":"ble"},"name":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","name"]},{"type":"object","properties":{"kind":{"const":"usb"},"device":{"type":"string","minLength":1,"maxLength":128}},"required":["kind","device"]}]},{"type":"object","properties":{"kind":{"const":"wifi"},"host":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)*$"},"port":{"type":"integer","minimum":1,"maximum":65535}},"required":["kind","host","port"]}]},{"type":"null"}]},"paperWidth":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"default":80},"language":{"enum":["en","ar","mixed","ru"],"type":"string","default":"en"},"printOnSend":{"type":"boolean","default":false}},"required":["locationId","transport"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/updateReceiptCustomisation":{"post":{"operationId":"settings.updateReceiptCustomisation","description":"Runs the settings.updateReceiptCustomisation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"merchantDisplayName":{"type":"string","minLength":1,"maxLength":48},"footerText":{"type":"string","maxLength":192}},"required":["locationId","merchantDisplayName","footerText"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/getLocationFeatures":{"post":{"operationId":"settings.getLocationFeatures","description":"Reads the settings.getLocationFeatures procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/updateLocationFeatures":{"post":{"operationId":"settings.updateLocationFeatures","description":"Runs the settings.updateLocationFeatures procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"features":{"type":"object","properties":{"kds":{"type":"boolean","default":true},"eMenu":{"type":"object","properties":{"menu":{"type":"boolean","default":true},"ordering":{"type":"boolean","default":true},"orderFlow":{"enum":["staffApproval","directToKitchen"],"type":"string","default":"staffApproval"},"payments":{"type":"boolean","default":false},"paymentTiming":{"enum":["before","after"],"type":"string","default":"after"}},"default":{"menu":true,"ordering":true,"orderFlow":"staffApproval","payments":false,"paymentTiming":"after"}},"tables":{"type":"boolean","default":true},"pagers":{"type":"boolean","default":false},"printing":{"type":"boolean","default":true},"orderTypes":{"type":"object","properties":{"ownDelivery":{"type":"boolean","default":true},"aggregatorDelivery":{"type":"boolean","default":true}},"default":{"ownDelivery":true,"aggregatorDelivery":true}}}}},"required":["locationId","features"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/getVatPricing":{"post":{"operationId":"settings.getVatPricing","description":"Reads the settings.getVatPricing procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"vatExclusive":{"type":"boolean"}},"required":["vatExclusive"]}}}}}}},"/api/public/v1/settings/updateVatPricing":{"post":{"operationId":"settings.updateVatPricing","description":"Runs the settings.updateVatPricing procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"vatExclusive":{"type":"boolean"}},"required":["locationId","vatExclusive"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"vatExclusive":{"type":"boolean"}},"required":["vatExclusive"]}}}}}}},"/api/public/v1/settings/getMunicipalityFee":{"post":{"operationId":"settings.getMunicipalityFee","description":"Reads the settings.getMunicipalityFee procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/updateMunicipalityFee":{"post":{"operationId":"settings.updateMunicipalityFee","description":"Runs the settings.updateMunicipalityFee procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"municipalityFeeBasisPoints":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":2500,"exclusiveMinimum":0},{"type":"null"}]}},"required":["locationId","municipalityFeeBasisPoints"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/settings/getLocationTips":{"post":{"operationId":"settings.getLocationTips","description":"Reads the settings.getLocationTips procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tips":{"type":"object","properties":{"pos":{"type":"object","properties":{"enabled":{"type":"boolean"},"presets":{"type":"array","maxItems":4,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"percent"},"basisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","basisPoints"]},{"type":"object","properties":{"kind":{"const":"fixed"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}}},"required":["enabled","presets"]},"qr":{"type":"object","properties":{"enabled":{"type":"boolean"},"presets":{"type":"array","maxItems":4,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"percent"},"basisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","basisPoints"]},{"type":"object","properties":{"kind":{"const":"fixed"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}}},"required":["enabled","presets"]}},"required":["pos","qr"]}},"required":["tips"]}}}}}}},"/api/public/v1/settings/updateLocationTips":{"post":{"operationId":"settings.updateLocationTips","description":"Runs the settings.updateLocationTips procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"tips":{"type":"object","properties":{"pos":{"type":"object","properties":{"enabled":{"type":"boolean"},"presets":{"type":"array","maxItems":4,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"percent"},"basisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","basisPoints"]},{"type":"object","properties":{"kind":{"const":"fixed"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}}},"required":["enabled","presets"]},"qr":{"type":"object","properties":{"enabled":{"type":"boolean"},"presets":{"type":"array","maxItems":4,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"percent"},"basisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","basisPoints"]},{"type":"object","properties":{"kind":{"const":"fixed"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}}},"required":["enabled","presets"]}},"required":["pos","qr"]}},"required":["locationId","tips"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tips":{"type":"object","properties":{"pos":{"type":"object","properties":{"enabled":{"type":"boolean"},"presets":{"type":"array","maxItems":4,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"percent"},"basisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","basisPoints"]},{"type":"object","properties":{"kind":{"const":"fixed"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}}},"required":["enabled","presets"]},"qr":{"type":"object","properties":{"enabled":{"type":"boolean"},"presets":{"type":"array","maxItems":4,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"percent"},"basisPoints":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","basisPoints"]},{"type":"object","properties":{"kind":{"const":"fixed"},"amountCents":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["kind","amountCents"]}]}}},"required":["enabled","presets"]}},"required":["pos","qr"]}},"required":["tips"]}}}}}}},"/api/public/v1/shifts/current":{"post":{"operationId":"shifts.current","description":"Reads the shifts.current procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/list":{"post":{"operationId":"shifts.list","description":"Reads the shifts.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"range":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"}},"required":["from","to"]}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/get":{"post":{"operationId":"shifts.get","description":"Reads the shifts.get procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/assignable":{"post":{"operationId":"shifts.assignable","description":"Reads the shifts.assignable procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1},"locationId":{"type":"string","minLength":1}},"required":["shiftId","locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/summary":{"post":{"operationId":"shifts.summary","description":"Reads the shifts.summary procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/open":{"post":{"operationId":"shifts.open","description":"Runs the shifts.open procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1}},"required":["locationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/close":{"post":{"operationId":"shifts.close","description":"Runs the shifts.close procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/printReport":{"post":{"operationId":"shifts.printReport","description":"Runs the shifts.printReport procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"jobIds":{"type":"array","minItems":1,"items":{"type":"string"}}},"required":["jobIds"]}}}}}}},"/api/public/v1/shifts/listParticipants":{"post":{"operationId":"shifts.listParticipants","description":"Reads the shifts.listParticipants procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/join":{"post":{"operationId":"shifts.join","description":"Runs the shifts.join procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/addParticipant":{"post":{"operationId":"shifts.addParticipant","description":"Runs the shifts.addParticipant procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1},"userId":{"type":"string","minLength":1}},"required":["shiftId","userId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/leave":{"post":{"operationId":"shifts.leave","description":"Runs the shifts.leave procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1},"drafts":{"anyOf":[{"type":"object","properties":{"action":{"const":"transfer"},"toUserId":{"type":"string","minLength":1}},"required":["action","toUserId"]},{"type":"object","properties":{"action":{"const":"archive"}},"required":["action"]}]}},"required":["shiftId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/shifts/removeParticipant":{"post":{"operationId":"shifts.removeParticipant","description":"Runs the shifts.removeParticipant procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"shiftId":{"type":"string","minLength":1},"userId":{"type":"string","minLength":1}},"required":["shiftId","userId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables":{"get":{"operationId":"tables.listTables","summary":"List a venue's tables with their QR codes","description":"Reads the tables.listTables procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","tags":["tables"],"parameters":[{"name":"locationId","in":"query","required":true,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}},"post":{"operationId":"tables.createTable","summary":"Create a table in a section","description":"Creates a table numbered from the smallest free number of the section's band, or with a prefix (Latin letters, upper-cased) from the smallest number free within the section and prefix, with its QR code and a spot on the section's floor plan. Refused with CONFLICT as sectionFull when the band has no free number, as planFull when no placement is given and the plan has no free cell, and as numberTaken when a concurrent write took the number.","tags":["tables"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"sectionId":{"type":"string","minLength":1},"prefix":{"type":"string","maxLength":10,"pattern":"^[A-Z]*$","default":""},"capacity":{"type":"integer","minimum":1,"maximum":20,"default":4},"label":{"type":"string","maxLength":60},"mode":{"enum":["menu_only","menu_pay_after","menu_tips","menu_order_pay_after"],"type":"string"},"placement":{"type":"object","properties":{"shape":{"enum":["round","square","rectangle","oval"],"type":"string"},"x":{"type":"number","minimum":0,"maximum":100},"y":{"type":"number","minimum":0,"maximum":100},"rotationDeg":{"anyOf":[{"const":0},{"const":45},{"const":90},{"const":135},{"const":180},{"const":225},{"const":270},{"const":315}]},"rectShort":{"type":"integer","minimum":1,"maximum":6},"rectLong":{"type":"integer","minimum":1,"maximum":6}},"required":["shape","x","y","rotationDeg"]}},"required":["locationId","sectionId","mode"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/bulkCreateTables":{"post":{"operationId":"tables.bulkCreateTables","summary":"Create several tables in a section","description":"Creates count tables, all or nothing, numbered from the smallest free numbers of the section's band, or with a prefix from the smallest numbers free within the section and prefix; listSections' remainingTables says how many unprefixed tables still fit. Refused with CONFLICT as sectionFull when no number is free, as bandExhausted when fewer than count are, as planFull when no placements are given and the plan has too few free cells, and as numberTaken when a concurrent write took a number.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"sectionId":{"type":"string","minLength":1},"count":{"type":"integer","minimum":1,"maximum":99},"prefix":{"type":"string","maxLength":10,"pattern":"^[A-Z]*$","default":""},"capacity":{"type":"integer","minimum":1,"maximum":20,"default":4},"mode":{"enum":["menu_only","menu_pay_after","menu_tips","menu_order_pay_after"],"type":"string"},"placements":{"type":"array","items":{"type":"object","properties":{"shape":{"enum":["round","square","rectangle","oval"],"type":"string"},"x":{"type":"number","minimum":0,"maximum":100},"y":{"type":"number","minimum":0,"maximum":100},"rotationDeg":{"anyOf":[{"const":0},{"const":45},{"const":90},{"const":135},{"const":180},{"const":225},{"const":270},{"const":315}]},"rectShort":{"type":"integer","minimum":1,"maximum":6},"rectLong":{"type":"integer","minimum":1,"maximum":6}},"required":["shape","x","y","rotationDeg"]}},"rows":{"type":"array","items":{"type":"object","properties":{"capacity":{"type":"integer","minimum":1,"maximum":20},"mode":{"enum":["menu_only","menu_pay_after","menu_tips","menu_order_pay_after"],"type":"string"},"label":{"type":"string","maxLength":60},"prefix":{"type":"string","maxLength":10,"pattern":"^[A-Z]*$"}},"required":["capacity","mode"]}}},"required":["locationId","sectionId","count","mode"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/updateTable":{"post":{"operationId":"tables.updateTable","summary":"Edit a table or move it to another section","description":"Updates only supplied fields on this table. sectionId moves the table to another section of the same venue, keeping its prefix and number and carrying its place to that section's floor plan; prefix changes the identifier's prefix and keeps the number. Returns CONFLICT with refusal numberTaken when a table of the section it ends in already holds the prefix and number it ends with, and with refusal planFull when the target section's floor plan has no free cell. Returns BAD_REQUEST with refusal sectionRequired when sectionId is null: a table always stays in a section, so pass the target section's id instead; and with refusal prefixNeedsSection when a prefix would land on a table with no section, so pass sectionId with the prefix.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tableId":{"type":"string","minLength":1},"prefix":{"type":"string","maxLength":10,"pattern":"^[A-Z]*$"},"number":{"type":"integer","minimum":1,"maximum":999999999},"capacity":{"type":"integer","minimum":1,"maximum":20},"sectionId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"label":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"mode":{"enum":["menu_only","menu_pay_after","menu_tips","menu_order_pay_after"],"type":"string"}},"required":["tableId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/updateTableCapacities":{"post":{"operationId":"tables.updateTableCapacities","summary":"Set several tables' seats","description":"Sets each named table's seats, all or nothing. Returns NOT_FOUND, changing none, when any named table is not at the location.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"tables":{"type":"array","minItems":1,"maxItems":99,"items":{"type":"object","properties":{"tableId":{"type":"string","minLength":1},"capacity":{"type":"integer","minimum":1,"maximum":20}},"required":["tableId","capacity"]}}},"required":["locationId","tables"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"prefix":{"type":"string"},"number":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"label":{"anyOf":[{"type":"string"},{"type":"null"}]},"mode":{"enum":["menu_only","menu_pay_after","menu_tips","menu_order_pay_after"],"type":"string"},"capacity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"sectionId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","prefix","number","label","mode","capacity","sectionId"]}}}}}}}},"/api/public/v1/tables/deleteTable":{"post":{"operationId":"tables.deleteTable","summary":"Delete a table","description":"Deletes the table, so its number returns to the section's band. Refused with CONFLICT as tableHasOpenOrder while the table has an open order.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tableId":{"type":"string","minLength":1}},"required":["tableId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/deleteTables":{"post":{"operationId":"tables.deleteTables","summary":"Delete several tables of a section","description":"Deletes the named tables of the section, all or nothing, so their numbers return to its band. Returns NOT_FOUND when the section or any named table is not there, and CONFLICT as tableHasOpenOrder while any of them has an open order; either way none is deleted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"sectionId":{"type":"string","minLength":1},"tableIds":{"type":"array","minItems":1,"maxItems":99,"items":{"type":"string","minLength":1}}},"required":["locationId","sectionId","tableIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"}},"sectionUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]},"previousSceneUpdatedAt":{"anyOf":[{"type":"string","format":"date-time","x-native-type":"date"},{"type":"null"}]}},"required":["ids","sectionUpdatedAt","previousSceneUpdatedAt"]}}}}}}},"/api/public/v1/tables/rotateCode":{"post":{"operationId":"tables.rotateCode","description":"Runs the tables.rotateCode procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tableId":{"type":"string","minLength":1}},"required":["tableId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/sections":{"get":{"operationId":"tables.listSections","summary":"List a venue's floor sections","description":"Lists the venue's live sections in display order. remainingTables is how many more tables createTable and bulkCreateTables can still number in that section: its band code*100+1 .. code*100+99 less the numbers its tables hold.","tags":["tables"],"parameters":[{"name":"locationId","in":"query","required":true,"schema":{"type":"string","minLength":1},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/createSection":{"post":{"operationId":"tables.createSection","summary":"Create a floor section","description":"Adds a section whose code numbers its tables code*100+1 .. code*100+99. A code another section of the venue already holds is refused with CONFLICT as sectionCodeTaken.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":60},"code":{"type":"integer","minimum":1,"maximum":98}},"required":["locationId","name","code"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/updateSection":{"post":{"operationId":"tables.updateSection","description":"Runs the tables.updateSection procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":60}},"required":["sectionId","name"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/reorderSections":{"post":{"operationId":"tables.reorderSections","summary":"Reorder a venue's floor sections","description":"Sets each live section's display position from its index in orderedIds. orderedIds must name every live section of the venue exactly once; a list that repeats a section, leaves one out or names another venue's is refused as sectionOrderMismatch.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"locationId":{"type":"string","minLength":1},"orderedIds":{"type":"array","items":{"type":"string","minLength":1}}},"required":["locationId","orderedIds"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/deleteSection":{"post":{"operationId":"tables.deleteSection","summary":"Delete a floor section","description":"Deletes the section and every table in it. Refused with CONFLICT as tableHasOpenOrder while any of its tables has an open order, and with BAD_REQUEST for the venue's default section.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string","minLength":1}},"required":["sectionId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/emptySection":{"post":{"operationId":"tables.emptySection","summary":"Remove every table from a floor section","description":"Deletes every table in the section and resets its floor plan, keeping the section. Refused with CONFLICT as tableHasOpenOrder while any of its tables has an open order.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string","minLength":1}},"required":["sectionId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/getScene":{"post":{"operationId":"tables.getScene","description":"Reads the tables.getScene procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string","minLength":1}},"required":["sectionId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/tables/saveScene":{"post":{"operationId":"tables.saveScene","summary":"Save a section's floor plan","description":"Replaces the section's floor plan, which must place every table of the section. Refused with CONFLICT as planStale when expectedUpdatedAt is not the plan's current version: another save landed first, so read the plan again before saving.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sectionId":{"type":"string","minLength":1},"expectedUpdatedAt":{"type":"string","format":"date-time","x-native-type":"date"},"scene":{"type":"object","properties":{"elements":{"type":"array","items":{"type":"object","properties":{"tableId":{"type":"string","minLength":1},"shape":{"enum":["round","square","rectangle","oval"],"type":"string"},"x":{"type":"number","minimum":0,"maximum":100},"y":{"type":"number","minimum":0,"maximum":100},"rotationDeg":{"anyOf":[{"const":0},{"const":45},{"const":90},{"const":135},{"const":180},{"const":225},{"const":270},{"const":315}]},"rectShort":{"type":"integer","minimum":1,"maximum":6},"rectLong":{"type":"integer","minimum":1,"maximum":6}},"required":["tableId","shape","x","y","rotationDeg"]}}},"required":["elements"]}},"required":["sectionId","expectedUpdatedAt","scene"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/list":{"post":{"operationId":"employees.list","description":"Reads the employees.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["organizationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/assignRole":{"post":{"operationId":"employees.assignRole","description":"Runs the employees.assignRole procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"userEmail":{"type":"string","format":"email"},"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["organizationId","userEmail"]},{"type":"object","properties":{"role":{"enum":["owner","manager","lineStaff"],"type":"string"},"customRoleId":{"type":"string","minLength":1}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/invite":{"post":{"operationId":"employees.invite","description":"Runs the employees.invite procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"userEmail":{"type":"string","format":"email"},"title":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]}},"required":["organizationId","userEmail"]},{"type":"object","properties":{"role":{"enum":["owner","manager","lineStaff"],"type":"string"},"customRoleId":{"type":"string","minLength":1}}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/resendInvitation":{"post":{"operationId":"employees.resendInvitation","description":"Runs the employees.resendInvitation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"userId":{"type":"string","minLength":1}},"required":["organizationId","userId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/setLocation":{"post":{"operationId":"employees.setLocation","description":"Runs the employees.setLocation procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"membershipId":{"type":"string","minLength":1},"newLocationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]}},"required":["organizationId","membershipId","newLocationId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/setSuspended":{"post":{"operationId":"employees.setSuspended","description":"Runs the employees.setSuspended procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"userId":{"type":"string","minLength":1},"suspended":{"type":"boolean"}},"required":["organizationId","userId","suspended"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/employees/remove":{"post":{"operationId":"employees.remove","description":"Runs the employees.remove procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"locationId":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"userId":{"type":"string","minLength":1}},"required":["organizationId","userId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/users/list":{"post":{"operationId":"users.list","description":"Reads the users.list procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"search":{"type":"string","maxLength":200}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/users/invite":{"post":{"operationId":"users.invite","description":"Runs the users.invite procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userEmail":{"type":"string","format":"email"}},"required":["userEmail"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/users/setRole":{"post":{"operationId":"users.setRole","description":"Runs the users.setRole procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"role":{"enum":["admin","user"],"type":"string"}},"required":["userId","role"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/users/setBanned":{"post":{"operationId":"users.setBanned","description":"Runs the users.setBanned procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1},"banned":{"type":"boolean"},"banReason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]}},"required":["userId","banned"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/public/v1/users/remove":{"post":{"operationId":"users.remove","description":"Runs the users.remove procedure, the same operation the Fortune OS app performs. The credential's live venue permissions bound it.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"string","minLength":1}},"required":["userId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"anyOf":[{},{"not":{}}]}}}}}}},"/api/exports/v1/{report}/{format}":{"get":{"operationId":"downloadReportExport","summary":"Download an authorized merchant report","description":"Requires report:read and live venue authority. Custom periods require ordered from/to dates within the configured maximum span. The format selects CSV or PDF; locale affects PDF labels only.","security":[{"session":[]},{"secureSession":[]}],"parameters":[{"name":"report","in":"path","required":true,"schema":{"type":"string","enum":["summary","items","locations","employees","paymentTypes","refunds","orderDetails"]}},{"name":"format","in":"path","required":true,"schema":{"type":"string","enum":["csv","pdf"]}},{"name":"locationId","in":"query","required":true,"style":"form","explode":true,"schema":{"type":"string","minLength":1}},{"name":"period","in":"query","required":false,"style":"form","explode":true,"schema":{"default":"today","type":"string","enum":["today","yesterday","last7","thisMonth","custom"]}},{"name":"from","in":"query","required":false,"style":"form","explode":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"to","in":"query","required":false,"style":"form","explode":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"locationMode","in":"query","required":false,"style":"form","explode":true,"schema":{"default":"single","type":"string","enum":["single","all"]}},{"name":"paymentTypes","in":"query","required":false,"style":"form","explode":true,"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["cash","card","wallet","mixed","other"]}}},{"name":"locale","in":"query","schema":{"type":"string"},"description":"PDF label locale; unsupported values use the application default."}],"responses":{"200":{"description":"Complete report with provenance and attachment filename.","headers":{"Content-Disposition":{"schema":{"type":"string"}}},"content":{"text/csv":{"schema":{"type":"string"}},"application/pdf":{"schema":{}}}},"400":{"description":"Invalid filter.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"401":{"description":"A signed-in session is required.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"403":{"description":"The session cannot read this report or venue scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Unknown report, format or venue.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"413":{"description":"Export exceeds the CSV or PDF row limit; narrow its scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"500":{"description":"Export processing failed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"504":{"description":"Database deadline reached; narrow the requested scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/api/exports/v2/{report}/{format}":{"get":{"operationId":"downloadFinancialReportExport","summary":"Download an authorized merchant report","description":"Recognized sales and independently posted refunds, using stored venue-local dates. Currency rows never combine amounts. Coverage distinguishes known partial history; n/a means unavailable. Order details remains an operational ledger with explicitly pre-refund order amounts and requires a single currency. Payment previews do not narrow financial exports.","security":[{"session":[]},{"secureSession":[]}],"parameters":[{"name":"report","in":"path","required":true,"schema":{"type":"string","enum":["summary","items","locations","employees","paymentTypes","refunds","orderDetails"]}},{"name":"format","in":"path","required":true,"schema":{"type":"string","enum":["csv","pdf"]}},{"name":"locationId","in":"query","required":true,"style":"form","explode":true,"schema":{"type":"string","minLength":1}},{"name":"period","in":"query","required":false,"style":"form","explode":true,"schema":{"default":"today","type":"string","enum":["today","yesterday","last7","thisMonth","custom"]}},{"name":"from","in":"query","required":false,"style":"form","explode":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"to","in":"query","required":false,"style":"form","explode":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"locationMode","in":"query","required":false,"style":"form","explode":true,"schema":{"default":"single","type":"string","enum":["single","all"]}},{"name":"paymentTypes","in":"query","required":false,"style":"form","explode":true,"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["cash","card","wallet","mixed","other"]}}},{"name":"locale","in":"query","schema":{"type":"string"},"description":"PDF label locale; unsupported values use the application default."}],"responses":{"200":{"description":"Complete report with provenance and attachment filename.","headers":{"Content-Disposition":{"schema":{"type":"string"}}},"content":{"text/csv":{"schema":{"type":"string"}},"application/pdf":{"schema":{}}}},"400":{"description":"Invalid filter.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"401":{"description":"A signed-in session is required.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"403":{"description":"The session cannot read this report or venue scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Unknown report, format or venue.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"413":{"description":"Export exceeds the CSV or PDF row limit; narrow its scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"500":{"description":"Export processing failed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"504":{"description":"Database deadline reached; narrow the requested scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/api/exports/v3/{report}/{format}":{"get":{"operationId":"downloadDetailedReportExport","summary":"Download an authorized merchant report","description":"Hierarchical reports on recognized sales and posted refund events. Sales reports keep sale-time amounts after refunds, selected by stored venue-local sale dates; Refunds lists each posted event by actual return method and posting date; Order details lists every traded order with its payment and refund history. Every row names its currency and each currency has its own Grand Total. Payment previews do not narrow these exports.","security":[{"session":[]},{"secureSession":[]}],"parameters":[{"name":"report","in":"path","required":true,"schema":{"type":"string","enum":["summary","items","locations","employees","paymentTypes","refunds","orderDetails"]}},{"name":"format","in":"path","required":true,"schema":{"type":"string","enum":["csv","pdf"]}},{"name":"locationId","in":"query","required":true,"style":"form","explode":true,"schema":{"type":"string","minLength":1}},{"name":"period","in":"query","required":false,"style":"form","explode":true,"schema":{"default":"today","type":"string","enum":["today","yesterday","last7","thisMonth","custom"]}},{"name":"from","in":"query","required":false,"style":"form","explode":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"to","in":"query","required":false,"style":"form","explode":true,"schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},{"name":"locationMode","in":"query","required":false,"style":"form","explode":true,"schema":{"default":"single","type":"string","enum":["single","all"]}},{"name":"paymentTypes","in":"query","required":false,"style":"form","explode":true,"schema":{"minItems":1,"type":"array","items":{"type":"string","enum":["cash","card","wallet","mixed","other"]}}},{"name":"locale","in":"query","schema":{"type":"string"},"description":"PDF label locale; unsupported values use the application default."}],"responses":{"200":{"description":"Complete report with provenance and attachment filename.","headers":{"Content-Disposition":{"schema":{"type":"string"}}},"content":{"text/csv":{"schema":{"type":"string"}},"application/pdf":{"schema":{}}}},"400":{"description":"Invalid filter.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"401":{"description":"A signed-in session is required.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"403":{"description":"The session cannot read this report or venue scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"404":{"description":"Unknown report, format or venue.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"413":{"description":"Export exceeds the CSV or PDF row limit; narrow its scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"500":{"description":"Export processing failed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}},"504":{"description":"Database deadline reached; narrow the requested scope.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]}}}}}}},"/api/myfatoorah-documents/v1/upload":{"post":{"operationId":"uploadMyFatoorahDocument","summary":"Upload one MyFatoorah KYC document","description":"Forwards a base64-encoded KYC document to the organization's connected MyFatoorah account and records the upload marker. Requires a signed-in session with payment-provider rights for that organization.","security":[{"sessionCookie":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","minLength":1},"fileType":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fileName":{"type":"string","minLength":1,"maxLength":255},"contentType":{"type":"string","enum":["image/jpeg","image/png","image/bmp","image/gif","application/pdf","application/msword","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.ms-excel","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]},"buffer":{"type":"string","minLength":1}},"required":["organizationId","fileType","fileName","contentType","buffer"],"additionalProperties":false}}}},"responses":{"200":{"description":"MyFatoorah accepted the document and the marker was recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"fileType":{"type":"number"},"uploadedAt":{"type":"string"}},"required":["fileType","uploadedAt"]}}}},"400":{"description":"That upload request is not valid, or MyFatoorah rejected the file.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"401":{"description":"Sign in to upload a document.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"403":{"description":"You cannot upload MyFatoorah documents.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"409":{"description":"Connect MyFatoorah before uploading documents.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"412":{"description":"MyFatoorah is not configured.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"413":{"description":"That file exceeds MyFatoorah's 5 MB limit.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"500":{"description":"MyFatoorah accepted the document, but saving it here failed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"502":{"description":"MyFatoorah could not accept that document.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}}}}},"/api/myfatoorah-documents/v2/upload":{"post":{"operationId":"uploadMyFatoorahDocumentV2","summary":"Upload one MyFatoorah KYC document","description":"Forwards the request body, the document's raw bytes under its own MIME type, to the organization's connected MyFatoorah account and records the upload marker. Requires a signed-in session with payment-provider rights for that organization.","security":[{"sessionCookie":[]}],"parameters":[{"name":"organizationId","in":"query","required":true,"schema":{"type":"string","minLength":1}},{"name":"fileType","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d+$"}},{"name":"x-file-name","in":"header","required":true,"description":"The file's name, percent-encoded.","schema":{"type":"string","minLength":1,"maxLength":255}}],"requestBody":{"required":true,"content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}},"image/bmp":{"schema":{"type":"string","format":"binary"}},"image/gif":{"schema":{"type":"string","format":"binary"}},"application/pdf":{"schema":{"type":"string","format":"binary"}},"application/msword":{"schema":{"type":"string","format":"binary"}},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"schema":{"type":"string","format":"binary"}},"application/vnd.ms-excel":{"schema":{"type":"string","format":"binary"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}}}},"responses":{"200":{"description":"MyFatoorah accepted the document and the marker was recorded.","content":{"application/json":{"schema":{"type":"object","properties":{"fileType":{"type":"number"},"uploadedAt":{"type":"string"}},"required":["fileType","uploadedAt"]}}}},"400":{"description":"That upload request is not valid, or MyFatoorah rejected the file.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"401":{"description":"Sign in to upload a document.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"403":{"description":"You cannot upload MyFatoorah documents.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"409":{"description":"Connect MyFatoorah before uploading documents.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"412":{"description":"MyFatoorah is not configured.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"413":{"description":"That file exceeds MyFatoorah's 5 MB limit.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"415":{"description":"That file type is not accepted.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"500":{"description":"MyFatoorah accepted the document, but saving it here failed.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"502":{"description":"MyFatoorah could not accept that document.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}},"504":{"description":"MyFatoorah took too long to accept that document — try again.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","description":"MyFatoorah's own reason, present only when it rejected the document."}},"required":["message"]}}}}}}}}}