{"swagger":"2.0","xId":["reitit.swagger/default"],"info":{"title":"Ramsay","description":"swagger docs for ramsay using malli schemas","version":"0.0.1"},"paths":{"/v2/order/resolve":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"resolvedProducts":{"type":"array","items":{"type":"object","properties":{"entities":{"type":"array","items":{"$ref":"#/definitions/resolved-product"}},"specialInstructions":{"type":"array","items":{"$ref":"#/definitions/special-instruction"}}},"required":["entities","special-instructions"],"additionalProperties":false}}},"required":["resolved-products"],"additionalProperties":false},"description":""},"422":{"schema":{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false},{"type":"object","properties":{"type":{"description":"Type code of the error","type":"string","enum":["unknown-pos"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["unknown"]},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false}]},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"body","name":"body","description":"selection based cart","required":true,"schema":{"description":"selection based cart","type":"object","properties":{"type":{"type":"string","enum":["by-selections"]},"locationId":{"type":"integer","format":"int64","minimum":1},"conversationId":{"type":"string","minLength":1},"ticket":{"type":"object","properties":{"products":{"type":"array","items":{"$ref":"#/definitions/selection-request"}}},"required":["products"],"additionalProperties":false}},"required":["type","location-id","ticket"],"additionalProperties":false,"xAnyOf":[{"description":"selection based cart","type":"object","properties":{"type":{"type":"string","enum":["by-selections"]},"locationId":{"type":"integer","format":"int64","minimum":1},"conversationId":{"type":"string","minLength":1},"ticket":{"type":"object","properties":{"products":{"type":"array","items":{"$ref":"#/definitions/selection-request"}}},"required":["products"],"additionalProperties":false}},"required":["type","location-id","ticket"],"additionalProperties":false},{"description":"entity based cart","type":"object","properties":{"type":{"type":"string","enum":["by-entities"]},"locationId":{"type":"integer","format":"int64","minimum":1},"conversationId":{"type":"string","minLength":1},"products":{"type":"array","items":{"$ref":"#/definitions/entity-request"}}},"required":["type","location-id","products"],"additionalProperties":false}]}}],"tags":["Order"],"summary":"converts a ticket into resolved-products"}},"/v2/location/{location-id}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"location":{"$ref":"#/definitions/location"}},"required":["location"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"422":{"schema":{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false},{"type":"object","properties":{"type":{"description":"Type code of the error","type":"string","enum":["unknown-pos"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["unknown"]},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false}]},"description":""},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Deprecated"],"summary":"Fetch location information via :location-id","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/location/{location-id}/menu/entities":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"locationId":{"type":"integer","format":"int64","minimum":1},"sections":{"type":"array","items":{"$ref":"#/definitions/section"}},"items":{"type":"array","items":{"$ref":"#/definitions/item"}},"constraints":{"type":"array","items":{"$ref":"#/definitions/constraint"}},"options":{"type":"array","items":{"$ref":"#/definitions/option"}},"entities":{"type":"array","items":{"$ref":"#/definitions/entity"}},"locationEntities":{"type":"array","items":{"$ref":"#/definitions/location-entity"}}},"required":["location-id","sections","items","constraints","options","entities","location-entities"],"additionalProperties":false},"description":""},"422":{"schema":{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false},{"type":"object","properties":{"type":{"description":"Type code of the error","type":"string","enum":["unknown-pos"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["unknown"]},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false}]},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"tags":["Deprecated"],"summary":"Fetch an entities menu via :location-id"}},"/v2/location/{location-id}/configuration":{"get":{"responses":{"200":{"schema":{"$ref":"#/definitions/configuration-response"},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"namespace","description":"","type":"string","required":true,"enum":["ordering_bot","menu_board","feature_flags","vi_dashboard","voice_insights","vox","pos","pay","sales_smart_ordering_demo"]},{"in":"query","name":"ingress-identifier","description":"","type":"string","required":false},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Deprecated"],"summary":"Fetch a `location`s configuration given a namespace","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/location/{location-id}/parent-configuration":{"get":{"responses":{"200":{"schema":{"$ref":"#/definitions/configuration-response"},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"namespace","description":"","type":"string","required":true,"enum":["ordering_bot","menu_board","feature_flags","vi_dashboard","voice_insights","vox","pos","pay","sales_smart_ordering_demo"]},{"in":"query","name":"ingress-identifier","description":"","type":"string","required":false},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Location"],"summary":"Fetch a `location`s parent configuration (concept + cohort merges) given a namespace","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/location/{location-id}/menu/selections/metadata":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"disabledSelections":{"type":"array","items":{"$ref":"#/definitions/disabled-element-selection"}},"selectionSchedules":{"type":"array","items":{"$ref":"#/definitions/selection-schedule"}}},"required":["disabled-selections","selection-schedules"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Deprecated"],"summary":"Fetch a `location`s menu selections metadata (86ing, schedules)","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/location/{location-id}/intent-actions":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"intentActions":{"type":"array","items":{"$ref":"#/definitions/intent-action"}}},"required":["intent-actions"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Location"],"summary":"Fetch a `location`s intentActions, including inherited `concept` level intentActions","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body.\n* This endpoint always regenerates the current record rather than replaying the stored one, so it carries no `ETag` / `Last-Modified` and is never answered `304` -- except on a `?version=` request, which replays an archived version like anywhere else."}},"/v2/cohort/{cohort-id}/configuration":{"get":{"responses":{"200":{"schema":{"$ref":"#/definitions/configuration-response"},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"cohort-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"namespace","description":"","type":"string","required":true,"enum":["ordering_bot","menu_board","feature_flags","vi_dashboard","voice_insights","vox","pos","pay","sales_smart_ordering_demo"]},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Cohort"],"summary":"Fetch a `cohort`s configuration given a namespace","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/concept/{concept-id}/menu/selections":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"conceptId":{"type":"integer","format":"int64","minimum":1},"categories":{"type":"array","items":{"$ref":"#/definitions/category"}},"elements":{"type":"array","items":{"$ref":"#/definitions/element"}},"selections":{"type":"array","items":{"$ref":"#/definitions/selection-response"}}},"required":["concept-id","categories","elements","selections"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"422":{"schema":{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false},{"type":"object","properties":{"type":{"description":"Type code of the error","type":"string","enum":["unknown-pos"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["unknown"]},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false}]},"description":""},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Deprecated"],"summary":"Fetch a selections menu via :concept-id","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/concept/{concept-id}/menu/entities":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"conceptId":{"type":"integer","format":"int64","minimum":1},"sections":{"type":"array","items":{"$ref":"#/definitions/section"}},"items":{"type":"array","items":{"$ref":"#/definitions/item"}},"constraints":{"type":"array","items":{"$ref":"#/definitions/constraint"}},"options":{"type":"array","items":{"$ref":"#/definitions/option"}},"entities":{"type":"array","items":{"$ref":"#/definitions/entity"}}},"required":["concept-id","sections","items","constraints","options","entities"],"additionalProperties":false},"description":""},"422":{"schema":{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"type":{"description":"Type code of resolve-order error","type":"string","enum":["unknown-selection","unknown-entity","ambiguous-ticket"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["resolve-order"]},"selectionIds":{"description":"The set of selection-ids causing the issue","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"lookupIds":{"description":"The set of lookup-ids causing the issue","type":"array","items":{"type":"string"}},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false},{"type":"object","properties":{"type":{"description":"Type code of the error","type":"string","enum":["unknown-pos"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["unknown"]},"details":{"description":"Opaque map containing POS specific details; Informational ONLY, DO NOT rely on this data"}},"required":["type","message","category","details"],"additionalProperties":false}]},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"tags":["Deprecated"],"summary":"Fetch an entities menu via :concept-id"}},"/v2/concept/{concept-id}/configuration":{"get":{"responses":{"200":{"schema":{"$ref":"#/definitions/configuration-response"},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"namespace","description":"","type":"string","required":true,"enum":["ordering_bot","menu_board","feature_flags","vi_dashboard","voice_insights","vox","pos","pay","sales_smart_ordering_demo"]},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Deprecated"],"summary":"Fetch a `concept`s configuration given a namespace","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v2/concept/{concept-id}/intent-actions":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"intentActions":{"type":"array","items":{"$ref":"#/definitions/intent-action"}}},"required":["intent-actions"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Concept"],"summary":"Fetch a `concept`s intentActions","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body.\n* This endpoint always regenerates the current record rather than replaying the stored one, so it carries no `ETag` / `Last-Modified` and is never answered `304` -- except on a `?version=` request, which replays an archived version like anywhere else."}},"/v3/concepts":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"concepts":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique id of a concept","type":"integer","format":"int64","minimum":0},"label":{"type":"string","minLength":1}},"required":["id","label"],"additionalProperties":false}}},"required":["concepts"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["Concepts"],"summary":"Fetch list of all concepts"}},"/v3/concepts/{concept-id}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"concept":{"type":"object","properties":{"id":{"description":"Unique id of a concept","type":"integer","format":"int64","minimum":0},"label":{"type":"string","minLength":1}},"required":["id","label"],"additionalProperties":false}},"required":["concept"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"tags":["Concepts"],"summary":"Fetch individual concept"}},"/v3/concepts/{concept-id}/locations":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"conceptId":{"type":"integer","format":"int64","minimum":0},"locations":{"description":"List of locations associated with the specified concept","type":"array","items":{"type":"object","properties":{"id":{"description":"Unique id of location","type":"integer","format":"int64","minimum":0},"label":{"description":"Name of location","type":"string","minLength":1},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}},"additionalProperties":false},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}},"additionalProperties":false}},"required":["id","label"],"additionalProperties":false}}},"required":["concept-id","locations"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"tags":["Concepts"],"summary":"Fetch locations associated with specified `concept-id`"}},"/v3/concepts/{concept-id}/cohorts":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"conceptId":{"description":"ID of target concept","type":"integer","format":"int64","minimum":0},"cohorts":{"description":"List of cohorts associated with the specified concept","type":"array","items":{"type":"object","properties":{"id":{"description":"Unique id of cohort","type":"integer","format":"int64","minimum":0},"label":{"description":"Name of cohort","type":"string","minLength":1},"default":{"description":"If `true`, cohort is the default for the concept","type":"boolean"}},"required":["id","label","default"],"additionalProperties":false}}},"required":["concept-id","cohorts"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"tags":["Concepts"],"summary":"Fetch cohorts associated with specified `concept-id`"}},"/v3/concepts/{concept-id}/configurations":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"configurations":{"type":"object","properties":{"menuBoard":{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"}},"additionalProperties":false},"orderingBot":{"type":"object","properties":{"endOfOrderUpsell":{"description":"Whether the end of order upsell feature is turned on for the location","type":"boolean"},"comboUpsell":{"description":"Whether the combo upsell feature is turned on for the location","type":"boolean"},"comboSizeUpsell":{"description":"Whether the upsize combo feature is turned on","type":"boolean"},"sideUpsizeUpsell":{"description":"Whether the side upsize combo feature is turned on","type":"boolean"},"speakingMode":{"description":"What speaking mode the analysts have set for the current location","type":"string","enum":["Terse","None","Normal"]},"forceReadCartSummaryOnCheckout":{"description":"Force cart readback on checkout even when speaking mode is terse","type":"boolean"},"smartlane":{"description":"Whether smart lane is enabled for the current location","type":"boolean"},"mobileOrderPickup":{"description":"Whether mobile order pickup is enabled for the current location","type":"boolean"},"rtoEnabled":{"description":"Ability to turn on/off RTO","type":"boolean"},"realtimeApiProvider":{"description":"Which realtime API provider to use","type":"string","enum":["openai","azure","tempus","xai"]},"realtimeProviderFallbackSequence":{"description":"Ordered fallback sequence of realtime API providers","type":"array","items":{"type":"string","enum":["openai","azure","tempus","xai"]}},"enableSkipTurn":{"description":"Whether the bot is allowed to skip turns when detecting background noise","type":"boolean"},"transcriptionModelConfig":{"description":"Which transcription model to use","type":"string","enum":["polaris_base_8k","polaris_base_16k","polaris_food_8k","polaris_food_16k","polaris_bkuk","polaris_panda_express","polaris_kfc"]},"realtimeInputMode":{"description":"What input mode to use for realtime","type":"string","enum":["audio","text"]},"inputAudioNoiseReduction":{"description":"What value to send to openAI for noise reduction","type":"string","enum":["far_field","near_field"]},"enableLlmRewriter":{"description":"Whether or not to enable LLM Rewriter","type":"boolean"},"polaris":{"description":"Polaris configuration","type":"object","properties":{"minTokens":{"description":"Minimum tokens for polaris","type":"integer","format":"int64"},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"},"backtrackMs":{"description":"Backtrack milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"deepgram":{"description":"Deepgram transcription configuration","type":"object","properties":{"enabled":{"description":"Whether Deepgram is used for transcriptions","type":"boolean"},"language":{"description":"Deepgram language mode","type":"string","enum":["en","multi"]},"useKeyterms":{"description":"Whether to pass boost phrases as Deepgram keyterms","type":"boolean"},"endpointingMs":{"description":"Trailing silence before Deepgram ends an utterance. Defaults to segment silence when unset.","type":"integer","format":"int64"}},"additionalProperties":false},"uiPresent":{"description":"Whether or not a UI is present for ordering","type":"boolean"},"semanticEot":{"description":"Semantic eot config","type":"object","properties":{"enabled":{"description":"If semantic eot is enabled","type":"boolean"},"completeDelayMs":{"description":"EOT complete delay in milliseconds","type":"integer","format":"int64"},"maybeCompleteDelayMs":{"description":"EOT maybe complete delay in milliseconds","type":"integer","format":"int64"}},"additionalProperties":false},"includeDescription":{"description":"Whether to include description in the ordering bot","type":"boolean"},"openaiSemanticVad":{"description":"Whether OpenAI Semantic VAD is enabled","type":"boolean"},"openaiSemanticVadEagerness":{"description":"OpenAI Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"supportedLanguages":{"description":"Languages supported by the ordering bot","type":"array","items":{"type":"string","enum":["English","Spanish"]}},"tempusConfig":{"description":"Config params for tempus llm","type":"object","properties":{"model":{"description":"Model version of tempus","type":"string"},"voice":{"description":"Name of voice used for tempus","type":"string"},"temperature":{"description":"Temperature to be passed to the Tempus provider","type":"number","format":"double","minimum":0,"maximum":1},"semanticVad":{"description":"Whether Tempus semantic VAD is enabled","type":"boolean"},"semanticVadEagerness":{"description":"Tempus Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"silenceDurationMs":{"description":"The amount of time the AI takes to respond after the user stops speaking","type":"integer","format":"int64"},"voiceSpeed":{"description":"Playback speed of TTS output","type":"number","format":"double"},"delayStartMs":{"description":"The amount of time the AI waits to respond when the LLM determines the user has not finished speaking","type":"integer","format":"int64"}},"additionalProperties":false},"backupVad":{"description":"Whether the backup VAD feature is turned on","type":"boolean"},"askForCollectionTimeAndName":{"description":"Whether the collection of time and name feature is turned on","type":"boolean"},"llmModel":{"description":"What llm model and version to use","type":"string","enum":["gpt-realtime","gpt-realtime-1.5","gpt-realtime-2","gpt-realtime-2.1"]},"manualSegmentation":{"description":"When set execute manual segmentation based on the config","type":"object","properties":{"type":{"description":"Type of segmentation","type":"string","enum":["fallback_segmentation"]},"config":{"description":"Config params for the segmentation","type":"object","properties":{"type":{"description":"Type of fallback segmentation","type":"string","enum":["polaris_vad_segmentation"]},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false}},"additionalProperties":false},"responseStyle":{"description":"encourage the LLM towards specific ways of responding","type":"object","properties":{"basicUpdateCartSuccess":{"description":"when a basic update cart is called successfully","type":"string"},"invalidOptions":{"description":"when the customer or LLM adds invalid options to an item","type":"string"},"slotFilling":{"description":"when slot filling","type":"string"},"disambiguation":{"description":"when disambiguating","type":"string"}},"additionalProperties":false},"promptConfig":{"description":"Configuration for templated fields in the ordering bot's system instructions","type":"object","properties":{"introduction":{"type":"string"},"language":{"type":"string"},"unambiguousItemName":{"type":"string"},"unambiguousItemNameSimilarMatches":{"type":"string"},"ambiguousItemName":{"type":"string"},"ambiguousItemNameMatches":{"type":"string"},"conceptSpecificOrderingInstructions":{"type":"string"},"comboUpgradeExampleItem":{"type":"string"},"comboUpgradeExampleCombo":{"type":"string"},"comboUpgradeExampleOption":{"type":"string"}},"additionalProperties":false},"confirmOrderOnUi":{"description":"Whether to show order confirmation on the UI","type":"boolean"},"maxAllowedConsecutiveNudges":{"description":"Max number of allowed consecutive nudges before we end the session.","type":"integer","format":"int64"},"multimodalSegmentation":{"description":"Enable multimodal segmentation. Takes precedence over manual segmentation when both are enabled.","type":"object","properties":{"polarisConfig":{"description":"Polaris VAD config for multimodal segmentation","type":"object","properties":{"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"openaiNoiseReduction":{"description":"OpenAI input audio noise reduction setting","type":"string","enum":["far_field","near_field"]},"openaiEagerness":{"description":"OpenAI semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]}},"additionalProperties":false},"enableQuietSpeechDetection":{"description":"Whether quiet speech detection is enabled","type":"boolean"},"boostPhrases":{"description":"ASR boost phrases","type":"array","items":{"type":"string"}}},"additionalProperties":false},"salesSmartOrderingDemo":{"type":"object","properties":{"prompt":{"description":"Prompt for the sales smart ordering demo","type":"string"},"menuData":{"description":"Menu data for the sales smart ordering demo","type":"string"},"configuration":{"description":"Arbitrary sales smart ordering demo config","type":"string"}},"additionalProperties":false},"vox":{"type":"object","properties":{"sendToHuman":{"description":"Configuration to destinations for each send to human reason","type":"object","properties":{"default":{"description":"Default if no language specified","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"en":{"description":"English overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"es":{"description":"Spanish overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"pos":{"type":"object","properties":{"rateLimit":{"description":"the rate limit set by the POS for hitting their APIs (hits/s)","type":"integer","format":"int64"}},"additionalProperties":false},"featureFlags":{"description":"The `feature-flags` map is 2 levels, `feature` and then `flag`","type":"object","properties":{"conceptMenu":{"description":"Flags associated with concept oriented menu, i.e. `concept/entities`","type":"object","properties":{"import":{"description":"Enable concept menu for importing","type":"boolean"},"order":{"description":"Enable concept menu for ordering; requires `import` is enabled","type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"pay":{"type":"object","properties":{"occasions":{"description":"Per-occasion ordering settings for a location","type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false},"xAllOf":[{"type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false}},{}]},"textToPay":{"description":"Text-to-pay payment link message","type":"object","properties":{"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false},"textReceipt":{"description":"Text the customer a link to their receipt after a successful submit. Each list narrows when\n                   it's sent; an absent list matches everything","type":"object","properties":{"enabled":{"description":"Whether text receipts are sent","type":"boolean"},"tenders":{"description":"Only send for these tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}},"occasions":{"description":"Only send for these occasions","type":"array","items":{"type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]}},"orderUrgencies":{"description":"Only send for these order urgencies; FUTURE is an order ahead","type":"array","items":{"type":"string","enum":["ASAP","IMMEDIATE","FUTURE"]}},"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false}},"additionalProperties":false},"voiceInsights":{"type":"object","properties":{"features":{"description":"List of VI features","type":"array","items":{"type":"string","enum":["customer-effort-score","menu-items","upsell"]}},"audio":{"type":"object","properties":{"source":{"type":"string","enum":["hme","smartorder_ai","digital-acoustics","acrelec","lumen"]},"sourceExternalId":{"description":"Identifier within the provided audio source","type":"string"}},"additionalProperties":false},"liveData":{"description":"Enable live data to be inserted","type":"boolean"},"speechToText":{"type":"object","properties":{"provider":{"description":"Speech-to-text provider and model","type":"string","enum":["deepgram","polaris-default_for_source","polaris-base_8k","polaris-base_16k","polaris-food_8k","polaris-food_16k","polaris-bkuk","polaris-panda_express"]}},"additionalProperties":false}},"additionalProperties":false},"viDashboard":{"type":"object","properties":{"title":{"description":"Title for the dashboard","type":"string"},"time":{"description":"Config params for time display","type":"object","properties":{"enabled":{"description":"If time should be shown","type":"boolean"}},"additionalProperties":false},"theme":{"description":"Which theme to use (default is a dark mode)","type":"string","enum":["soundhound"]},"fields":{"description":"Field information for dashboard","type":"array","items":{"type":"array","items":{"type":"object","properties":{"id":{"description":"ID for component","type":"string"},"component":{"description":"Name of the component to use","type":"string"},"props":{"description":"Props for component","type":"string"},"refreshSeconds":{"description":"How many seconds before the component should refresh the data","type":"integer","format":"int64"},"hide":{"description":"If component should be hidden","type":"boolean"}},"required":["id","component","props"],"additionalProperties":false}}},"refreshSeconds":{"description":"How many seconds before the dashboard should refresh the data","type":"integer","format":"int64"}},"required":["fields"],"additionalProperties":false}},"additionalProperties":false}},"required":["version","configurations"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Concepts"],"summary":"Fetch configurations for the specified `concept-id`","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/concepts/{concept-id}/configurations/{namespace}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"},"namespace":{"type":"string","enum":["menu-board"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"},"namespace":{"type":"string","enum":["menu-board"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"endOfOrderUpsell":{"description":"Whether the end of order upsell feature is turned on for the location","type":"boolean"},"comboUpsell":{"description":"Whether the combo upsell feature is turned on for the location","type":"boolean"},"comboSizeUpsell":{"description":"Whether the upsize combo feature is turned on","type":"boolean"},"sideUpsizeUpsell":{"description":"Whether the side upsize combo feature is turned on","type":"boolean"},"speakingMode":{"description":"What speaking mode the analysts have set for the current location","type":"string","enum":["Terse","None","Normal"]},"forceReadCartSummaryOnCheckout":{"description":"Force cart readback on checkout even when speaking mode is terse","type":"boolean"},"smartlane":{"description":"Whether smart lane is enabled for the current location","type":"boolean"},"mobileOrderPickup":{"description":"Whether mobile order pickup is enabled for the current location","type":"boolean"},"rtoEnabled":{"description":"Ability to turn on/off RTO","type":"boolean"},"realtimeApiProvider":{"description":"Which realtime API provider to use","type":"string","enum":["openai","azure","tempus","xai"]},"realtimeProviderFallbackSequence":{"description":"Ordered fallback sequence of realtime API providers","type":"array","items":{"type":"string","enum":["openai","azure","tempus","xai"]}},"enableSkipTurn":{"description":"Whether the bot is allowed to skip turns when detecting background noise","type":"boolean"},"transcriptionModelConfig":{"description":"Which transcription model to use","type":"string","enum":["polaris_base_8k","polaris_base_16k","polaris_food_8k","polaris_food_16k","polaris_bkuk","polaris_panda_express","polaris_kfc"]},"realtimeInputMode":{"description":"What input mode to use for realtime","type":"string","enum":["audio","text"]},"inputAudioNoiseReduction":{"description":"What value to send to openAI for noise reduction","type":"string","enum":["far_field","near_field"]},"enableLlmRewriter":{"description":"Whether or not to enable LLM Rewriter","type":"boolean"},"polaris":{"description":"Polaris configuration","type":"object","properties":{"minTokens":{"description":"Minimum tokens for polaris","type":"integer","format":"int64"},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"},"backtrackMs":{"description":"Backtrack milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"deepgram":{"description":"Deepgram transcription configuration","type":"object","properties":{"enabled":{"description":"Whether Deepgram is used for transcriptions","type":"boolean"},"language":{"description":"Deepgram language mode","type":"string","enum":["en","multi"]},"useKeyterms":{"description":"Whether to pass boost phrases as Deepgram keyterms","type":"boolean"},"endpointingMs":{"description":"Trailing silence before Deepgram ends an utterance. Defaults to segment silence when unset.","type":"integer","format":"int64"}},"additionalProperties":false},"uiPresent":{"description":"Whether or not a UI is present for ordering","type":"boolean"},"semanticEot":{"description":"Semantic eot config","type":"object","properties":{"enabled":{"description":"If semantic eot is enabled","type":"boolean"},"completeDelayMs":{"description":"EOT complete delay in milliseconds","type":"integer","format":"int64"},"maybeCompleteDelayMs":{"description":"EOT maybe complete delay in milliseconds","type":"integer","format":"int64"}},"additionalProperties":false},"includeDescription":{"description":"Whether to include description in the ordering bot","type":"boolean"},"openaiSemanticVad":{"description":"Whether OpenAI Semantic VAD is enabled","type":"boolean"},"openaiSemanticVadEagerness":{"description":"OpenAI Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"supportedLanguages":{"description":"Languages supported by the ordering bot","type":"array","items":{"type":"string","enum":["English","Spanish"]}},"tempusConfig":{"description":"Config params for tempus llm","type":"object","properties":{"model":{"description":"Model version of tempus","type":"string"},"voice":{"description":"Name of voice used for tempus","type":"string"},"temperature":{"description":"Temperature to be passed to the Tempus provider","type":"number","format":"double","minimum":0,"maximum":1},"semanticVad":{"description":"Whether Tempus semantic VAD is enabled","type":"boolean"},"semanticVadEagerness":{"description":"Tempus Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"silenceDurationMs":{"description":"The amount of time the AI takes to respond after the user stops speaking","type":"integer","format":"int64"},"voiceSpeed":{"description":"Playback speed of TTS output","type":"number","format":"double"},"delayStartMs":{"description":"The amount of time the AI waits to respond when the LLM determines the user has not finished speaking","type":"integer","format":"int64"}},"additionalProperties":false},"backupVad":{"description":"Whether the backup VAD feature is turned on","type":"boolean"},"askForCollectionTimeAndName":{"description":"Whether the collection of time and name feature is turned on","type":"boolean"},"llmModel":{"description":"What llm model and version to use","type":"string","enum":["gpt-realtime","gpt-realtime-1.5","gpt-realtime-2","gpt-realtime-2.1"]},"manualSegmentation":{"description":"When set execute manual segmentation based on the config","type":"object","properties":{"type":{"description":"Type of segmentation","type":"string","enum":["fallback_segmentation"]},"config":{"description":"Config params for the segmentation","type":"object","properties":{"type":{"description":"Type of fallback segmentation","type":"string","enum":["polaris_vad_segmentation"]},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false}},"additionalProperties":false},"responseStyle":{"description":"encourage the LLM towards specific ways of responding","type":"object","properties":{"basicUpdateCartSuccess":{"description":"when a basic update cart is called successfully","type":"string"},"invalidOptions":{"description":"when the customer or LLM adds invalid options to an item","type":"string"},"slotFilling":{"description":"when slot filling","type":"string"},"disambiguation":{"description":"when disambiguating","type":"string"}},"additionalProperties":false},"promptConfig":{"description":"Configuration for templated fields in the ordering bot's system instructions","type":"object","properties":{"introduction":{"type":"string"},"language":{"type":"string"},"unambiguousItemName":{"type":"string"},"unambiguousItemNameSimilarMatches":{"type":"string"},"ambiguousItemName":{"type":"string"},"ambiguousItemNameMatches":{"type":"string"},"conceptSpecificOrderingInstructions":{"type":"string"},"comboUpgradeExampleItem":{"type":"string"},"comboUpgradeExampleCombo":{"type":"string"},"comboUpgradeExampleOption":{"type":"string"}},"additionalProperties":false},"confirmOrderOnUi":{"description":"Whether to show order confirmation on the UI","type":"boolean"},"maxAllowedConsecutiveNudges":{"description":"Max number of allowed consecutive nudges before we end the session.","type":"integer","format":"int64"},"multimodalSegmentation":{"description":"Enable multimodal segmentation. Takes precedence over manual segmentation when both are enabled.","type":"object","properties":{"polarisConfig":{"description":"Polaris VAD config for multimodal segmentation","type":"object","properties":{"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"openaiNoiseReduction":{"description":"OpenAI input audio noise reduction setting","type":"string","enum":["far_field","near_field"]},"openaiEagerness":{"description":"OpenAI semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]}},"additionalProperties":false},"enableQuietSpeechDetection":{"description":"Whether quiet speech detection is enabled","type":"boolean"},"boostPhrases":{"description":"ASR boost phrases","type":"array","items":{"type":"string"}},"namespace":{"type":"string","enum":["ordering-bot"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"prompt":{"description":"Prompt for the sales smart ordering demo","type":"string"},"menuData":{"description":"Menu data for the sales smart ordering demo","type":"string"},"configuration":{"description":"Arbitrary sales smart ordering demo config","type":"string"},"namespace":{"type":"string","enum":["sales-smart-ordering-demo"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"sendToHuman":{"description":"Configuration to destinations for each send to human reason","type":"object","properties":{"default":{"description":"Default if no language specified","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"en":{"description":"English overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"es":{"description":"Spanish overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}}},"additionalProperties":false},"namespace":{"type":"string","enum":["vox"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"rateLimit":{"description":"the rate limit set by the POS for hitting their APIs (hits/s)","type":"integer","format":"int64"},"namespace":{"type":"string","enum":["pos"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"description":"The `feature-flags` map is 2 levels, `feature` and then `flag`","type":"object","properties":{"conceptMenu":{"description":"Flags associated with concept oriented menu, i.e. `concept/entities`","type":"object","properties":{"import":{"description":"Enable concept menu for importing","type":"boolean"},"order":{"description":"Enable concept menu for ordering; requires `import` is enabled","type":"boolean"}},"additionalProperties":false},"namespace":{"type":"string","enum":["feature-flags"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"occasions":{"description":"Per-occasion ordering settings for a location","type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false},"xAllOf":[{"type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false}},{}]},"textToPay":{"description":"Text-to-pay payment link message","type":"object","properties":{"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false},"textReceipt":{"description":"Text the customer a link to their receipt after a successful submit. Each list narrows when\n                   it's sent; an absent list matches everything","type":"object","properties":{"enabled":{"description":"Whether text receipts are sent","type":"boolean"},"tenders":{"description":"Only send for these tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}},"occasions":{"description":"Only send for these occasions","type":"array","items":{"type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]}},"orderUrgencies":{"description":"Only send for these order urgencies; FUTURE is an order ahead","type":"array","items":{"type":"string","enum":["ASAP","IMMEDIATE","FUTURE"]}},"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false},"namespace":{"type":"string","enum":["pay"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"features":{"description":"List of VI features","type":"array","items":{"type":"string","enum":["customer-effort-score","menu-items","upsell"]}},"audio":{"type":"object","properties":{"source":{"type":"string","enum":["hme","smartorder_ai","digital-acoustics","acrelec","lumen"]},"sourceExternalId":{"description":"Identifier within the provided audio source","type":"string"}},"additionalProperties":false},"liveData":{"description":"Enable live data to be inserted","type":"boolean"},"speechToText":{"type":"object","properties":{"provider":{"description":"Speech-to-text provider and model","type":"string","enum":["deepgram","polaris-default_for_source","polaris-base_8k","polaris-base_16k","polaris-food_8k","polaris-food_16k","polaris-bkuk","polaris-panda_express"]}},"additionalProperties":false},"namespace":{"type":"string","enum":["voice-insights"]},"version":{"type":"string","xNullable":true}},"required":["namespace","version"],"additionalProperties":false},{"type":"object","properties":{"title":{"description":"Title for the dashboard","type":"string"},"time":{"description":"Config params for time display","type":"object","properties":{"enabled":{"description":"If time should be shown","type":"boolean"}},"additionalProperties":false},"theme":{"description":"Which theme to use (default is a dark mode)","type":"string","enum":["soundhound"]},"fields":{"description":"Field information for dashboard","type":"array","items":{"type":"array","items":{"type":"object","properties":{"id":{"description":"ID for component","type":"string"},"component":{"description":"Name of the component to use","type":"string"},"props":{"description":"Props for component","type":"string"},"refreshSeconds":{"description":"How many seconds before the component should refresh the data","type":"integer","format":"int64"},"hide":{"description":"If component should be hidden","type":"boolean"}},"required":["id","component","props"],"additionalProperties":false}}},"refreshSeconds":{"description":"How many seconds before the dashboard should refresh the data","type":"integer","format":"int64"},"namespace":{"type":"string","enum":["vi-dashboard"]},"version":{"type":"string","xNullable":true}},"required":["fields","namespace","version"],"additionalProperties":false}]},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"400":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"path","name":"namespace","description":"","type":"string","required":true,"enum":["menu-board","ordering-bot","sales-smart-ordering-demo","vox","pos","feature-flags","pay","voice-insights","vi-dashboard"]},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Concepts"],"summary":"Fetch specific configuration for specified `concept-id`","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/concepts/{concept-id}/menu/selections":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"conceptId":{"description":"unique id of specified concept","type":"integer","format":"int64","minimum":0},"categories":{"description":"List of categories owned by specified concept","type":"array","items":{"type":"object","properties":{"id":{"description":"Unique ID for a `category`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"elementType":{"description":"The `type` of `element`","type":"string","enum":["modifier","combo","group","menu-item","organizational","ingredient","special-instruction"]},"lookupName":{"description":"Lookup name of the `category`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"string"}]},"displayName":{"description":"Display name of the `category`","type":"string","minLength":1},"displayPlural":{"description":"Pluralized display name of the `category`","type":"string"},"synonyms":{"description":"Synonyms of this `category`","type":"array","items":{"type":"string","minLength":1}},"parentId":{"description":"ID of parent `category`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"description":{"description":"Description of the `category`","type":"string"},"proseHint":{"description":"TODO","type":"object","properties":{"enUs":{"description":"Language","type":"object","properties":{"readDescription":{"description":"If true, dictate description of category","type":"boolean"},"readbackOrder":{"description":"Order to dictate elements within category","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"readbackQuantity":{"description":"How many objects to dictate","type":"integer","format":"int64"},"readbackCategories":{"description":"Order of categories to dictate within category","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"modOrder":{"description":"TODO","type":"integer","format":"int64"},"crossSell":{"description":"TODO","type":"object","properties":{"elementId":{"description":"element id for cross selling","type":"integer","format":"int64"},"categoryId":{"description":"category id for cross selling","type":"integer","format":"int64"}},"additionalProperties":false},"helpAddItem":{"description":"Additional text related to item","type":"string"}},"additionalProperties":false}},"additionalProperties":false}},"required":["id","element-type","lookup-name","display-name","display-plural","synonyms","parent-id","description"],"additionalProperties":false}},"elements":{"description":"List of elements owned by specified concept","type":"array","items":{"type":"object","properties":{"id":{"description":"The `id` of the `element`","type":"integer","format":"int64","minimum":0},"elementType":{"description":"The `type` of `element`","type":"string","enum":["modifier","combo","group","menu-item","organizational","ingredient","special-instruction"]},"lookupName":{"description":"Lookup name of this `element`","type":"string","minLength":1},"displayName":{"description":"Display name of this `element`","type":"string","minLength":1},"displayPlural":{"description":"Pluralized display name of this `element`","type":"string"},"synonyms":{"description":"Synonyms of this `element`","type":"array","items":{"type":"string","minLength":1}},"categoryId":{"description":"The `category-id` of the immediate parent `category` of this `selection-group`","type":"integer","format":"int64","minimum":0},"price":{"description":"Price of `element`","type":"string","enum":["not-available"],"xAnyOf":[{"type":"string","enum":["not-available"]},{"type":"integer","format":"int64","minimum":0}]},"description":{"description":"Description of the `element`","type":"string"},"partitions":{"description":"How many partitions this element can support. 1 means no partitions","type":"integer","format":"int64","minimum":1},"proseHint":{"description":"TODO","type":"object","properties":{"enUs":{"description":"Language","type":"object","properties":{"readDescription":{"description":"If true, dictate description of category","type":"boolean"},"readbackOrder":{"description":"Order to dictate elements within category","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"readbackQuantity":{"description":"How many objects to dictate","type":"integer","format":"int64"},"readbackCategories":{"description":"Order of categories to dictate within category","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"modOrder":{"description":"TODO","type":"integer","format":"int64"},"crossSell":{"description":"TODO","type":"object","properties":{"elementId":{"description":"element id for cross selling","type":"integer","format":"int64"},"categoryId":{"description":"category id for cross selling","type":"integer","format":"int64"}},"additionalProperties":false},"helpAddItem":{"description":"Additional text related to item","type":"string"}},"additionalProperties":false}},"additionalProperties":false},"upgradeElementIds":{"description":"The array of `element-ids` this element can be upgraded to","type":"array","items":{"type":"integer","format":"int64","minimum":0}}},"required":["id","element-type","lookup-name","display-name","display-plural","synonyms","category-id","price","description","partitions","upgrade-element-ids"],"additionalProperties":false}},"selections":{"description":"List of selection-based products for specified concept","type":"array","items":{"type":"object","properties":{"id":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":0},"productOwnerId":{"description":"The `element-id` of this `selection`s product owner","type":"integer","format":"int64","minimum":0},"ownerId":{"description":"The `element-id` of this `selection`s owner","type":"integer","format":"int64","minimum":0},"elementId":{"description":"The `element-id` of this `selection`","type":"integer","format":"int64","minimum":0},"categoryId":{"description":"The `category-id` that this `selection` belongs to","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"mutualExclusions":{"description":"Also known as `anti-elements`, cannot be selected at the same time as the elements listed","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"defaultMode":{"description":"Default behaviour of this `selection`","type":"string","enum":["never","on-request","always"]},"defaultQuantity":{"description":"Default quantity of this `selection`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"groups":{"description":"The `groups` of this selection.  Used for menu fetching.","type":"array","items":{"type":"object","properties":{"id":{"description":"ID of this `selection` `group` from menu.element_selection_groups_v2","type":"integer","format":"int64","minimum":0},"productOwnerId":{"description":"The `element-id` of this `selection`s product owner","type":"integer","format":"int64","minimum":0},"ownerId":{"description":"The `element-id` of this `selection`s owner","type":"integer","format":"int64","minimum":0},"categoryId":{"description":"The `category-id` of the immediate parent `category` of this `group`","type":"integer","format":"int64","minimum":0},"minSelections":{"description":"The minimum amount of `selections` to fulfill this `selection-group`","type":"integer","format":"int64","minimum":0},"maxSelections":{"description":"The maximum amount of `selections` to fulfill this `selection-group`","type":"string","enum":["no-limit"],"xAnyOf":[{"type":"string","enum":["no-limit"]},{"type":"integer","format":"int64","minimum":1}]},"minQuantity":{"description":"Minimum quantity a user must set on a single child `selection`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"maxQuantity":{"description":"Maximum quantity a user must set on a single child `selection`","type":"integer","format":"int64","minimum":1},"partitionable":{"description":"Whether this group can be split across partitions","type":"boolean"},"priority":{"description":"Represents the priority of this item against it's immediate peers","type":"integer","format":"int64","minimum":0},"helpPrompt":{"description":"TODO","type":"string"},"upsell":{"description":"When true upsell this group","type":"boolean"},"muted":{"description":"When true, don't verbalize this group","type":"boolean"},"mutedSelections":{"description":"Selections in this group that shouldn't be spoken out","type":"array","items":{"type":"integer","format":"int64"}},"readbackOrder":{"description":"Order in which to list out the selections","type":"array","items":{"type":"integer","format":"int64"}},"readbackQuantity":{"description":"How many selections to readback when talking about this group","type":"integer","format":"int64","minimum":0},"promptOverride":{"description":"Response text when generating a prompt for this group","type":"string"},"selections":{"type":"array","items":{"$ref":"#/definitions/ramsay.http.router.routes.v3.concepts.selections.schema.selection"}}},"required":["id","product-owner-id","owner-id","category-id","min-selections","max-selections","min-quantity","max-quantity","partitionable","priority","help-prompt","upsell","muted","muted-selections","readback-order","readback-quantity","prompt-override"],"additionalProperties":false}}},"required":["id","product-owner-id","owner-id","element-id","category-id","mutual-exclusions"],"additionalProperties":false}}},"required":["version","concept-id","categories","elements","selections"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"400":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"concept-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Concepts"],"summary":"Fetch selections menu for specified `concept`","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/locations":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"origin":{"type":"object","properties":{"zipCode":{"type":"string"},"radius":{"type":"number","format":"double"}},"required":["zip-code","radius"],"additionalProperties":false},"limitPerConcept":{"description":"Absent when no per-concept limit was applied (`publicConceptId` given)","type":"integer","format":"int64"},"limit":{"description":"Maximum number of locations returned, when a `limit` was given","type":"integer","format":"int64"},"filters":{"type":"object","properties":{"cuisines":{"type":"array","items":{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]}},"occasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]}}},"required":["cuisines","occasions"],"additionalProperties":false},"totalLocations":{"type":"integer","format":"int64"},"locations":{"type":"array","items":{"type":"object","properties":{"concept":{"description":"The brand the location is part of.","type":"object","properties":{"name":{"description":"Display name of the concept.","type":"string"},"id":{"description":"Unique identifier for the concept.","type":"string"},"primaryColor":{"description":"Color for UI rendering.","type":"string"},"logoUrl":{"description":"URL to the concept logo image.","type":"string"},"cuisines":{"description":"Cuisines that the concept caters to.","type":"array","items":{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]}},"orderingUrl":{"description":"URL used for ordering / QR code generation.","type":"string"}},"required":["name","id","primary-color","logo-url","cuisines","ordering-url"],"additionalProperties":false},"location":{"type":"object","properties":{"id":{"description":"Unique identifier for the location.","type":"string"},"name":{"description":"Name of location","type":"string"},"address":{"title":"Delivery address validation schema","type":"object","properties":{"streetAddress1":{"type":"string"},"streetAddress2":{"type":"string","xNullable":true},"city":{"type":"string"},"stateCode":{"type":"string"},"postalCode":{"type":"string"},"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"}},"required":["street-address-1","city","state-code","postal-code"],"additionalProperties":false},"phoneNumber":{"description":"E.164 formatted phone number","xAnyOf":[{},{"type":"string"}]},"distance":{"description":"Distance from the ZIP code origin, in miles.","type":"number","format":"double"},"occasionsSupported":{"description":"Occasions supported by the location.","type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]}},"posProvider":{"description":"POS provider for this location's concept","type":"string","minLength":1},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}},"additionalProperties":false},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}},"additionalProperties":false}},"required":["id","name","address","phone-number","distance","occasions-supported"],"additionalProperties":false},"featuredItems":{"description":"Featured items for the location.","type":"array","items":{"type":"object","properties":{"name":{"description":"Display name of the item.","type":"string"},"price":{"description":"Item price (currency handling not specified; assumed USD unless otherwise defined).","type":"integer","format":"int64"},"imageUrl":{"description":"URL to the item image.","type":"string"},"description":{"description":"Short description of the item.","type":"string"},"displayOrder":{"description":"Display priority/order (lower appears first).","type":"integer","format":"int64"}},"required":["name","price","image-url","description","display-order"],"additionalProperties":false}}},"required":["concept","location","featured-items"],"additionalProperties":false}}},"required":["origin","filters","totalLocations","locations"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"query","name":"zipCode","description":"5 digit USPS zip code","type":"string","required":true},{"description":"in miles","format":"double","default":5.0,"name":"radius","maximum":50.0,"type":"number","minimum":0.1,"required":false,"in":"query"},{"description":"number of locations to return per concept","format":"int64","default":3,"name":"limitPerConcept","maximum":5,"type":"integer","minimum":1,"required":false,"in":"query"},{"in":"query","name":"cuisines","description":"list of cuisines to search for","type":"string","required":false,"enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"],"xAnyOf":[{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]},{"type":"array","items":{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]}}]},{"in":"query","name":"occasions","description":"list of occasions to search for","type":"string","required":false,"enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"],"xAnyOf":[{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]},{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]}}]}],"tags":["Locations"],"summary":"return list of locations given filtering criteria"}},"/v3/locations/{location-id}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"location":{"type":"object","properties":{"id":{"description":"ID of this `location`","type":"integer","format":"int64","minimum":1},"available":{"description":"Whether this location is available","type":"boolean"},"name":{"description":"Name of this `location`","type":"string"},"streetAddress":{"description":"Street address of this `location`.","type":"string"},"city":{"description":"City this `location` is in","type":"string"},"stateCode":{"description":"US state of this `location` in 2 letter code form","type":"string","maxLength":3},"countryCode":{"description":"Country this `location` is in via code","type":"string"},"postalCode":{"description":"postal code of this `location`","type":"string"},"timezone":{"description":"Timezone of this location"},"telephone":{"description":"Phone number of this `location`"},"longitude":{"type":"number","format":"double","xNullable":true},"latitude":{"type":"number","format":"double","xNullable":true},"occasions":{"description":"List of `occasion`s part of this `location`","type":"array","items":{"type":"object","properties":{"id":{"description":"ID of this `occasion`","type":"integer","format":"int64","minimum":0},"occasion":{"description":"Enum of valid `occasion` types","type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]},"payment":{"description":"Field denoting whether `payment` is required or optional","type":"string","enum":["required","optional","prohibited"]},"available":{"description":"`true` if the `occasion` is available for ordering","type":"boolean"},"valid":{"description":"`true` if the `occasion` is valid and supported by the POS","type":"boolean"},"schedule":{"description":"The opening and closing times for this `occasion`","type":"array","items":{"type":"object","properties":{"opensAt":{"description":"The opening time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"The closing time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"],"additionalProperties":false}}},"required":["id","occasion","payment","available","valid","schedule"],"additionalProperties":false}},"tenders":{"description":"List of `tender`s part of this `location`","type":"array","items":{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["cash"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["cash"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false},{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["text-to-pay"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false},{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["prepaid"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false},{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["credit-card"]},"available":{"description":"Whether the `tender` is available","type":"boolean"},"cardType":{"description":"The kind of credit card","enum":["visa","master-card","american-express","diners-club","discover","j-c-b","jcb","insta-payment","maestro","unionpay",""]}},"required":["tender","available","card-type"],"additionalProperties":false}]}},"businessHours":{"description":"The hours this `location` is open, independent of any `occasion`","type":"array","items":{"type":"object","properties":{"opensAt":{"description":"The opening time for this segment of the location's business hours","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"The closing time for this segment of the location's business hours","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"],"additionalProperties":false}},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}},"additionalProperties":false},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}},"additionalProperties":false}},"required":["id","available","name","street-address","city","state-code","country-code","postal-code","timezone","telephone","longitude","latitude","occasions","tenders","business-hours"],"additionalProperties":false}},"required":["location"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Locations"],"summary":"Fetch individual location","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/locations/{location-id}/configurations":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"configurations":{"type":"object","properties":{"menuBoard":{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"}},"additionalProperties":false},"orderingBot":{"type":"object","properties":{"endOfOrderUpsell":{"description":"Whether the end of order upsell feature is turned on for the location","type":"boolean"},"comboUpsell":{"description":"Whether the combo upsell feature is turned on for the location","type":"boolean"},"comboSizeUpsell":{"description":"Whether the upsize combo feature is turned on","type":"boolean"},"sideUpsizeUpsell":{"description":"Whether the side upsize combo feature is turned on","type":"boolean"},"speakingMode":{"description":"What speaking mode the analysts have set for the current location","type":"string","enum":["Terse","None","Normal"]},"forceReadCartSummaryOnCheckout":{"description":"Force cart readback on checkout even when speaking mode is terse","type":"boolean"},"smartlane":{"description":"Whether smart lane is enabled for the current location","type":"boolean"},"mobileOrderPickup":{"description":"Whether mobile order pickup is enabled for the current location","type":"boolean"},"rtoEnabled":{"description":"Ability to turn on/off RTO","type":"boolean"},"realtimeApiProvider":{"description":"Which realtime API provider to use","type":"string","enum":["openai","azure","tempus","xai"]},"realtimeProviderFallbackSequence":{"description":"Ordered fallback sequence of realtime API providers","type":"array","items":{"type":"string","enum":["openai","azure","tempus","xai"]}},"enableSkipTurn":{"description":"Whether the bot is allowed to skip turns when detecting background noise","type":"boolean"},"transcriptionModelConfig":{"description":"Which transcription model to use","type":"string","enum":["polaris_base_8k","polaris_base_16k","polaris_food_8k","polaris_food_16k","polaris_bkuk","polaris_panda_express","polaris_kfc"]},"realtimeInputMode":{"description":"What input mode to use for realtime","type":"string","enum":["audio","text"]},"inputAudioNoiseReduction":{"description":"What value to send to openAI for noise reduction","type":"string","enum":["far_field","near_field"]},"enableLlmRewriter":{"description":"Whether or not to enable LLM Rewriter","type":"boolean"},"polaris":{"description":"Polaris configuration","type":"object","properties":{"minTokens":{"description":"Minimum tokens for polaris","type":"integer","format":"int64"},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"},"backtrackMs":{"description":"Backtrack milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"deepgram":{"description":"Deepgram transcription configuration","type":"object","properties":{"enabled":{"description":"Whether Deepgram is used for transcriptions","type":"boolean"},"language":{"description":"Deepgram language mode","type":"string","enum":["en","multi"]},"useKeyterms":{"description":"Whether to pass boost phrases as Deepgram keyterms","type":"boolean"},"endpointingMs":{"description":"Trailing silence before Deepgram ends an utterance. Defaults to segment silence when unset.","type":"integer","format":"int64"}},"additionalProperties":false},"uiPresent":{"description":"Whether or not a UI is present for ordering","type":"boolean"},"semanticEot":{"description":"Semantic eot config","type":"object","properties":{"enabled":{"description":"If semantic eot is enabled","type":"boolean"},"completeDelayMs":{"description":"EOT complete delay in milliseconds","type":"integer","format":"int64"},"maybeCompleteDelayMs":{"description":"EOT maybe complete delay in milliseconds","type":"integer","format":"int64"}},"additionalProperties":false},"includeDescription":{"description":"Whether to include description in the ordering bot","type":"boolean"},"openaiSemanticVad":{"description":"Whether OpenAI Semantic VAD is enabled","type":"boolean"},"openaiSemanticVadEagerness":{"description":"OpenAI Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"supportedLanguages":{"description":"Languages supported by the ordering bot","type":"array","items":{"type":"string","enum":["English","Spanish"]}},"tempusConfig":{"description":"Config params for tempus llm","type":"object","properties":{"model":{"description":"Model version of tempus","type":"string"},"voice":{"description":"Name of voice used for tempus","type":"string"},"temperature":{"description":"Temperature to be passed to the Tempus provider","type":"number","format":"double","minimum":0,"maximum":1},"semanticVad":{"description":"Whether Tempus semantic VAD is enabled","type":"boolean"},"semanticVadEagerness":{"description":"Tempus Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"silenceDurationMs":{"description":"The amount of time the AI takes to respond after the user stops speaking","type":"integer","format":"int64"},"voiceSpeed":{"description":"Playback speed of TTS output","type":"number","format":"double"},"delayStartMs":{"description":"The amount of time the AI waits to respond when the LLM determines the user has not finished speaking","type":"integer","format":"int64"}},"additionalProperties":false},"backupVad":{"description":"Whether the backup VAD feature is turned on","type":"boolean"},"askForCollectionTimeAndName":{"description":"Whether the collection of time and name feature is turned on","type":"boolean"},"llmModel":{"description":"What llm model and version to use","type":"string","enum":["gpt-realtime","gpt-realtime-1.5","gpt-realtime-2","gpt-realtime-2.1"]},"manualSegmentation":{"description":"When set execute manual segmentation based on the config","type":"object","properties":{"type":{"description":"Type of segmentation","type":"string","enum":["fallback_segmentation"]},"config":{"description":"Config params for the segmentation","type":"object","properties":{"type":{"description":"Type of fallback segmentation","type":"string","enum":["polaris_vad_segmentation"]},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false}},"additionalProperties":false},"responseStyle":{"description":"encourage the LLM towards specific ways of responding","type":"object","properties":{"basicUpdateCartSuccess":{"description":"when a basic update cart is called successfully","type":"string"},"invalidOptions":{"description":"when the customer or LLM adds invalid options to an item","type":"string"},"slotFilling":{"description":"when slot filling","type":"string"},"disambiguation":{"description":"when disambiguating","type":"string"}},"additionalProperties":false},"promptConfig":{"description":"Configuration for templated fields in the ordering bot's system instructions","type":"object","properties":{"introduction":{"type":"string"},"language":{"type":"string"},"unambiguousItemName":{"type":"string"},"unambiguousItemNameSimilarMatches":{"type":"string"},"ambiguousItemName":{"type":"string"},"ambiguousItemNameMatches":{"type":"string"},"conceptSpecificOrderingInstructions":{"type":"string"},"comboUpgradeExampleItem":{"type":"string"},"comboUpgradeExampleCombo":{"type":"string"},"comboUpgradeExampleOption":{"type":"string"}},"additionalProperties":false},"confirmOrderOnUi":{"description":"Whether to show order confirmation on the UI","type":"boolean"},"maxAllowedConsecutiveNudges":{"description":"Max number of allowed consecutive nudges before we end the session.","type":"integer","format":"int64"},"multimodalSegmentation":{"description":"Enable multimodal segmentation. Takes precedence over manual segmentation when both are enabled.","type":"object","properties":{"polarisConfig":{"description":"Polaris VAD config for multimodal segmentation","type":"object","properties":{"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"openaiNoiseReduction":{"description":"OpenAI input audio noise reduction setting","type":"string","enum":["far_field","near_field"]},"openaiEagerness":{"description":"OpenAI semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]}},"additionalProperties":false},"enableQuietSpeechDetection":{"description":"Whether quiet speech detection is enabled","type":"boolean"},"boostPhrases":{"description":"ASR boost phrases","type":"array","items":{"type":"string"}}},"additionalProperties":false},"salesSmartOrderingDemo":{"type":"object","properties":{"prompt":{"description":"Prompt for the sales smart ordering demo","type":"string"},"menuData":{"description":"Menu data for the sales smart ordering demo","type":"string"},"configuration":{"description":"Arbitrary sales smart ordering demo config","type":"string"}},"additionalProperties":false},"vox":{"type":"object","properties":{"sendToHuman":{"description":"Configuration to destinations for each send to human reason","type":"object","properties":{"default":{"description":"Default if no language specified","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"en":{"description":"English overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"es":{"description":"Spanish overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"pos":{"type":"object","properties":{"rateLimit":{"description":"the rate limit set by the POS for hitting their APIs (hits/s)","type":"integer","format":"int64"}},"additionalProperties":false},"featureFlags":{"description":"The `feature-flags` map is 2 levels, `feature` and then `flag`","type":"object","properties":{"conceptMenu":{"description":"Flags associated with concept oriented menu, i.e. `concept/entities`","type":"object","properties":{"import":{"description":"Enable concept menu for importing","type":"boolean"},"order":{"description":"Enable concept menu for ordering; requires `import` is enabled","type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"pay":{"type":"object","properties":{"occasions":{"description":"Per-occasion ordering settings for a location","type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false},"xAllOf":[{"type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false}},{}]},"textToPay":{"description":"Text-to-pay payment link message","type":"object","properties":{"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false},"textReceipt":{"description":"Text the customer a link to their receipt after a successful submit. Each list narrows when\n                   it's sent; an absent list matches everything","type":"object","properties":{"enabled":{"description":"Whether text receipts are sent","type":"boolean"},"tenders":{"description":"Only send for these tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}},"occasions":{"description":"Only send for these occasions","type":"array","items":{"type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]}},"orderUrgencies":{"description":"Only send for these order urgencies; FUTURE is an order ahead","type":"array","items":{"type":"string","enum":["ASAP","IMMEDIATE","FUTURE"]}},"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false}},"additionalProperties":false},"voiceInsights":{"type":"object","properties":{"features":{"description":"List of VI features","type":"array","items":{"type":"string","enum":["customer-effort-score","menu-items","upsell"]}},"audio":{"type":"object","properties":{"source":{"type":"string","enum":["hme","smartorder_ai","digital-acoustics","acrelec","lumen"]},"sourceExternalId":{"description":"Identifier within the provided audio source","type":"string"}},"additionalProperties":false},"liveData":{"description":"Enable live data to be inserted","type":"boolean"},"speechToText":{"type":"object","properties":{"provider":{"description":"Speech-to-text provider and model","type":"string","enum":["deepgram","polaris-default_for_source","polaris-base_8k","polaris-base_16k","polaris-food_8k","polaris-food_16k","polaris-bkuk","polaris-panda_express"]}},"additionalProperties":false}},"additionalProperties":false},"viDashboard":{"type":"object","properties":{"title":{"description":"Title for the dashboard","type":"string"},"time":{"description":"Config params for time display","type":"object","properties":{"enabled":{"description":"If time should be shown","type":"boolean"}},"additionalProperties":false},"theme":{"description":"Which theme to use (default is a dark mode)","type":"string","enum":["soundhound"]},"fields":{"description":"Field information for dashboard","type":"array","items":{"type":"array","items":{"type":"object","properties":{"id":{"description":"ID for component","type":"string"},"component":{"description":"Name of the component to use","type":"string"},"props":{"description":"Props for component","type":"string"},"refreshSeconds":{"description":"How many seconds before the component should refresh the data","type":"integer","format":"int64"},"hide":{"description":"If component should be hidden","type":"boolean"}},"required":["id","component","props"],"additionalProperties":false}}},"refreshSeconds":{"description":"How many seconds before the dashboard should refresh the data","type":"integer","format":"int64"}},"required":["fields"],"additionalProperties":false}},"additionalProperties":false}},"required":["configurations"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"ingress-identifier","description":"","type":"string","required":false},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Locations"],"summary":"Fetch configurations for specified location","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/locations/{location-id}/configurations/{location-id}/{namespace}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"},"namespace":{"type":"string","enum":["menu-board"]}},"required":["namespace"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"},"namespace":{"type":"string","enum":["menu-board"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"endOfOrderUpsell":{"description":"Whether the end of order upsell feature is turned on for the location","type":"boolean"},"comboUpsell":{"description":"Whether the combo upsell feature is turned on for the location","type":"boolean"},"comboSizeUpsell":{"description":"Whether the upsize combo feature is turned on","type":"boolean"},"sideUpsizeUpsell":{"description":"Whether the side upsize combo feature is turned on","type":"boolean"},"speakingMode":{"description":"What speaking mode the analysts have set for the current location","type":"string","enum":["Terse","None","Normal"]},"forceReadCartSummaryOnCheckout":{"description":"Force cart readback on checkout even when speaking mode is terse","type":"boolean"},"smartlane":{"description":"Whether smart lane is enabled for the current location","type":"boolean"},"mobileOrderPickup":{"description":"Whether mobile order pickup is enabled for the current location","type":"boolean"},"rtoEnabled":{"description":"Ability to turn on/off RTO","type":"boolean"},"realtimeApiProvider":{"description":"Which realtime API provider to use","type":"string","enum":["openai","azure","tempus","xai"]},"realtimeProviderFallbackSequence":{"description":"Ordered fallback sequence of realtime API providers","type":"array","items":{"type":"string","enum":["openai","azure","tempus","xai"]}},"enableSkipTurn":{"description":"Whether the bot is allowed to skip turns when detecting background noise","type":"boolean"},"transcriptionModelConfig":{"description":"Which transcription model to use","type":"string","enum":["polaris_base_8k","polaris_base_16k","polaris_food_8k","polaris_food_16k","polaris_bkuk","polaris_panda_express","polaris_kfc"]},"realtimeInputMode":{"description":"What input mode to use for realtime","type":"string","enum":["audio","text"]},"inputAudioNoiseReduction":{"description":"What value to send to openAI for noise reduction","type":"string","enum":["far_field","near_field"]},"enableLlmRewriter":{"description":"Whether or not to enable LLM Rewriter","type":"boolean"},"polaris":{"description":"Polaris configuration","type":"object","properties":{"minTokens":{"description":"Minimum tokens for polaris","type":"integer","format":"int64"},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"},"backtrackMs":{"description":"Backtrack milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"deepgram":{"description":"Deepgram transcription configuration","type":"object","properties":{"enabled":{"description":"Whether Deepgram is used for transcriptions","type":"boolean"},"language":{"description":"Deepgram language mode","type":"string","enum":["en","multi"]},"useKeyterms":{"description":"Whether to pass boost phrases as Deepgram keyterms","type":"boolean"},"endpointingMs":{"description":"Trailing silence before Deepgram ends an utterance. Defaults to segment silence when unset.","type":"integer","format":"int64"}},"additionalProperties":false},"uiPresent":{"description":"Whether or not a UI is present for ordering","type":"boolean"},"semanticEot":{"description":"Semantic eot config","type":"object","properties":{"enabled":{"description":"If semantic eot is enabled","type":"boolean"},"completeDelayMs":{"description":"EOT complete delay in milliseconds","type":"integer","format":"int64"},"maybeCompleteDelayMs":{"description":"EOT maybe complete delay in milliseconds","type":"integer","format":"int64"}},"additionalProperties":false},"includeDescription":{"description":"Whether to include description in the ordering bot","type":"boolean"},"openaiSemanticVad":{"description":"Whether OpenAI Semantic VAD is enabled","type":"boolean"},"openaiSemanticVadEagerness":{"description":"OpenAI Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"supportedLanguages":{"description":"Languages supported by the ordering bot","type":"array","items":{"type":"string","enum":["English","Spanish"]}},"tempusConfig":{"description":"Config params for tempus llm","type":"object","properties":{"model":{"description":"Model version of tempus","type":"string"},"voice":{"description":"Name of voice used for tempus","type":"string"},"temperature":{"description":"Temperature to be passed to the Tempus provider","type":"number","format":"double","minimum":0,"maximum":1},"semanticVad":{"description":"Whether Tempus semantic VAD is enabled","type":"boolean"},"semanticVadEagerness":{"description":"Tempus Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"silenceDurationMs":{"description":"The amount of time the AI takes to respond after the user stops speaking","type":"integer","format":"int64"},"voiceSpeed":{"description":"Playback speed of TTS output","type":"number","format":"double"},"delayStartMs":{"description":"The amount of time the AI waits to respond when the LLM determines the user has not finished speaking","type":"integer","format":"int64"}},"additionalProperties":false},"backupVad":{"description":"Whether the backup VAD feature is turned on","type":"boolean"},"askForCollectionTimeAndName":{"description":"Whether the collection of time and name feature is turned on","type":"boolean"},"llmModel":{"description":"What llm model and version to use","type":"string","enum":["gpt-realtime","gpt-realtime-1.5","gpt-realtime-2","gpt-realtime-2.1"]},"manualSegmentation":{"description":"When set execute manual segmentation based on the config","type":"object","properties":{"type":{"description":"Type of segmentation","type":"string","enum":["fallback_segmentation"]},"config":{"description":"Config params for the segmentation","type":"object","properties":{"type":{"description":"Type of fallback segmentation","type":"string","enum":["polaris_vad_segmentation"]},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false}},"additionalProperties":false},"responseStyle":{"description":"encourage the LLM towards specific ways of responding","type":"object","properties":{"basicUpdateCartSuccess":{"description":"when a basic update cart is called successfully","type":"string"},"invalidOptions":{"description":"when the customer or LLM adds invalid options to an item","type":"string"},"slotFilling":{"description":"when slot filling","type":"string"},"disambiguation":{"description":"when disambiguating","type":"string"}},"additionalProperties":false},"promptConfig":{"description":"Configuration for templated fields in the ordering bot's system instructions","type":"object","properties":{"introduction":{"type":"string"},"language":{"type":"string"},"unambiguousItemName":{"type":"string"},"unambiguousItemNameSimilarMatches":{"type":"string"},"ambiguousItemName":{"type":"string"},"ambiguousItemNameMatches":{"type":"string"},"conceptSpecificOrderingInstructions":{"type":"string"},"comboUpgradeExampleItem":{"type":"string"},"comboUpgradeExampleCombo":{"type":"string"},"comboUpgradeExampleOption":{"type":"string"}},"additionalProperties":false},"confirmOrderOnUi":{"description":"Whether to show order confirmation on the UI","type":"boolean"},"maxAllowedConsecutiveNudges":{"description":"Max number of allowed consecutive nudges before we end the session.","type":"integer","format":"int64"},"multimodalSegmentation":{"description":"Enable multimodal segmentation. Takes precedence over manual segmentation when both are enabled.","type":"object","properties":{"polarisConfig":{"description":"Polaris VAD config for multimodal segmentation","type":"object","properties":{"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}},"additionalProperties":false},"openaiNoiseReduction":{"description":"OpenAI input audio noise reduction setting","type":"string","enum":["far_field","near_field"]},"openaiEagerness":{"description":"OpenAI semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]}},"additionalProperties":false},"enableQuietSpeechDetection":{"description":"Whether quiet speech detection is enabled","type":"boolean"},"boostPhrases":{"description":"ASR boost phrases","type":"array","items":{"type":"string"}},"namespace":{"type":"string","enum":["ordering-bot"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"prompt":{"description":"Prompt for the sales smart ordering demo","type":"string"},"menuData":{"description":"Menu data for the sales smart ordering demo","type":"string"},"configuration":{"description":"Arbitrary sales smart ordering demo config","type":"string"},"namespace":{"type":"string","enum":["sales-smart-ordering-demo"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"sendToHuman":{"description":"Configuration to destinations for each send to human reason","type":"object","properties":{"default":{"description":"Default if no language specified","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"en":{"description":"English overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}},"es":{"description":"Spanish overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"],"additionalProperties":false}}},"additionalProperties":false},"namespace":{"type":"string","enum":["vox"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"rateLimit":{"description":"the rate limit set by the POS for hitting their APIs (hits/s)","type":"integer","format":"int64"},"namespace":{"type":"string","enum":["pos"]}},"required":["namespace"],"additionalProperties":false},{"description":"The `feature-flags` map is 2 levels, `feature` and then `flag`","type":"object","properties":{"conceptMenu":{"description":"Flags associated with concept oriented menu, i.e. `concept/entities`","type":"object","properties":{"import":{"description":"Enable concept menu for importing","type":"boolean"},"order":{"description":"Enable concept menu for ordering; requires `import` is enabled","type":"boolean"}},"additionalProperties":false},"namespace":{"type":"string","enum":["feature-flags"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"occasions":{"description":"Per-occasion ordering settings for a location","type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false},"xAllOf":[{"type":"array","items":{"type":"object","properties":{"occasion":{"description":"The occasion type)","type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]},"enabled":{"description":"Whether this occasion is enabled/disabled","type":"string","enum":["enabled","disabled"]},"payment":{"description":"Whether customer payment is optional or required","type":"string","enum":["optional","required","prohibited"]},"instructions":{"description":"Free-text instructions for the occasion","type":"string"},"agentPayment":{"description":"Whether agent payment is optional or required","type":"string","enum":["optional","required"]},"priority":{"description":"Display/ordering priority","type":"integer","format":"int64"},"waitTime":{"description":"Estimated wait time","type":"integer","format":"int64"},"paymentTenders":{"description":"Accepted payment tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}}},"required":["occasion"],"additionalProperties":false}},{}]},"textToPay":{"description":"Text-to-pay payment link message","type":"object","properties":{"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false},"textReceipt":{"description":"Text the customer a link to their receipt after a successful submit. Each list narrows when\n                   it's sent; an absent list matches everything","type":"object","properties":{"enabled":{"description":"Whether text receipts are sent","type":"boolean"},"tenders":{"description":"Only send for these tenders","type":"array","items":{"type":"string","enum":["Cash","CreditCard","GiftCard","Check","TextToPay","Prepaid"]}},"occasions":{"description":"Only send for these occasions","type":"array","items":{"type":"string","enum":["CARRY_OUT","DELIVERY","CURBSIDE","DISPATCH","DRIVE_THRU","DINE_IN","CHIPOTLANE","PICK_UP_WINDOW","DRIVE_THRU_CURBSIDE","TEXT_DELIVERY"]}},"orderUrgencies":{"description":"Only send for these order urgencies; FUTURE is an order ahead","type":"array","items":{"type":"string","enum":["ASAP","IMMEDIATE","FUTURE"]}},"prefix":{"description":"Prefix template, e.g. `Luby's {city} ({street-address}) -`; defaults to the concept and location name. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"},"suffix":{"description":"Suffix template, e.g. `SMS terms at https://example.com/sms`. Placeholders: {concept-name} {location-name} and the location's fields, e.g. {city} {street-address} {state-code}\n   {postal-code}","type":"string"}},"additionalProperties":false},"namespace":{"type":"string","enum":["pay"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"features":{"description":"List of VI features","type":"array","items":{"type":"string","enum":["customer-effort-score","menu-items","upsell"]}},"audio":{"type":"object","properties":{"source":{"type":"string","enum":["hme","smartorder_ai","digital-acoustics","acrelec","lumen"]},"sourceExternalId":{"description":"Identifier within the provided audio source","type":"string"}},"additionalProperties":false},"liveData":{"description":"Enable live data to be inserted","type":"boolean"},"speechToText":{"type":"object","properties":{"provider":{"description":"Speech-to-text provider and model","type":"string","enum":["deepgram","polaris-default_for_source","polaris-base_8k","polaris-base_16k","polaris-food_8k","polaris-food_16k","polaris-bkuk","polaris-panda_express"]}},"additionalProperties":false},"namespace":{"type":"string","enum":["voice-insights"]}},"required":["namespace"],"additionalProperties":false},{"type":"object","properties":{"title":{"description":"Title for the dashboard","type":"string"},"time":{"description":"Config params for time display","type":"object","properties":{"enabled":{"description":"If time should be shown","type":"boolean"}},"additionalProperties":false},"theme":{"description":"Which theme to use (default is a dark mode)","type":"string","enum":["soundhound"]},"fields":{"description":"Field information for dashboard","type":"array","items":{"type":"array","items":{"type":"object","properties":{"id":{"description":"ID for component","type":"string"},"component":{"description":"Name of the component to use","type":"string"},"props":{"description":"Props for component","type":"string"},"refreshSeconds":{"description":"How many seconds before the component should refresh the data","type":"integer","format":"int64"},"hide":{"description":"If component should be hidden","type":"boolean"}},"required":["id","component","props"],"additionalProperties":false}}},"refreshSeconds":{"description":"How many seconds before the dashboard should refresh the data","type":"integer","format":"int64"},"namespace":{"type":"string","enum":["vi-dashboard"]}},"required":["fields","namespace"],"additionalProperties":false}]},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"path","name":"namespace","description":"","type":"string","required":true,"enum":["menu-board","ordering-bot","sales-smart-ordering-demo","vox","pos","feature-flags","pay","voice-insights","vi-dashboard"]},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Locations"],"summary":"Fetch specific configuration for specified location","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/locations/{location-id}/menu/selections/availability":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"locationId":{"description":"ID of the target location","type":"integer","format":"int64","minimum":0},"disabledSelections":{"type":"array","items":{"type":"object","properties":{"selectionId":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":1},"disabledBy":{"description":"tool, service or event that disabled this selection","type":"string"},"reason":{"description":"reason why it's disabled","type":"string"}},"required":["selection-id","disabled-by"],"additionalProperties":false}},"selectionSchedules":{"type":"array","items":{"type":"object","properties":{"selectionId":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":1},"schedule":{"type":"array","items":{"type":"object","properties":{"availableFrom":{"description":"when this selection starts availability","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"availableTo":{"description":"when this selection ends availability","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["available-from","available-to"],"additionalProperties":false}}},"required":["selection-id","schedule"],"additionalProperties":false}}},"required":["location-id","disabled-selections","selection-schedules"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"400":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Locations"],"summary":"86ing and menu schedule data for specified location","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/locations/{location-id}/pricing-data":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"locationId":{"description":"ID of the target location","type":"integer","format":"int64","minimum":0},"selections":{"description":"selection id (string) -> price (cents) or priority-ordered predicates","type":"object","additionalProperties":{"type":"integer","format":"int64","minimum":1,"xAnyOf":[{"type":"integer","format":"int64","minimum":1},{"type":"array","items":{"type":"object","properties":{"price":{"description":"Price in cents for this predicate","type":"integer","format":"int64","minimum":1},"siblings":{"description":"Selection ids whose presence triggers this price","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"atLeast":{"description":"How many `:siblings` must be present (default 1)","type":"integer","format":"int64","minimum":1},"quantity":{"description":"Quantity inputs for the selection itself","type":"object","properties":{"included":{"description":"Units of the selection itself that are free","type":"integer","format":"int64","minimum":0},"step":{"description":"Quantity increment the price is charged in","type":"integer","format":"int64","minimum":0},"minAggregate":{"description":"Minimum total quantity across the selection's group","type":"integer","format":"int64","minimum":0},"maxAggregate":{"description":"Maximum total quantity across the selection's group","type":"integer","format":"int64","minimum":0}},"additionalProperties":false},"partition":{"description":"When true, the selection can be applied to part of the item (half/half)","type":"boolean"}},"required":["price"],"additionalProperties":false}}]}},"groups":{"description":"selection-group id (string) -> group-level pricing policy. Deduced from the menu data, not\n      persisted. Present only for groups that carry a policy.","type":"object","additionalProperties":{"type":"object","properties":{"members":{"description":"The group's member selection ids","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"max":{"description":"When true, price by the MAX member present in an item, not the sum","type":"boolean"},"included":{"description":"The first N members present in an item price as 0 (bundled into the base price); only\n                   additional ones are charged (e.g. Casey's Create Your Own includes 1 topping).","type":"integer","format":"int64","minimum":1}},"required":["members"],"additionalProperties":false}},"version":{"description":"Version of the underlying menu data this response reflects","type":"string","xNullable":true}},"required":["location-id","selections"],"additionalProperties":false},"description":"","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":"The requested resource -- or, on a `?version=` request, any snapshot taken at or before that version -- could not be found. The body's `type` says which."},"304":{"description":"Not Modified: the `If-None-Match` / `If-Modified-Since` sent with the request matches the current version, so the client's copy is still good. No body.","headers":{"ETag":{"description":"Strong validator for this representation: the response's `version`, quoted. Send it back in `If-None-Match` to be answered `304` while it is still current.","type":"string"},"Last-Modified":{"description":"The same version as an HTTP-date. Send it back in `If-Modified-Since` for the same effect as `If-None-Match`, which takes precedence when both are sent.","type":"string"},"X-Snapshot":{"description":"Which path served the response: `HIT` (replayed from the snapshot store), `MISS` (generated, then stored), `FRESH` (always-regenerated endpoint) or `NOT-MODIFIED`. INFORMATIONAL ONLY, do not build against it.","type":"string"}}}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"location-id","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"query","name":"version","description":"Replay the snapshot as of this version instead of the current record: the one stored at exactly this version, or -- when none was -- the most recent one stored before it. The value is the `version` of an earlier response (equivalently its `ETag`, unquoted), or any timestamp to ask for whatever was current then. The response's `version` / `ETag` identify the snapshot actually served, which may predate the one requested.","type":"string","required":false}],"tags":["Locations"],"summary":"Fetch per-location pricing data keyed by selection id","description":"Snapshotted: the response body carries a `version` -- the timestamp of the most recent change\nto the data behind it -- and every distinct version is archived, so an earlier one can be\nfetched again.\n\n* `?version=<version>` replays the snapshot as of that version -- the one stored at exactly that version, else the most recent one stored before it -- or `404`s with `type: snapshot/not-found` when nothing that old was stored. The served snapshot's own version is what the body's `version` and the `ETag` report.\n* `ETag` and `Last-Modified` both derive from that version; sending either back in `If-None-Match` / `If-Modified-Since` is answered `304 Not Modified` with no body."}},"/v3/system-configurations/{namespace}/schema":{"get":{"responses":{"200":{"schema":{},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"namespace","description":"","type":"string","required":true,"enum":["ordering_bot","menu_board","feature_flags","vi_dashboard","voice_insights","vox","pos","pay","sales_smart_ordering_demo"]}],"tags":["System Configurations"],"summary":"Fetch schema of system configuration namespace"}},"/v4/concepts":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"concepts":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique public id of a concept","type":"string","minLength":1},"legacyId":{"description":"Legacy integer id of a concept","type":"integer","format":"int64","minimum":0},"name":{"description":"Name of a concept","type":"string","minLength":1},"posProvider":{"description":"POS provider for this concept","type":"string","minLength":1},"branding":{"description":"Data related to the concept branding","type":"object","properties":{"primaryColor":{"description":"Primary concept color","type":"string","minLength":1,"xAnyOf":[{"type":"string","minLength":1},{"type":"null"}]},"logoUrl":{"description":"URL that returns the logo of the concept","type":"string","minLength":1,"xAnyOf":[{"type":"string","minLength":1},{"type":"null"}]},"assets":{"description":"Available assets for the concept","type":"array","items":{"type":"object","properties":{"url":{"description":"URL that returns this image","type":"string","minLength":1},"type":{"description":"The type of image (logo, splash, etc)","type":"string","minLength":1},"description":{"description":"Description of the image","type":"string","minLength":1,"xAnyOf":[{"type":"string","minLength":1},{"type":"null"}]},"dimensions":{"description":"dimensions of the image in pixels","type":"object","properties":{"height":{"description":"Height in pixels","type":"integer","format":"int64","minimum":1},"width":{"description":"Width in pixels","type":"integer","format":"int64","minimum":1}},"required":["height","width"],"additionalProperties":false}},"required":["url","type","description","dimensions"],"additionalProperties":false}}},"required":["primary-color","logo-url","assets"],"additionalProperties":false},"cuisines":{"description":"List of types of food served by the concept","type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1}},"required":["label"],"additionalProperties":false}},"orderingUrls":{"description":"List of URLs used for different occasion ordering","type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1},"occasion":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}},"required":["url","occasion"],"additionalProperties":false}}},"required":["id","legacy-id","name","branding","cuisines","ordering-urls"],"additionalProperties":false}}},"required":["concepts"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["Concepts"],"summary":"Fetch list of all concepts"}},"/v4/concepts/{public-concept-id}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"concept":{"type":"object","properties":{"id":{"description":"Unique public id of a concept","type":"string","minLength":1},"legacyId":{"description":"Legacy integer id of a concept","type":"integer","format":"int64","minimum":0},"name":{"description":"Name of a concept","type":"string","minLength":1},"posProvider":{"description":"POS provider for this concept","type":"string","minLength":1},"branding":{"description":"Data related to the concept branding","type":"object","properties":{"primaryColor":{"description":"Primary concept color","type":"string","minLength":1,"xAnyOf":[{"type":"string","minLength":1},{"type":"null"}]},"logoUrl":{"description":"URL that returns the logo of the concept","type":"string","minLength":1,"xAnyOf":[{"type":"string","minLength":1},{"type":"null"}]},"assets":{"description":"Available assets for the concept","type":"array","items":{"type":"object","properties":{"url":{"description":"URL that returns this image","type":"string","minLength":1},"type":{"description":"The type of image (logo, splash, etc)","type":"string","minLength":1},"description":{"description":"Description of the image","type":"string","minLength":1,"xAnyOf":[{"type":"string","minLength":1},{"type":"null"}]},"dimensions":{"description":"dimensions of the image in pixels","type":"object","properties":{"height":{"description":"Height in pixels","type":"integer","format":"int64","minimum":1},"width":{"description":"Width in pixels","type":"integer","format":"int64","minimum":1}},"required":["height","width"],"additionalProperties":false}},"required":["url","type","description","dimensions"],"additionalProperties":false}}},"required":["primary-color","logo-url","assets"],"additionalProperties":false},"cuisines":{"description":"List of types of food served by the concept","type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1}},"required":["label"],"additionalProperties":false}},"orderingUrls":{"description":"List of URLs used for different occasion ordering","type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1},"occasion":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}},"required":["url","occasion"],"additionalProperties":false}}},"required":["id","legacy-id","name","branding","cuisines","ordering-urls"],"additionalProperties":false}},"required":["concept"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-concept-id","description":"","type":"string","required":true,"minLength":1}],"tags":["Concepts"],"summary":"Fetch individual concept"}},"/v4/concepts/{public-concept-id}/menu":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"description":{"type":"string"},"featured":{"type":"boolean"}},"required":["id","item-id","kind","label","sort-order","suppress"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"description":{"type":"string"},"featured":{"type":"boolean"}},"required":["id","item-id","kind","label","sort-order","suppress"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"description":{"type":"string"},"defaultEntity":{"type":"boolean"},"defaultQuantity":{"type":"integer","format":"int64"},"minimumQuantity":{"type":"integer","format":"int64"},"maximumQuantity":{"type":"integer","format":"int64"}},"required":["id","item-id","kind","label","sort-order","suppress"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"description":{"type":"string"},"required":{"type":"boolean"},"minimumChoices":{"type":"integer","format":"int64","minimum":0},"maximumChoices":{"type":"integer","format":"int64","minimum":1},"minimumChoiceQuantity":{"type":"integer","format":"int64"},"maximumChoiceQuantity":{"type":"integer","format":"int64"},"minimumTotalQuantity":{"type":"integer","format":"int64"},"maximumTotalQuantity":{"type":"integer","format":"int64"},"quantityIncrement":{"type":"integer","format":"int64"}},"required":["id","item-id","kind","label","sort-order","suppress","required","minimum-choices"],"additionalProperties":false}]}},"sections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":"string"},"itemIds":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","label","item-ids"],"additionalProperties":false}}},"required":["entities","sections"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-concept-id","description":"","type":"string","required":true,"minLength":1}],"tags":["Concepts"],"summary":"Fetch all menu entities for a concept"}},"/v4/concepts/{public-concept-id}/menu/labels":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1}},"required":["label"],"additionalProperties":false}},"constraints":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1}},"required":["label"],"additionalProperties":false}},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1}},"required":["label"],"additionalProperties":false}},"sections":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1},"items":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1}},"required":["label"],"additionalProperties":false}}},"required":["label","items"],"additionalProperties":false}}},"required":["items","constraints","options","sections"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-concept-id","description":"","type":"string","required":true,"minLength":1}],"tags":["Concepts"],"summary":"Fetch distinct menu labels for a concept"}},"/v4/concepts/{public-concept-id}/locations":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"locations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"legacyId":{"type":"integer","format":"int64","minimum":0},"label":{"type":"string","minLength":1},"streetAddress":{"type":"string"},"city":{"type":"string"},"stateCode":{"type":"string"},"postalCode":{"type":"string"},"countryCode":{"type":"string"},"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"},"telephone":{"type":"string"},"timezone":{"type":"string"},"available":{"type":"boolean"},"distance":{"description":"Distance from the requested point, in miles. Present only when `latitude`/`longitude` are given.","type":"number","format":"double"},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}},"additionalProperties":false},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}},"additionalProperties":false}},"required":["id","legacy-id","label","available"],"additionalProperties":false}}},"required":["locations"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-concept-id","description":"","type":"string","required":true,"minLength":1},{"in":"query","name":"latitude","description":"","type":"number","required":false,"format":"double","minimum":-90.0,"maximum":90.0},{"in":"query","name":"longitude","description":"","type":"number","required":false,"format":"double","minimum":-180.0,"maximum":180.0},{"description":"in miles, used with `latitude`/`longitude`","format":"double","default":10.0,"name":"radius","maximum":50.0,"type":"number","minimum":0.1,"required":false,"in":"query"}],"tags":["Concepts"],"summary":"Fetch all locations for a concept, optionally only those near `latitude`/`longitude`"}},"/v4/concepts/{public-concept-id}/locations/{pos-location-id}/menu":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"featured":{"type":"boolean"}},"required":["id","item-id","kind","label","sort-order","suppress","available"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"featured":{"type":"boolean"}},"required":["id","item-id","kind","label","sort-order","suppress","available"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"defaultEntity":{"type":"boolean"},"defaultQuantity":{"type":"integer","format":"int64"},"minimumQuantity":{"type":"integer","format":"int64"},"maximumQuantity":{"type":"integer","format":"int64"}},"required":["id","item-id","kind","label","sort-order","suppress","available"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"required":{"type":"boolean"},"minimumChoices":{"type":"integer","format":"int64","minimum":0},"maximumChoices":{"type":"integer","format":"int64","minimum":1},"minimumChoiceQuantity":{"type":"integer","format":"int64"},"maximumChoiceQuantity":{"type":"integer","format":"int64"},"minimumTotalQuantity":{"type":"integer","format":"int64"},"maximumTotalQuantity":{"type":"integer","format":"int64"},"quantityIncrement":{"type":"integer","format":"int64"}},"required":["id","item-id","kind","label","sort-order","suppress","available","required","minimum-choices"],"additionalProperties":false}]}},"sections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":"string"},"itemIds":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","label","item-ids"],"additionalProperties":false}}},"required":["entities","sections"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-concept-id","description":"","type":"string","required":true,"minLength":1},{"in":"path","name":"pos-location-id","description":"","type":"string","required":true,"minLength":1}],"tags":["Concepts"],"summary":"Fetch all menu entities for a location by POS location ID"}},"/v4/locations":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"origin":{"type":"object","properties":{"zipCode":{"type":"string"},"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"},"radius":{"type":"number","format":"double"}},"required":["radius"],"additionalProperties":false},"limitPerConcept":{"description":"Absent when no per-concept limit was applied (`publicConceptId` given)","type":"integer","format":"int64"},"limit":{"description":"Maximum number of locations returned","type":"integer","format":"int64"},"filters":{"type":"object","properties":{"publicConceptId":{"type":"string"},"cuisines":{"type":"array","items":{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]}},"occasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]}}},"required":["cuisines","occasions"],"additionalProperties":false},"totalLocations":{"type":"integer","format":"int64"},"locations":{"type":"array","items":{"type":"object","properties":{"id":{"description":"Unique identifier for the location.","type":"string","minLength":1},"conceptId":{"description":"Unique identifier of the associated concept","type":"string","minLength":1},"posProvider":{"description":"POS provider for this location's concept","type":"string","minLength":1},"name":{"description":"Name of location","type":"string","minLength":1},"address":{"description":"Physical address of the location","title":"Delivery address validation schema","type":"object","properties":{"streetAddress1":{"type":"string"},"streetAddress2":{"type":"string","xNullable":true},"city":{"type":"string"},"stateCode":{"type":"string"},"postalCode":{"type":"string"},"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"}},"required":["street-address-1","city","state-code","postal-code"],"additionalProperties":false},"phoneNumber":{"description":"E.164 formatted phone number","xAnyOf":[{},{"type":"string"}]},"distance":{"description":"Distance from the search origin, in miles.","type":"number","format":"double","minimum":0},"timezone":{"description":"Timezone of location","type":"string"},"minimumDeliveryPrice":{"description":"","type":"number","format":"double"},"occasions":{"description":"List of `occasion`s part of this `location`","type":"array","items":{"type":"object","properties":{"id":{"description":"ID of this `occasion`","type":"integer","format":"int64","minimum":0},"occasion":{"description":"Enum of valid `occasion` types","type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"],"xAnyOf":[{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]},{"type":"string","enum":["carryOut","delivery","curbside","dispatch","driveThru","dineIn","chipotlane","pickUpWindow"]}]},"payment":{"description":"Field denoting whether `payment` is required or optional","type":"string","enum":["required","optional","prohibited"]},"available":{"description":"`true` if the `occasion` is valid and supported by the Smart Ordering","type":"boolean"},"valid":{"description":"`true` if the `occasion` is valid","type":"boolean"},"schedule":{"description":"The opening and closing times for this `occasion`","type":"array","items":{"type":"object","properties":{"opensAt":{"description":"The opening time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"The closing time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"],"additionalProperties":false}}},"required":["id","occasion","payment","available","valid","schedule"],"additionalProperties":false}},"featuredItems":{"description":"Featured items for the location.","type":"array","items":{"type":"object","properties":{"name":{"description":"Display name of the item.","type":"string","minLength":1},"price":{"description":"Item price (currency handling not specified; assumed USD pennies unless otherwise defined).","type":"integer","format":"int64"},"imageUrl":{"description":"URL to the item image.","type":"string"},"description":{"description":"Short description of the item.","type":"string"},"displayOrder":{"description":"Display priority/order (lower appears first).","type":"integer","format":"int64"},"itemId":{"description":"POS ID of the item","type":"string"}},"required":["name","price","image-url","description","display-order","item-id"],"additionalProperties":false}},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}},"additionalProperties":false},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}},"additionalProperties":false}},"required":["id","concept-id","name","address","phone-number","distance","timezone","minimum-delivery-price","occasions","featured-items"],"additionalProperties":false}}},"required":["origin","limit","filters","totalLocations","locations"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"query","name":"zipCode","description":"5 digit USPS zip code. Required unless `latitude` and `longitude` are given.","type":"string","required":false},{"in":"query","name":"latitude","description":"Search origin latitude; use with `longitude` instead of `zipCode`","type":"number","required":false,"format":"double","minimum":-90.0,"maximum":90.0},{"in":"query","name":"longitude","description":"Search origin longitude; use with `latitude` instead of `zipCode`","type":"number","required":false,"format":"double","minimum":-180.0,"maximum":180.0},{"description":"in miles","format":"double","default":5.0,"name":"radius","maximum":50.0,"type":"number","minimum":0.1,"required":false,"in":"query"},{"in":"query","name":"publicConceptId","description":"only return locations of this concept (public id); every match in the radius is returned, ignoring `limitPerConcept`","type":"string","required":false,"minLength":1},{"description":"number of locations to return per concept; ignored with `publicConceptId`","format":"int64","default":3,"name":"limitPerConcept","maximum":5,"type":"integer","minimum":1,"required":false,"in":"query"},{"description":"maximum number of locations to return, closest first","format":"int64","default":50,"name":"limit","maximum":250,"type":"integer","minimum":1,"required":false,"in":"query"},{"in":"query","name":"cuisines","description":"list of cuisines to search for","type":"string","required":false,"enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"],"xAnyOf":[{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]},{"type":"array","items":{"type":"string","enum":["italian","chinese","mexican","japanese","indian","mediterranean","french","thai","american","burgers","pizza","european","brunch","asian","middle-eastern","sushi","seafood","n/a"]}}]},{"in":"query","name":"occasions","description":"list of occasions to search for","type":"string","required":false,"enum":["carryOut","delivery","curbside","dispatch","driveThru","dineIn","chipotlane","pickUpWindow"],"xAnyOf":[{"type":"string","enum":["carryOut","delivery","curbside","dispatch","driveThru","dineIn","chipotlane","pickUpWindow"]},{"type":"array","items":{"type":"string","enum":["carryOut","delivery","curbside","dispatch","driveThru","dineIn","chipotlane","pickUpWindow"]}}]},{"in":"query","name":"includeUnavailable","description":"Unavailable locations do not support ordering","type":"boolean","required":false}],"tags":["Locations"],"summary":"return list of locations given filtering criteria"}},"/v4/locations/{public-location-id}":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"location":{"type":"object","properties":{"id":{"description":"ID of this `location`","type":"string"},"available":{"description":"Whether this location is available","type":"boolean"},"name":{"description":"Name of this `location` ","type":"string"},"streetAddress":{"description":"Street address of this `location`.","type":"string"},"city":{"description":"City this `location` is in","type":"string"},"stateCode":{"description":"US state of this `location` in 2 letter code form","type":"string","maxLength":3},"countryCode":{"description":"Country this `location` is in via code","type":"string"},"postalCode":{"description":"postal code of this `location`","type":"string"},"timezone":{"description":"Timezone of this location"},"telephone":{"description":"Phone number of this `location`"},"longitude":{"type":"number","format":"double","xNullable":true},"latitude":{"type":"number","format":"double","xNullable":true},"occasions":{"description":"List of `occasion`s part of this `location`","type":"array","items":{"type":"object","properties":{"id":{"description":"ID of this `occasion`","type":"integer","format":"int64","minimum":0},"occasion":{"description":"Enum of valid `occasion` types","type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"],"xAnyOf":[{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]},{"type":"string","enum":["carryOut","delivery","curbside","dispatch","driveThru","dineIn","chipotlane","pickUpWindow"]}]},"payment":{"description":"Field denoting whether `payment` is required or optional","type":"string","enum":["required","optional","prohibited"]},"available":{"description":"`true` if the `occasion` is valid and supported by the Smart Ordering","type":"boolean"},"valid":{"description":"`true` if the `occasion` is valid","type":"boolean"},"schedule":{"description":"The opening and closing times for this `occasion`","type":"array","items":{"type":"object","properties":{"opensAt":{"description":"The opening time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"The closing time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"],"additionalProperties":false}}},"required":["id","occasion","payment","available","valid","schedule"],"additionalProperties":false}},"tenders":{"description":"List of `tender`s part of this `location`","type":"array","items":{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["cash"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["cash"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false},{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["text-to-pay"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false},{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["prepaid"]},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["tender","available"],"additionalProperties":false},{"type":"object","properties":{"tender":{"description":"type of `tender`","type":"string","enum":["credit-card"]},"available":{"description":"Whether the `tender` is available","type":"boolean"},"cardType":{"description":"The kind of credit card","enum":["visa","master-card","american-express","diners-club","discover","j-c-b","jcb","insta-payment","maestro","unionpay",""]}},"required":["tender","available","card-type"],"additionalProperties":false}]}},"businessHours":{"description":"The hours this `location` is open, independent of any `occasion`","type":"array","items":{"type":"object","properties":{"opensAt":{"description":"The opening time for this segment of the location's business hours","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"The closing time for this segment of the location's business hours","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"],"additionalProperties":false}},"conceptId":{"description":"ID of the `concept` this `location` is part of.","type":"string"},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}},"additionalProperties":false},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}},"additionalProperties":false}},"required":["id","available","name","street-address","city","state-code","country-code","postal-code","timezone","telephone","longitude","latitude","occasions","tenders","business-hours","concept-id"],"additionalProperties":false}},"required":["location"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-location-id","description":"","type":"string","required":true,"minLength":1}],"tags":["Locations"],"summary":"Fetch individual location"}},"/v4/locations/{public-location-id}/menu":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"entities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"featured":{"type":"boolean"}},"required":["id","item-id","kind","label","sort-order","suppress","available"],"additionalProperties":false,"xAnyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"featured":{"type":"boolean"}},"required":["id","item-id","kind","label","sort-order","suppress","available"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"defaultEntity":{"type":"boolean"},"defaultQuantity":{"type":"integer","format":"int64"},"minimumQuantity":{"type":"integer","format":"int64"},"maximumQuantity":{"type":"integer","format":"int64"}},"required":["id","item-id","kind","label","sort-order","suppress","available"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"parentId":{"type":"string","minLength":1},"itemId":{"type":"string","minLength":1},"kind":{"type":"string","enum":["item","constraint","option"]},"label":{"type":"string","minLength":1},"sortOrder":{"type":"integer","format":"int64"},"suppress":{"type":"boolean"},"available":{"type":"boolean"},"metadata":{"type":"object","properties":{"price":{"type":"object","properties":{"static":{"type":"integer","format":"int64"},"choice":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"maximum":{"type":"integer","format":"int64","xAnyOf":[{"type":"integer","format":"int64"},{"const":"no-limit"}]}},"additionalProperties":false},"availability":{"type":"object","properties":{"sunday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"monday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"tuesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"wednesday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"thursday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"friday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]},"saturday":{"const":"unavailable","xAnyOf":[{"const":"unavailable"},{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1},"to":{"type":"string","minLength":1},"crossesMidnight?":{"type":"boolean"}},"required":["from","to","crosses-midnight?"],"additionalProperties":false}}]}},"required":["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],"additionalProperties":false},"orderingData":{"type":"object","properties":{},"additionalProperties":false},"calories":{"type":"integer","format":"int64","minimum":0},"image":{"type":"object","properties":{"url":{"type":"string","minLength":1},"thumbnailUrl":{"type":"string","minLength":1}},"required":["url"],"additionalProperties":false},"lto":{"type":"object","properties":{"startDate":{"const":"always","xAnyOf":[{"const":"always"},{"type":"string","minLength":1}]},"endDate":{"const":"never","xAnyOf":[{"const":"never"},{"type":"string","minLength":1}]}},"required":["start-date","end-date"],"additionalProperties":false},"unavailableOccasions":{"type":"array","items":{"type":"string","enum":["carry-out","delivery","curbside","drive-thru","dine-in"]}}},"additionalProperties":false},"description":{"type":"string"},"required":{"type":"boolean"},"minimumChoices":{"type":"integer","format":"int64","minimum":0},"maximumChoices":{"type":"integer","format":"int64","minimum":1},"minimumChoiceQuantity":{"type":"integer","format":"int64"},"maximumChoiceQuantity":{"type":"integer","format":"int64"},"minimumTotalQuantity":{"type":"integer","format":"int64"},"maximumTotalQuantity":{"type":"integer","format":"int64"},"quantityIncrement":{"type":"integer","format":"int64"}},"required":["id","item-id","kind","label","sort-order","suppress","available","required","minimum-choices"],"additionalProperties":false}]}},"sections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1},"description":{"type":"string"},"itemIds":{"type":"array","items":{"type":"string","minLength":1}}},"required":["id","label","item-ids"],"additionalProperties":false}}},"required":["entities","sections"],"additionalProperties":false},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"description":"Type of `not-found` error","type":"string","enum":["concept/not-found","cohort/not-found","location/not-found","zipcode/not-found","system-configuration/not-found","snapshot/not-found"]},"message":{"description":"Human readable text appropriate for display","type":"string","minLength":1},"category":{"description":"Category of the error","type":"string","enum":["not-found"]},"id":{"description":"The user-supplied `id` of the resource that was not found","type":"integer","format":"int64"},"context":{"description":"Additional contextual data about the error; INFORMATIONAL ONLY, do not build against"}},"required":["type","message","category","id","context"],"additionalProperties":false},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"public-location-id","description":"","type":"string","required":true,"minLength":1},{"in":"query","name":"pricing","description":"Price entities from the location's pricing data (base price) instead of the POS price","type":"boolean","required":false}],"tags":["Locations"],"summary":"Fetch all menu entities for a location"}}},"definitions":{"group":{"type":"object","properties":{"id":{"description":"ID of this `selection` `group` from menu.element_selection_groups_v2","type":"integer","format":"int64","minimum":0},"productOwnerId":{"description":"The `element-id` of this `selection`s product owner","type":"integer","format":"int64","minimum":0},"ownerId":{"description":"The `element-id` of this `selection`s owner","type":"integer","format":"int64","minimum":0},"categoryId":{"description":"The `category-id` of the immediate parent `category` of this `group`","type":"integer","format":"int64","minimum":0},"minSelections":{"description":"The minimum amount of `selections` to fulfill this `selection-group`","type":"integer","format":"int64","minimum":0},"maxSelections":{"description":"The maximum amount of `selections` to fulfill this `selection-group`","type":"string","enum":["no-limit"],"xAnyOf":[{"type":"string","enum":["no-limit"]},{"type":"integer","format":"int64","minimum":1}]},"minQuantity":{"description":"Minimum quantity a user must set on a single child `selection`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"maxQuantity":{"description":"Maximum quantity a user must set on a single child `selection`","type":"integer","format":"int64","minimum":1},"partitionable":{"description":"Whether this group can be split across partitions","type":"boolean"},"priority":{"description":"Represents the priority of this item against it's immediate peers","type":"integer","format":"int64","minimum":0},"helpPrompt":{"description":"TODO","type":"string"},"upsell":{"description":"When true upsell this group","type":"boolean"},"muted":{"description":"When true, don't verbalize this group","type":"boolean"},"mutedSelections":{"description":"Selections in this group that shouldn't be spoken out","type":"array","items":{"type":"integer","format":"int64"}},"readbackOrder":{"description":"Order in which to list out the selections","type":"array","items":{"type":"integer","format":"int64"}},"readbackQuantity":{"description":"How many selections to readback when talking about this group","type":"integer","format":"int64","minimum":0},"promptUpToMax":{"description":"TODO","type":"boolean"},"elementSelectionGroupCompositeId":{"description":"TODO","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"promptOverride":{"description":"Response text when generating a prompt for this group","type":"string"},"readbackFinalOption":{"description":"TODO","type":"string"},"readOnProductOwner":{"description":"TODO","type":"boolean"},"upgradePrompt":{"description":"TODO","type":"object","properties":{}},"categoryNonRestate":{"description":"TODO","type":"boolean"},"ocbData":{"description":"Collection of OCB data for the group","type":"object","properties":{"ocbLabel":{"description":"Override label to use on the OCB for the group","type":"string"},"ocbPrompt":{"description":"Override prompt to use on the OCB for group","type":"string"}}},"selections":{"type":"array","items":{"$ref":"#/definitions/ramsay.http.router.routes.menu.selections.schema.selection-response"}}},"required":["id","product-owner-id","owner-id","category-id","min-selections","max-selections","min-quantity","max-quantity","partitionable","priority","help-prompt","upsell","muted","muted-selections","readback-order","readback-quantity","prompt-up-to-max","element-selection-group-composite-id","prompt-override","readback-final-option","read-on-product-owner","upgrade-prompt","category-non-restate","ocb-data"]},"selection-response":{"type":"object","properties":{"id":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":0},"productOwnerId":{"description":"The `element-id` of this `selection`s product owner","type":"integer","format":"int64","minimum":0},"ownerId":{"description":"The `element-id` of this `selection`s owner","type":"integer","format":"int64","minimum":0},"elementId":{"description":"The `element-id` of this `selection`","type":"integer","format":"int64","minimum":0},"categoryId":{"description":"The `category-id` that this `selection` belongs to","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"mutualExclusions":{"description":"Also known as `anti-elements`, cannot be selected at the same time as the elements listed","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"defaultMode":{"description":"Default behaviour of this `selection`","type":"string","enum":["never","on-request","always","prompt"]},"locked":{"description":"TODO","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"boolean"}]},"ocbData":{"description":"Collection of OCB data for the selection","type":"object","properties":{"promptVisibility":{"description":"Prompt visibility setting for the selection","type":"string","enum":["hidden","visible","highlight"]}}},"defaultQuantity":{"description":"Default quantity of this `selection`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"groups":{"description":"The `groups` of this selection.  Used for menu fetching.","type":"array","items":{"$ref":"#/definitions/group"}}},"required":["id","product-owner-id","owner-id","element-id","category-id","mutual-exclusions","locked","ocb-data"]},"ramsay.http.router.routes.v3.concepts.selections.schema.selection":{"type":"object","properties":{"id":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":0},"productOwnerId":{"description":"The `element-id` of this `selection`s product owner","type":"integer","format":"int64","minimum":0},"ownerId":{"description":"The `element-id` of this `selection`s owner","type":"integer","format":"int64","minimum":0},"elementId":{"description":"The `element-id` of this `selection`","type":"integer","format":"int64","minimum":0},"categoryId":{"description":"The `category-id` that this `selection` belongs to","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"mutualExclusions":{"description":"Also known as `anti-elements`, cannot be selected at the same time as the elements listed","type":"array","items":{"type":"integer","format":"int64","minimum":1}},"defaultMode":{"description":"Default behaviour of this `selection`","type":"string","enum":["never","on-request","always"]},"defaultQuantity":{"description":"Default quantity of this `selection`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"groups":{"description":"The `groups` of this selection.  Used for menu fetching.","type":"array","items":{"type":"object","properties":{"id":{"description":"ID of this `selection` `group` from menu.element_selection_groups_v2","type":"integer","format":"int64","minimum":0},"productOwnerId":{"description":"The `element-id` of this `selection`s product owner","type":"integer","format":"int64","minimum":0},"ownerId":{"description":"The `element-id` of this `selection`s owner","type":"integer","format":"int64","minimum":0},"categoryId":{"description":"The `category-id` of the immediate parent `category` of this `group`","type":"integer","format":"int64","minimum":0},"minSelections":{"description":"The minimum amount of `selections` to fulfill this `selection-group`","type":"integer","format":"int64","minimum":0},"maxSelections":{"description":"The maximum amount of `selections` to fulfill this `selection-group`","type":"string","enum":["no-limit"],"xAnyOf":[{"type":"string","enum":["no-limit"]},{"type":"integer","format":"int64","minimum":1}]},"minQuantity":{"description":"Minimum quantity a user must set on a single child `selection`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"maxQuantity":{"description":"Maximum quantity a user must set on a single child `selection`","type":"integer","format":"int64","minimum":1},"partitionable":{"description":"Whether this group can be split across partitions","type":"boolean"},"priority":{"description":"Represents the priority of this item against it's immediate peers","type":"integer","format":"int64","minimum":0},"helpPrompt":{"description":"TODO","type":"string"},"upsell":{"description":"When true upsell this group","type":"boolean"},"muted":{"description":"When true, don't verbalize this group","type":"boolean"},"mutedSelections":{"description":"Selections in this group that shouldn't be spoken out","type":"array","items":{"type":"integer","format":"int64"}},"readbackOrder":{"description":"Order in which to list out the selections","type":"array","items":{"type":"integer","format":"int64"}},"readbackQuantity":{"description":"How many selections to readback when talking about this group","type":"integer","format":"int64","minimum":0},"promptOverride":{"description":"Response text when generating a prompt for this group","type":"string"},"selections":{"type":"array","items":{"$ref":"#/definitions/ramsay.http.router.routes.v3.concepts.selections.schema.selection"}}},"required":["id","product-owner-id","owner-id","category-id","min-selections","max-selections","min-quantity","max-quantity","partitionable","priority","help-prompt","upsell","muted","muted-selections","readback-order","readback-quantity","prompt-override"]}}},"required":["id","product-owner-id","owner-id","element-id","category-id","mutual-exclusions"]},"upsell-item":{"description":"Defines the element to be prompted, unless that element already exists in the ticket","type":"object","properties":{"id":{"description":"The element id of the item to be offered","type":"integer","format":"int64","minimum":1},"type":{"description":"Type of end of order upsell","type":"string","enum":["SingleElement"]},"priority":{"description":"The order in which we look at possible upsells to determine if they are valid to be offered","type":"integer","format":"int64","minimum":1}},"required":["id","type","priority"],"xAnyOf":[{"description":"Defines the element to be prompted, unless that element already exists in the ticket","type":"object","properties":{"id":{"description":"The element id of the item to be offered","type":"integer","format":"int64","minimum":1},"type":{"description":"Type of end of order upsell","type":"string","enum":["SingleElement"]},"priority":{"description":"The order in which we look at possible upsells to determine if they are valid to be offered","type":"integer","format":"int64","minimum":1}},"required":["id","type","priority"]},{"description":"Check the ticket for items of the given category. If none exist, the customer will be offered a randomly selected element from the defined list of offers","type":"object","properties":{"id":{"description":"The element id of the item to be offered","type":"integer","format":"int64","minimum":1},"type":{"description":"Type of end of order upsell","type":"string","enum":["MissingCategory"]},"priority":{"description":"The order in which we look at possible upsells to determine if they are valid to be offered","type":"integer","format":"int64","minimum":1},"offers":{"description":"Element ids belonging to the given category and one of which will be randomly selected to offer to the customer","type":"array","items":{"type":"integer","format":"int64","minimum":1}}},"required":["id","type","priority","offers"]},{"description":"aka “dynamic upsell”. This type looks at the customer’s previous orders and calculates which items they have purchased before most often, then selects one to offer the customer. If this upsell type is defined for a location, it is a good idea to also have another type defined, for customers that do not have any valid previous orders","type":"object","properties":{"type":{"description":"Type of end of order upsell","type":"string","enum":["AutoMagic"]},"priority":{"description":"The order in which we look at possible upsells to determine if they are valid to be offered","type":"integer","format":"int64","minimum":1}},"required":["type","priority"]},{"description":"if the category doesn’t have elements directly, it will says the category’s name","type":"object","properties":{"id":{"description":"The **category** id of the category to be offered","type":"integer","format":"int64","minimum":1},"type":{"description":"Type of end of order upsell","type":"string","enum":["SingleCategory"]},"priority":{"description":"The order in which we look at possible upsells to determine if they are valid to be offered","type":"integer","format":"int64","minimum":1}},"required":["id","type","priority"]}]},"entity-request":{"type":"object","properties":{"mappingId":{"description":"`mapping_id` of an entity from `pos_integration.entities` corresponding to this entry","type":"string","minLength":1},"lookupId":{"description":"`lookup_id` of an entity from `pos_integration.entities` corresponding to this entry","type":"string","minLength":1},"uniqueOrderingId":{"description":"UUID assigned by client, uniquely identifying this entry within the ticket","type":"string","minLength":1},"orderingId":{"description":"Per location. POS ID used during order validation","type":"string","minLength":1},"entityId":{"description":"UUID assigned by client, uniquely identifying this entry within the ticket","type":"string","minLength":1},"specialInstructions":{"description":"Denotes whether this product is a special instruction","type":"array","items":{}},"label":{"description":"Name of product","type":"string","minLength":1},"quantity":{"description":"Number of times this entry was selected","type":"integer","format":"int64","minimum":1},"partition":{"description":"Portion of item modifier is applied to; 0 is `whole`, non-0 meaning depends on item","type":"integer","format":"int64","minimum":0,"xAnyOf":[{"type":"integer","format":"int64","minimum":0},{"type":"null"}]},"modifiers":{"type":"array","items":{"$ref":"#/definitions/entity-request"}}},"required":["mapping-id","lookup-id","unique-ordering-id","entity-id","label","quantity"]},"occasion":{"type":"object","properties":{"id":{"description":"ID of this `occasion`","type":"integer","format":"int64","minimum":0},"occasion":{"description":"The `occasion-type`","$ref":"#/definitions/occasion-type"},"payment":{"description":"Field denoting whether `payment` is required or optional","type":"string","enum":["required","optional","prohibited"],"xAnyOf":[{"type":"string","enum":["required","optional","prohibited"]},{"type":"string","enum":[""]}]},"enabled":{"description":"Whether the `occasion` is enabled","type":"boolean","xNullable":true},"available":{"description":"Whether the `occasion` is available","type":"boolean"},"schedule":{"description":"The opening and closing times for this `occasion`","type":"array","items":{"type":"object","properties":{"opensAt":{"description":"The opening time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"The closing time for this segment of the `occasion`","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"]}}},"required":["id","occasion","payment","enabled","available","schedule"]},"option":{"type":"object","properties":{"objectId":{"description":"ID corresponding to the `object_id` field from the `entities` array","type":"string","minLength":1},"label":{"description":"Name of `option`","type":"string","minLength":1},"description":{"description":"Description of `option`","type":"string"},"defaultEntity":{"description":"If `true`, `option` is a default choice within parent `constraint`","type":"boolean"},"defaultQuantity":{"description":"Set the default quantity of `option`","type":"integer","format":"int64","minimum":1},"minimumQuantity":{"description":"Override of `minimum-choice-quantity` from parent `constraint`","type":"string","enum":["inherit"],"xAnyOf":[{"type":"string","enum":["inherit"]},{"type":"integer","format":"int64","minimum":0}]},"maximumQuantity":{"description":"Override of `maximum-choice-quantity` from parent `constraint`","type":"string","enum":["inherit"],"xAnyOf":[{"type":"string","enum":["inherit"]},{"type":"integer","format":"int64","minimum":1}]},"circlePartitions":{"description":"If `true`, `option` supports circle partitioning (i.e. Pizza toppings)","type":"boolean"}},"required":["object-id","label","description","default-entity","default-quantity","minimum-quantity","maximum-quantity","circle-partitions"]},"upsellv2":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/definitions/upsell-item"}},"occasions":{"description":"List of `occasion-type`s supported for upsell","type":"array","items":{"$ref":"#/definitions/occasion-type"}},"schedule":{"type":"string","enum":["continuous"],"xAnyOf":[{"type":"string","enum":["continuous"]},{"type":"array","items":{"type":"object","properties":{"opensAt":{"description":"start datetime of when this item upsell is active in UTC","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"closesAt":{"description":"end datetime of when this item upsell is active in UTC","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["opens-at","closes-at"]}}]}},"required":["items","occasions","schedule"]},"prose-hint":{"type":"object","properties":{"enUs":{"description":"Language","type":"object","properties":{"readDescription":{"description":"If true, dictate description of category","type":"boolean"},"readbackOrder":{"description":"Order to dictate elements within category","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"readbackQuantity":{"description":"How many objects to dictate","type":"integer","format":"int64"},"readbackCategories":{"description":"Order of categories to dictate within category","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"modOrder":{"description":"TODO","type":"integer","format":"int64"},"crossSell":{"description":"TODO","type":"object","properties":{"elementId":{"description":"element id for cross selling","type":"integer","format":"int64"},"categoryId":{"description":"category id for cross selling","type":"integer","format":"int64"}}},"helpAddItem":{"description":"Additional text related to item","type":"string"}}}}},"disabled-element-selection":{"type":"object","properties":{"selectionId":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":1},"disabledBy":{"description":"tool, service or event that disabled this selection","type":"string"},"reason":{"description":"reason why it's disabled","enum":["eighty-sixed","off-menu","validation-error",""]}},"required":["selection-id","disabled-by","reason"]},"tender":{"type":"object","properties":{"id":{"description":"ID of this `tender`","type":"integer","format":"int64","minimum":0},"paymentTender":{"description":"type of `tender`","type":"string","enum":["cash","credit-card","gift-card","check","text-to-pay","prepaid"]},"paymentCardType":{"description":"type of credit card if applicable","enum":["visa","master-card","american-express","diners-club","discover","j-c-b","jcb","insta-payment","maestro","unionpay",""]},"enabled":{"description":"Whether the `tender` is enabled","type":"boolean"},"available":{"description":"Whether the `tender` is available","type":"boolean"}},"required":["id","payment-tender","payment-card-type","enabled","available"]},"configuration-response":{"type":"object","properties":{"version":{"type":"string","xNullable":true},"orderingBot":{"type":"object","properties":{"endOfOrderUpsell":{"description":"Whether the end of order upsell feature is turned on for the location","type":"boolean"},"comboUpsell":{"description":"Whether the combo upsell feature is turned on for the location","type":"boolean"},"comboSizeUpsell":{"description":"Whether the upsize combo feature is turned on","type":"boolean"},"sideUpsizeUpsell":{"description":"Whether the side upsize combo feature is turned on","type":"boolean"},"speakingMode":{"description":"What speaking mode the analysts have set for the current location","type":"string","enum":["Terse","None","Normal"]},"forceReadCartSummaryOnCheckout":{"description":"Force cart readback on checkout even when speaking mode is terse","type":"boolean"},"smartlane":{"description":"Whether smart lane is enabled for the current location","type":"boolean"},"mobileOrderPickup":{"description":"Whether mobile order pickup is enabled for the current location","type":"boolean"},"rtoEnabled":{"description":"Ability to turn on/off RTO","type":"boolean"},"realtimeApiProvider":{"description":"Which realtime API provider to use","type":"string","enum":["openai","azure","tempus","xai"]},"realtimeProviderFallbackSequence":{"description":"Ordered fallback sequence of realtime API providers","type":"array","items":{"type":"string","enum":["openai","azure","tempus","xai"]}},"enableSkipTurn":{"description":"Whether the bot is allowed to skip turns when detecting background noise","type":"boolean"},"transcriptionModelConfig":{"description":"Which transcription model to use","type":"string","enum":["polaris_base_8k","polaris_base_16k","polaris_food_8k","polaris_food_16k","polaris_bkuk","polaris_panda_express","polaris_kfc"]},"realtimeInputMode":{"description":"What input mode to use for realtime","type":"string","enum":["audio","text"]},"inputAudioNoiseReduction":{"description":"What value to send to openAI for noise reduction","type":"string","enum":["far_field","near_field"]},"enableLlmRewriter":{"description":"Whether or not to enable LLM Rewriter","type":"boolean"},"polaris":{"description":"Polaris configuration","type":"object","properties":{"minTokens":{"description":"Minimum tokens for polaris","type":"integer","format":"int64"},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"},"backtrackMs":{"description":"Backtrack milliseconds for polaris","type":"integer","format":"int64"}}},"deepgram":{"description":"Deepgram transcription configuration","type":"object","properties":{"enabled":{"description":"Whether Deepgram is used for transcriptions","type":"boolean"},"language":{"description":"Deepgram language mode","type":"string","enum":["en","multi"]},"useKeyterms":{"description":"Whether to pass boost phrases as Deepgram keyterms","type":"boolean"},"endpointingMs":{"description":"Trailing silence before Deepgram ends an utterance. Defaults to segment silence when unset.","type":"integer","format":"int64"}}},"uiPresent":{"description":"Whether or not a UI is present for ordering","type":"boolean"},"semanticEot":{"description":"Semantic eot config","type":"object","properties":{"enabled":{"description":"If semantic eot is enabled","type":"boolean"},"completeDelayMs":{"description":"EOT complete delay in milliseconds","type":"integer","format":"int64"},"maybeCompleteDelayMs":{"description":"EOT maybe complete delay in milliseconds","type":"integer","format":"int64"}}},"includeDescription":{"description":"Whether to include description in the ordering bot","type":"boolean"},"openaiSemanticVad":{"description":"Whether OpenAI Semantic VAD is enabled","type":"boolean"},"openaiSemanticVadEagerness":{"description":"OpenAI Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"supportedLanguages":{"description":"Languages supported by the ordering bot","type":"array","items":{"type":"string","enum":["English","Spanish"]}},"tempusConfig":{"description":"Config params for tempus llm","type":"object","properties":{"model":{"description":"Model version of tempus","type":"string"},"voice":{"description":"Name of voice used for tempus","type":"string"},"temperature":{"description":"Temperature to be passed to the Tempus provider","type":"number","format":"double","minimum":0,"maximum":1},"semanticVad":{"description":"Whether Tempus semantic VAD is enabled","type":"boolean"},"semanticVadEagerness":{"description":"Tempus Semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]},"silenceDurationMs":{"description":"The amount of time the AI takes to respond after the user stops speaking","type":"integer","format":"int64"},"voiceSpeed":{"description":"Playback speed of TTS output","type":"number","format":"double"},"delayStartMs":{"description":"The amount of time the AI waits to respond when the LLM determines the user has not finished speaking","type":"integer","format":"int64"}}},"backupVad":{"description":"Whether the backup VAD feature is turned on","type":"boolean"},"askForCollectionTimeAndName":{"description":"Whether the collection of time and name feature is turned on","type":"boolean"},"llmModel":{"description":"What llm model and version to use","type":"string","enum":["gpt-realtime","gpt-realtime-1.5","gpt-realtime-2","gpt-realtime-2.1"]},"manualSegmentation":{"description":"When set execute manual segmentation based on the config","type":"object","properties":{"type":{"description":"Type of segmentation","type":"string","enum":["fallback_segmentation"]},"config":{"description":"Config params for the segmentation","type":"object","properties":{"type":{"description":"Type of fallback segmentation","type":"string","enum":["polaris_vad_segmentation"]},"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}}}}},"responseStyle":{"description":"encourage the LLM towards specific ways of responding","type":"object","properties":{"basicUpdateCartSuccess":{"description":"when a basic update cart is called successfully","type":"string"},"invalidOptions":{"description":"when the customer or LLM adds invalid options to an item","type":"string"},"slotFilling":{"description":"when slot filling","type":"string"},"disambiguation":{"description":"when disambiguating","type":"string"}}},"promptConfig":{"description":"Configuration for templated fields in the ordering bot's system instructions","type":"object","properties":{"introduction":{"type":"string"},"language":{"type":"string"},"unambiguousItemName":{"type":"string"},"unambiguousItemNameSimilarMatches":{"type":"string"},"ambiguousItemName":{"type":"string"},"ambiguousItemNameMatches":{"type":"string"},"conceptSpecificOrderingInstructions":{"type":"string"},"comboUpgradeExampleItem":{"type":"string"},"comboUpgradeExampleCombo":{"type":"string"},"comboUpgradeExampleOption":{"type":"string"}}},"confirmOrderOnUi":{"description":"Whether to show order confirmation on the UI","type":"boolean"},"maxAllowedConsecutiveNudges":{"description":"Max number of allowed consecutive nudges before we end the session.","type":"integer","format":"int64"},"multimodalSegmentation":{"description":"Enable multimodal segmentation. Takes precedence over manual segmentation when both are enabled.","type":"object","properties":{"polarisConfig":{"description":"Polaris VAD config for multimodal segmentation","type":"object","properties":{"minSilenceMs":{"description":"Minimum silence milliseconds for polaris","type":"integer","format":"int64"},"minSegmentMs":{"description":"Minimum segment milliseconds for polaris","type":"integer","format":"int64"}}},"openaiNoiseReduction":{"description":"OpenAI input audio noise reduction setting","type":"string","enum":["far_field","near_field"]},"openaiEagerness":{"description":"OpenAI semantic VAD eagerness level","type":"string","enum":["low","medium","high","auto"]}}},"enableQuietSpeechDetection":{"description":"Whether quiet speech detection is enabled","type":"boolean"},"boostPhrases":{"description":"ASR boost phrases","type":"array","items":{"type":"string"}}}},"menuBoard":{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"}},"xAnyOf":[{"type":"object","properties":{"webhookUrl":{"description":"URL to send webhooks to from menu board","type":"string"}}},{"type":"object","properties":{}}]},"viDashboard":{"type":"object","properties":{"title":{"description":"Title for the dashboard","type":"string"},"time":{"description":"Config params for time display","type":"object","properties":{"enabled":{"description":"If time should be shown","type":"boolean"}}},"theme":{"description":"Which theme to use (default is a dark mode)","type":"string","enum":["soundhound"]},"fields":{"description":"Field information for dashboard","type":"array","items":{"type":"array","items":{"type":"object","properties":{"id":{"description":"ID for component","type":"string"},"component":{"description":"Name of the component to use","type":"string"},"props":{"description":"Props for component","type":"string"},"refreshSeconds":{"description":"How many seconds before the component should refresh the data","type":"integer","format":"int64"},"hide":{"description":"If component should be hidden","type":"boolean"}},"required":["id","component","props"]}}},"refreshSeconds":{"description":"How many seconds before the dashboard should refresh the data","type":"integer","format":"int64"}},"required":["fields"]},"featureFlags":{"description":"The `feature-flags` map is 2 levels, `feature` and then `flag`","type":"object","properties":{"conceptMenu":{"description":"Flags associated with concept oriented menu, i.e. `concept/entities`","type":"object","properties":{"import":{"description":"Enable concept menu for importing","type":"boolean"},"order":{"description":"Enable concept menu for ordering; requires `import` is enabled","type":"boolean"}}}}},"voiceInsights":{"type":"object","properties":{"features":{"description":"List of VI features","type":"array","items":{"type":"string","enum":["customer-effort-score","menu-items","upsell"]}},"audio":{"type":"object","properties":{"source":{"type":"string","enum":["hme","smartorder_ai","digital-acoustics","acrelec","lumen"]},"sourceExternalId":{"description":"Identifier within the provided audio source","type":"string"}}},"liveData":{"description":"Enable live data to be inserted","type":"boolean"},"speechToText":{"type":"object","properties":{"provider":{"description":"Speech-to-text provider and model","type":"string","enum":["deepgram","polaris-default_for_source","polaris-base_8k","polaris-base_16k","polaris-food_8k","polaris-food_16k","polaris-bkuk","polaris-panda_express"]}}}}},"vox":{"type":"object","properties":{"sendToHuman":{"description":"Configuration to destinations for each send to human reason","type":"object","properties":{"default":{"description":"Default if no language specified","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"]}},"en":{"description":"English overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"]}},"es":{"description":"Spanish overrides of default","type":"array","items":{"type":"object","properties":{"reason":{"description":"Reason this entry applies","type":"string"},"to":{"description":"Value used when the reason applies","type":"string"}},"required":["reason","to"]}}}}}},"pos":{"type":"object","properties":{"rateLimit":{"description":"the rate limit set by the POS for hitting their APIs (hits/s)","type":"integer","format":"int64"}}},"salesSmartOrderingDemo":{"type":"object","properties":{"prompt":{"description":"Prompt for the sales smart ordering demo","type":"string"},"menuData":{"description":"Menu data for the sales smart ordering demo","type":"string"},"configuration":{"description":"Arbitrary sales smart ordering demo config","type":"string"}}}}},"intent-action":{"type":"object","properties":{"id":{"description":"ID of this intent-action","type":"integer","format":"int64","minimum":1},"intent":{"description":"Type of intent","type":"string"},"entity":{"description":"Reason why this intent action is triggered","type":"string"},"handler":{"description":"How to proceed with the conversation","type":"string"},"argument":{"description":"","type":"string"},"comment":{"description":"","type":"string"},"state":{"description":"State of conversation","type":"string"},"includeNext":{"description":"","type":"boolean"},"channelId":{"description":"","type":"integer","format":"int64","minimum":0},"llmDescription":{"description":"","type":"string"},"llmEntity":{"description":"","type":"string"}},"required":["id","intent","entity","handler","argument","comment","state","include-next","channel-id","llm-description","llm-entity"]},"element":{"type":"object","properties":{"id":{"description":"The `id` of the `element`","type":"integer","format":"int64","minimum":0},"elementType":{"description":"The `type` of `element`","type":"string","enum":["modifier","combo","group","menu-item","organizational","ingredient","special-instruction"]},"lookupName":{"description":"Lookup name of this `element`","type":"string","minLength":1},"displayName":{"description":"Display name of this `element`","type":"string","minLength":1},"synonyms":{"description":"Synonyms of this `element`","type":"array","items":{"type":"string","minLength":1}},"displayPlural":{"description":"Pluralized display name of this `element`","type":"string"},"categoryId":{"description":"The `category-id` of the immediate parent `category` of this `selection-group`","type":"integer","format":"int64","minimum":0},"price":{"description":"Price of `element`","type":"string","enum":["not-available"],"xAnyOf":[{"type":"string","enum":["not-available"]},{"type":"integer","format":"int64","minimum":0}]},"description":{"description":"Description of the `element`","type":"string"},"lookupTags":{"description":"TODO","type":"array","items":{"type":"string"}},"partitions":{"description":"How many partitions this element can support. 1 means no partitions","type":"integer","format":"int64","minimum":1},"comment":{"description":"TODO","type":"string"},"customHints":{"description":"TODO","type":"array","items":{"type":"string"}},"categoryReadbackName":{"description":"TODO","type":"string"},"abbreviation":{"description":"TODO","type":"string"},"proseHint":{"description":"TODO","$ref":"#/definitions/prose-hint"},"liftElementId":{"description":"`element-id` to apply a lift to","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"ocbData":{"description":"Collection of OCB data for the element","type":"object","properties":{"ocbLabel":{"description":"Override label to use on the OCB for the element","type":"string"},"ocbPromptLabel":{"description":"Override label to use on the OCB for the element when it is within a prompting scenario","type":"string"},"promptPhosphorIcons":{"description":"Collection of phosphor icons to display on the OCB beside the element","type":"array","items":{"type":"object","properties":{"iconType":{"description":"Phosphor icon type","type":"string"},"iconWeight":{"description":"Phosphor icon weight","type":"string"}},"required":["icon-type"]}}}},"upgradeElementIds":{"description":"The array of `element-ids` this element can be upgraded to","type":"array","items":{"type":"integer","format":"int64","minimum":0}},"isFakeElement":{"description":"If this element has an element_tag = 17 (fakeProduct)","type":"boolean"},"isSpecialInstruction":{"description":"If this element has an element_tag = 16 (specialInstruction)","type":"boolean"}},"required":["id","element-type","lookup-name","display-name","synonyms","display-plural","category-id","price","description","lookup-tags","partitions","comment","custom-hints","category-readback-name","abbreviation","lift-element-id","ocb-data","upgrade-element-ids"]},"section":{"type":"object","properties":{"id":{"description":"Unique ID within the containing `menu`","type":"string","minLength":1},"label":{"description":"Name of `section`","type":"string","minLength":1},"description":{"description":"Description of `section`","type":"string"},"items":{"description":"List of `item-ids` contained within the `section` defined by the `item` schema","type":"array","items":{"type":"string","minLength":1}}},"required":["id","label","description"]},"location":{"type":"object","properties":{"id":{"description":"ID of this `location`","type":"integer","format":"int64","minimum":1},"available":{"description":"Whether this location is available","type":"boolean"},"name":{"description":"Name of this `location`","type":"string"},"streetAddress":{"description":"Street address of this `location`.","type":"string"},"city":{"description":"City this `location` is in","type":"string"},"stateCode":{"description":"US state of this `location` in 2 letter code form","type":"string","maxLength":3},"countryCode":{"description":"Country this `location` is in via code","type":"string"},"postalCode":{"description":"postal code of this `location`","type":"string"},"timezone":{"description":"Timezone of this location"},"telephone":{"description":"Phone number of this `location`"},"longitude":{"type":"number","format":"double","xNullable":true},"latitude":{"type":"number","format":"double","xNullable":true},"occasions":{"description":"List of `occasion`s part of this `location`","type":"array","items":{"$ref":"#/definitions/occasion"}},"tenders":{"description":"List of `tender`s part of this `location`","type":"array","items":{"$ref":"#/definitions/tender"}},"upsellsV2":{"description":"End of order upsell data for a location","type":"array","items":{"$ref":"#/definitions/upsellv2"}},"links":{"description":"External links for this location","type":"object","properties":{"ordering":{"type":"string"},"logoImage":{"type":"string"}}},"rating":{"description":"Location rating","type":"number","format":"double"},"delivery":{"description":"Delivery details","type":"object","properties":{"estimatedTime":{"type":"integer","format":"int64"},"fee":{"type":"integer","format":"int64"}}}},"required":["id","available","name","street-address","city","state-code","country-code","postal-code","timezone","telephone","longitude","latitude","occasions","tenders","upsells-v-2"]},"item":{"type":"object","properties":{"objectId":{"description":"ID corresponding to the `object_id` field from the `entities` array","type":"string","minLength":1},"label":{"description":"Name of the `item`","type":"string","minLength":1},"description":{"description":"Description of `item`","type":"string"},"featured":{"description":"If `true`, `item` is featured, which highlights it visually","type":"string","enum":["existing"],"xAnyOf":[{"type":"string","enum":["existing"]},{"type":"boolean"}]}},"required":["object-id","label","description","featured"]},"special-instruction":{"type":"object","properties":{"label":{"description":"Text describing the instruction","type":"string","minLength":1}},"required":["label"]},"selection-request":{"type":"object","properties":{"selectionId":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"quantity":{"description":"Number of times this entry was selected","type":"integer","format":"int64","minimum":1},"partition":{"description":"Portion of item modifier is applied to; 0 is `whole`, non-0 meaning depends on item","type":"integer","format":"int64","minimum":0},"children":{"description":"The children `selections` of this selection.  Used for ticket resolution.","type":"array","items":{"$ref":"#/definitions/selection-request"}}},"required":["selection-id","quantity"]},"location-entity":{"type":"object","properties":{"entityId":{"description":"entity-id corresponding to the `id` field from the `entities` table","type":"string","minLength":1},"orderingId":{"description":"Per location. POS ID used during order validation","type":"string","minLength":1},"available":{"description":"Per location. If `true`, `item` is currently available, otherwise `item` is currently eighty-sixed.","type":"string","enum":["existing"],"xAnyOf":[{"type":"string","enum":["existing"]},{"type":"boolean"}]},"orderingData":{"description":"Per location POS specific content used during order validation or submission"}},"required":["entity-id"]},"selection-schedule":{"type":"object","properties":{"selectionId":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"integer","format":"int64","minimum":1},"schedules":{"type":"array","items":{"type":"object","properties":{"availableTo":{"description":"when this selection ends availability","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"},"availableFrom":{"description":"when this selection starts availability","type":"string","pattern":"^(?:19|20|21)\\d{2}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\dZ$"}},"required":["available-to","available-from"]}}},"required":["selection-id","schedules"]},"resolved-product":{"type":"object","properties":{"id":{"description":"ID of the entity from pos_integration.entities corresponding to this entry","type":"string","pattern":"^(itm|opt)_[0-9|a-f|A-F]{32}$"},"parentId":{"description":"ID referencing the parent's id within the resolved ticket","type":"string","enum":["root"],"xAnyOf":[{"type":"string","enum":["root"]},{"type":"string","pattern":"^(itm|opt)_[0-9|a-f|A-F]{32}$"}]},"orderingId":{"description":"POS ID used during order validation","type":"string","minLength":1},"label":{"description":"Name of resolved product","type":"string","minLength":1},"selectionId":{"description":"ID of the selection from menu.element_selections_v2 corresponding to this entry","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"quantity":{"description":"Number of times this entry was selected","type":"integer","format":"int64","minimum":1},"partition":{"description":"Portion of item modifier is applied to; 0 is `whole`, non-0 meaning depends on item","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"orderingData":{}},"required":["id","parent-id","ordering-id","label","selection-id","quantity","partition","ordering-data"]},"ramsay.http.router.routes.menu.selections.schema.selection-response":{"$ref":"#/definitions/selection-response"},"occasion-type":{"type":"string","enum":["carry-out","delivery","curbside","dispatch","drive-thru","dine-in","chipotlane","pick-up-window"]},"category":{"type":"object","properties":{"categoryId":{"description":"Unique ID for a `category`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"elementType":{"description":"The `type` of `element`","type":"string","enum":["modifier","combo","group","menu-item","organizational","ingredient","special-instruction"]},"lookupName":{"description":"Lookup name of the `category`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"string"}]},"displayName":{"description":"Display name of the `category`","type":"string","minLength":1},"synonyms":{"description":"Synonyms of this `category`","type":"array","items":{"type":"string","minLength":1}},"displayPlural":{"description":"Pluralized display name of the `category`","type":"string"},"parentId":{"description":"ID of parent `category`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":0}]},"description":{"description":"Description of the `category`","type":"string"},"proseHint":{"description":"TODO","$ref":"#/definitions/prose-hint"},"posId":{"description":"ID from the pos","type":"string"},"selectionsPromptRepeat":{"description":"Whether to repeat the prompt","type":"boolean"}},"required":["category-id","element-type","lookup-name","display-name","synonyms","display-plural","parent-id","description","pos-id","selections-prompt-repeat"]},"entity":{"type":"object","properties":{"id":{"description":"Unique ID describing a specific entity within a concept","type":"string","minLength":1},"objectId":{"description":"ID which can be describing multiple entities of the same type. (IE. `Onions` as a modifier to multiple burgers)","type":"string","minLength":1},"kind":{"description":"Type of `entity`","type":"string","enum":["item","constraint","option"]},"sortOrder":{"description":"Sort order of `entity` relative to siblings","type":"integer","format":"int64","minimum":0},"hidden":{"description":"If `true`, `entity` is hidden from the menu.","type":"boolean"},"mappingId":{"description":"Universal id of `entity` used by automation team when mapping voice menu","type":"string","minLength":1},"children":{"description":"List of children `entity`","type":"array","items":{"$ref":"#/definitions/entity"}}},"required":["id","object-id","kind","sort-order","hidden","mapping-id"]},"constraint":{"type":"object","properties":{"objectId":{"description":"ID corresponding to the `object_id` field from the `entities` array","type":"string","minLength":1},"label":{"description":"Name of `constraint`","type":"string","minLength":1},"description":{"description":"Description of the constraint","type":"string"},"required":{"description":"If `true`, user must choose at least 1 `option` within `constraint`","type":"boolean"},"minimumChoices":{"description":"Minimum number of choices user must make within `constraint`","type":"integer","format":"int64","minimum":0},"maximumChoices":{"description":"Maximum number of choices user is allowed to make within `constraint`","type":"string","enum":["no-limit"],"xAnyOf":[{"type":"string","enum":["no-limit"]},{"type":"integer","format":"int64","minimum":1}]},"minimumChoiceQuantity":{"description":"Minimum quantity a user must set on a single `option` within `constraint`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"maximumChoiceQuantity":{"description":"Maximum quantity a user is allowed on a single `option` within `constraint`","type":"string","enum":["no-limit"],"xAnyOf":[{"type":"string","enum":["no-limit"]},{"type":"integer","format":"int64","minimum":1}]},"minimumTotalQuantity":{"description":"Minimum total quantity across all `options` user must set within `constraint`","type":"string","enum":["not-applicable"],"xAnyOf":[{"type":"string","enum":["not-applicable"]},{"type":"integer","format":"int64","minimum":1}]},"maximumTotalQuantity":{"description":"Maximum total quantity across all `options` user is allowed to set within `constraint`","type":"string","enum":["no-limit"],"xAnyOf":[{"type":"string","enum":["no-limit"]},{"type":"integer","format":"int64","minimum":1}]},"quantityIncrement":{"description":"Step size by which the quantity of a choice, allowing values other than 1","type":"integer","format":"int64","minimum":1}},"required":["object-id","label","description","required","minimum-choices","maximum-choices","minimum-choice-quantity","maximum-choice-quantity","minimum-total-quantity","maximum-total-quantity","quantity-increment"]}}}