{"openapi":"3.1.0","info":{"title":"TallyDock Integration API","description":"Use a console-issued organisation v1 Bearer key. Save Idempotency-Key before mutations. POST imports waits up to 25 seconds after durable acceptance; 202 requires status lookup or the same POST. For other mutations a rare 202 requires repeating the same method, key, body and If-Match. Receipts do not expire. Strong ETags bind resource and organisation. Merge replaces all fields of supplied products; omitted codes survive. Without If-Match it applies to the latest locked catalog. Document pages use server modification time and [from,to), default 7 days (organisation setting 1–365). Signed cursors preserve the period, filters and limit. This is a live set, not an immutable snapshot or change feed: repeat overlapping windows and deduplicate by document ID + server_version. Reading/exporting never deletes. Device delivery occurs on the existing manual exchange. Transport: catalog envelope at most 2 MiB; canonical JSONB catalog at most 1 MiB and 5000 products, subject to actual organisation quota. Product PUT at most 192 KiB; other requests at most 24 KiB. Document metadata pages at most 4 MiB (reduce limit on 413). Limits: 120 requests/key/minute, 600/organisation/minute; exports 20/organisation/minute. Export: 200 IDs, 4 MiB source, 20000 rows, 16 MiB output, 10 seconds. Keys have no automatic expiry; explicit revocation is checked on every request and before queued execution.","version":"1.0.0"},"paths":{"/connection":{"get":{"summary":"Connection","operationId":"getConnection","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connection"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"security":[{"IntegrationKey":[]}]}},"/catalog":{"get":{"summary":"Catalog","operationId":"getCatalog","responses":{"200":{"description":"Successful Response","headers":{"ETag":{"description":"Opaque strong entity tag; return verbatim in If-Match.","schema":{"type":"string"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"security":[{"IntegrationKey":[]}],"x-permissions":["catalog:read"]}},"/catalog/imports":{"post":{"summary":"Import Catalog","operationId":"importCatalog","security":[{"IntegrationKey":[]}],"parameters":[{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"description":"Client-generated operation ID saved before sending. Organisation-wide across all mutations."},{"name":"if-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Required for replace; optional for merge. Single strong ETag from GET /catalog.","title":"If-Match"},"description":"Single opaque strong ETag from the corresponding GET, verbatim. Required except for merge imports."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportSucceeded"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"202":{"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Processing"}}},"description":"Accepted"}},"x-permissions":{"merge":["catalog:write"],"replace":["catalog:replace"]}}},"/catalog/imports/{operation_id}":{"get":{"summary":"Import Status","operationId":"getCatalogImport","security":[{"IntegrationKey":[]}],"parameters":[{"name":"operation_id","in":"path","required":true,"schema":{"type":"string","title":"Operation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ImportSucceeded"},{"$ref":"#/components/schemas/Processing"},{"$ref":"#/components/schemas/OperationFailed"}],"title":"Response Getcatalogimport"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"x-permissions-any":["catalog:write","catalog:replace"]}},"/products":{"put":{"summary":"Put Product","operationId":"putProduct","security":[{"IntegrationKey":[]}],"parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Code"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"description":"Client-generated operation ID saved before sending. Organisation-wide across all mutations."},{"name":"if-match","in":"header","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-Match"},"description":"Single opaque strong ETag from the corresponding GET, verbatim. Required except for merge imports."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResult"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"201":{"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductResult"}}},"description":"Created"},"202":{"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Processing"}}},"description":"Accepted"}},"x-permissions":["catalog:write"]},"delete":{"summary":"Delete Product","operationId":"deleteProduct","security":[{"IntegrationKey":[]}],"parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"title":"Code"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"description":"Client-generated operation ID saved before sending. Organisation-wide across all mutations."},{"name":"if-match","in":"header","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-Match"},"description":"Single opaque strong ETag from the corresponding GET, verbatim. Required except for merge imports."}],"responses":{"204":{"description":"Successful Response","headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"202":{"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Processing"}}},"description":"Accepted"}},"x-permissions":["catalog:delete"]}},"/documents":{"get":{"summary":"Documents","operationId":"listDocuments","security":[{"IntegrationKey":[]}],"parameters":[{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"To"}},{"name":"device_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Device Id"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"enum":["receipt","shipment","inventory","transfer","price-labels"],"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentPage"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"x-permissions":["documents:read"]}},"/documents/export":{"post":{"summary":"Export Documents","operationId":"exportDocuments","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","headers":{"Content-Disposition":{"schema":{"type":"string"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"text/csv":{"schema":{"type":"string","format":"binary"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}},"application/json":{"schema":{"type":"string","format":"binary"}},"application/xml":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"security":[{"IntegrationKey":[]}],"x-permissions":["documents:read"]}},"/documents/{id}":{"get":{"summary":"Document","operationId":"getDocument","security":[{"IntegrationKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentResult"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"x-permissions":["documents:read"]},"delete":{"summary":"Delete Document","operationId":"deleteDocument","security":[{"IntegrationKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Id"}},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"description":"Client-generated operation ID saved before sending. Organisation-wide across all mutations."},{"name":"if-match","in":"header","required":true,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-Match"},"description":"Single opaque strong ETag from the corresponding GET, verbatim. Required except for merge imports."}],"responses":{"204":{"description":"Successful Response","headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"202":{"headers":{"ETag":{"schema":{"type":"string"},"description":"Opaque strong entity tag; return verbatim in If-Match."},"Location":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer"}},"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Processing"}}},"description":"Accepted"}},"x-permissions":["documents:delete"]}},"/devices":{"get":{"summary":"Devices","operationId":"listDevices","security":[{"IntegrationKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":100,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePage"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"401":{"description":"Invalid, legacy or revoked key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"403":{"description":"Permission denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"404":{"description":"Resource unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"409":{"description":"Operation ID or quota conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"412":{"description":"ETag changed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"413":{"description":"Size limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"422":{"description":"Invalid input or cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"428":{"description":"If-Match required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"429":{"description":"Rate limit; obey Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}},"500":{"description":"Internal error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Failure"}}},"headers":{"X-Request-ID":{"schema":{"type":"string"},"description":"Diagnostic request ID; opaque, generated by the application or edge."},"Retry-After":{"schema":{"type":"integer","minimum":1}}}}},"x-permissions":["devices:read"]}}},"components":{"schemas":{"Catalog":{"properties":{"schemaVersion":{"type":"integer","const":2,"title":"Schemaversion"},"products":{"items":{"$ref":"#/components/schemas/Product"},"type":"array","maxItems":5000,"title":"Products","description":"Unique exact ERP codes. Entire catalog at most 1 MiB in PostgreSQL JSONB representation; organisation quota also applies."}},"additionalProperties":false,"type":"object","required":["schemaVersion","products"],"title":"Catalog"},"Connection":{"properties":{"api_version":{"type":"string","const":"1","title":"Api Version"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"scopes":{"items":{"type":"string","enum":["catalog:read","catalog:write","catalog:replace","catalog:delete","documents:read","documents:delete","devices:read"]},"type":"array","title":"Scopes"},"products":{"$ref":"#/components/schemas/Quota"},"devices":{"$ref":"#/components/schemas/Quota"},"document_lookback_days":{"type":"integer","title":"Document Lookback Days"}},"additionalProperties":false,"type":"object","required":["api_version","organization_id","organization_name","scopes","products","devices","document_lookback_days"],"title":"Connection"},"Counts":{"properties":{"created":{"type":"integer","title":"Created"},"updated":{"type":"integer","title":"Updated"},"deleted":{"type":"integer","title":"Deleted"},"unchanged":{"type":"integer","title":"Unchanged"},"total":{"type":"integer","title":"Total"}},"additionalProperties":false,"type":"object","required":["created","updated","deleted","unchanged","total"],"title":"Counts"},"Device":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"document_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Prefix"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"}},"additionalProperties":false,"type":"object","required":["id","name","document_prefix","last_seen_at"],"title":"Device"},"DevicePage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Device"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"additionalProperties":false,"type":"object","required":["items","next_cursor"],"title":"DevicePage"},"DocumentLine":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"barcode":{"type":"string","title":"Barcode"},"quantity":{"type":"number","title":"Quantity"},"names":{"anyOf":[{"items":{"$ref":"#/components/schemas/Name"},"type":"array"},{"type":"null"}],"title":"Names"}},"additionalProperties":true,"type":"object","required":["id","code","name","barcode","quantity"],"title":"DocumentLine"},"DocumentMetadata":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"device_id":{"type":"string","format":"uuid","title":"Device Id"},"type":{"type":"string","enum":["receipt","shipment","inventory","transfer","price-labels"],"title":"Type"},"number":{"type":"string","title":"Number"},"document_date":{"type":"string","title":"Document Date"},"server_modified_at":{"type":"string","format":"date-time","title":"Server Modified At"},"server_version":{"type":"string","title":"Server Version"},"etag":{"type":"string","title":"Etag"},"line_count":{"type":"integer","title":"Line Count"}},"additionalProperties":false,"type":"object","required":["id","device_id","type","number","document_date","server_modified_at","server_version","etag","line_count"],"title":"DocumentMetadata"},"DocumentPage":{"properties":{"effective_from":{"type":"string","format":"date-time","title":"Effective From"},"effective_to":{"type":"string","format":"date-time","title":"Effective To"},"items":{"items":{"$ref":"#/components/schemas/DocumentMetadata"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"additionalProperties":false,"type":"object","required":["effective_from","effective_to","items","next_cursor"],"title":"DocumentPage"},"DocumentResult":{"properties":{"document":{"$ref":"#/components/schemas/DocumentSnapshot"},"server_version":{"type":"string","title":"Server Version"},"server_modified_at":{"type":"string","format":"date-time","title":"Server Modified At"}},"additionalProperties":false,"type":"object","required":["document","server_version","server_modified_at"],"title":"DocumentResult"},"DocumentSnapshot":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organizationId":{"type":"string","format":"uuid","title":"Organizationid"},"deviceId":{"type":"string","format":"uuid","title":"Deviceid"},"type":{"type":"string","enum":["receipt","shipment","inventory","transfer","price-labels"],"title":"Type"},"number":{"type":"string","title":"Number"},"date":{"type":"string","title":"Date"},"comment":{"type":"string","title":"Comment"},"createdAt":{"type":"string","title":"Createdat"},"updatedAt":{"type":"string","title":"Updatedat"},"revision":{"type":"integer","title":"Revision"},"fields":{"additionalProperties":{"type":"string"},"type":"object","title":"Fields"},"lines":{"items":{"$ref":"#/components/schemas/DocumentLine"},"type":"array","title":"Lines"}},"additionalProperties":true,"type":"object","required":["id","organizationId","deviceId","type","number","date","comment","createdAt","updatedAt","revision","fields","lines"],"title":"DocumentSnapshot"},"Error":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"additionalProperties":true,"type":"object","title":"Details"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"Error"},"ExportBody":{"properties":{"document_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":200,"minItems":1,"title":"Document Ids"},"format":{"type":"string","enum":["csv","xlsx","json","xml"],"title":"Format"}},"additionalProperties":false,"type":"object","required":["document_ids","format"],"title":"ExportBody"},"Failure":{"properties":{"error":{"$ref":"#/components/schemas/Error"},"request_id":{"type":"string","title":"Request Id"},"operation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation Id"}},"additionalProperties":false,"type":"object","required":["error","request_id"],"title":"Failure"},"ImportBody":{"properties":{"mode":{"type":"string","enum":["merge","replace"],"title":"Mode"},"catalog":{"$ref":"#/components/schemas/Catalog"}},"additionalProperties":false,"type":"object","required":["mode","catalog"],"title":"ImportBody"},"ImportSucceeded":{"properties":{"operation_id":{"type":"string","title":"Operation Id"},"status":{"type":"string","const":"succeeded","title":"Status"},"catalog_version":{"type":"string","title":"Catalog Version"},"counts":{"$ref":"#/components/schemas/Counts"}},"additionalProperties":false,"type":"object","required":["operation_id","status","catalog_version","counts"],"title":"ImportSucceeded"},"Name":{"properties":{"language":{"type":"string","maxLength":63,"minLength":2,"pattern":"^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$","title":"Language"},"value":{"type":"string","maxLength":512,"minLength":1,"title":"Value"}},"additionalProperties":false,"type":"object","required":["language","value"],"title":"Name"},"OperationFailed":{"properties":{"operation_id":{"type":"string","title":"Operation Id"},"status":{"type":"string","const":"failed","title":"Status"},"error":{"$ref":"#/components/schemas/Error"}},"additionalProperties":false,"type":"object","required":["operation_id","status","error"],"title":"OperationFailed"},"Processing":{"properties":{"operation_id":{"type":"string","title":"Operation Id"},"status":{"type":"string","const":"processing","title":"Status"}},"additionalProperties":false,"type":"object","required":["operation_id","status"],"title":"Processing"},"Product":{"properties":{"barcodes":{"items":{"type":"string","maxLength":256,"minLength":1},"type":"array","maxItems":32,"minItems":1,"title":"Barcodes","description":"Nonblank, exact strings. Barcodes may be shared by different products."},"names":{"items":{"$ref":"#/components/schemas/Name"},"type":"array","maxItems":32,"minItems":1,"title":"Names","description":"Unique language tags, compared case-insensitively. Full replacement on writes."},"code":{"type":"string","maxLength":128,"minLength":1,"title":"Code","description":"Exact ERP business key. No surrounding whitespace or control characters; leading zeroes and case are preserved."}},"additionalProperties":false,"type":"object","required":["barcodes","names","code"],"title":"Product"},"ProductBody":{"properties":{"barcodes":{"items":{"type":"string","maxLength":256,"minLength":1},"type":"array","maxItems":32,"minItems":1,"title":"Barcodes","description":"Nonblank, exact strings. Barcodes may be shared by different products."},"names":{"items":{"$ref":"#/components/schemas/Name"},"type":"array","maxItems":32,"minItems":1,"title":"Names","description":"Unique language tags, compared case-insensitively. Full replacement on writes."}},"additionalProperties":false,"type":"object","required":["barcodes","names"],"title":"ProductBody"},"ProductResult":{"properties":{"operation_id":{"type":"string","title":"Operation Id"},"product":{"$ref":"#/components/schemas/Product"},"catalog_version":{"type":"string","title":"Catalog Version"}},"additionalProperties":false,"type":"object","required":["operation_id","product","catalog_version"],"title":"ProductResult"},"Quota":{"properties":{"used":{"type":"integer","title":"Used"},"limit":{"type":"integer","title":"Limit"},"increases_remaining":{"type":"integer","title":"Increases Remaining"}},"additionalProperties":false,"type":"object","required":["used","limit","increases_remaining"],"title":"Quota"}},"securitySchemes":{"IntegrationKey":{"type":"http","description":"Organisation v1 key issued once in the console. Legacy import keys are rejected. Permissions are documented in each operation x-permissions; HTTP Bearer is not OAuth.","scheme":"bearer","x-permissions":["catalog:read","catalog:write","catalog:replace","catalog:delete","documents:read","documents:delete","devices:read"]}}},"servers":[{"url":"https://mobileservices.retailtechsolutions.eu/pdt/api/v1"}]}