{"openapi":"3.0.1","info":{"contact":{"email":"x-series.api@lightspeedhq.com","name":"Lightspeed Developer Relations","url":"https://developers.retail.lightspeed.app"},"description":"Lightspeed Retail (X-Series) API.","license":{"name":"Apache 2.0","url":"http://www.apache.org/licenses/LICENSE-2.0.html"},"termsOfService":"https://developers.lightspeedhq.com/terms","title":"API 2026-04","version":"2026-04"},"servers":[{"url":"https://{domain_prefix}.retail.lightspeed.app/api/2026-04","variables":{"domain_prefix":{"default":"example","description":"Domain prefix of the store to be operated on"}}}],"security":[{"bearerAuth":[]}],"externalDocs":{"description":"List of tz database time zones","url":"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"},"tags":[{"description":"Fulfillment operations","name":"Fulfillments"},{"description":"Gift Card operations","name":"Gift Cards"},{"description":"Inventory operations","name":"Inventory"},{"description":"Audit and security operations","name":"Audit"},{"description":"Brand operations","name":"Brands"},{"description":"A log of requests and responses between Lightspeed and an integration channel.","name":"Channel Request Log"},{"description":"Consignment Product operations","name":"Consignment Products"},{"description":"Stock control operations","name":"Consignments"},{"description":"Customer Group operations","name":"Customer Groups"},{"description":"Customer operations","name":"Customers"},{"description":"Customer Address operations","name":"Customer Addresses"},{"description":"Outlet Product Tax operations","name":"Outlet Product Taxes"},{"description":"Outlet operations","name":"Outlets"},{"description":"Partner Billing operations","name":"Partner Billing"},{"description":"Payment Type operations","name":"Payment Types"},{"description":"Price Book operations","name":"Price Books"},{"description":"Product Categories operations","name":"Product Categories"},{"description":"Product Image operations","name":"Product Images"},{"description":"Product Type operations","name":"Product Types"},{"description":"Product operations","name":"Products"},{"description":"Promotion operations","name":"Promotions"},{"description":"Quotes operations","name":"Quotes"},{"description":"Register operations","name":"Registers"},{"description":"Retailer operations","name":"Retailers"},{"description":"Sale operations","name":"Sales"},{"description":"Search related operations","name":"Search"},{"description":"Serial number related operations","name":"Serial Numbers"},{"description":"Service orders and Job management","name":"Service Orders"},{"description":"Store Credit operations","name":"Store Credits"},{"description":"Supplier operations","name":"Suppliers"},{"description":"Tag operations","name":"Tags"},{"description":"Tax operations","name":"Taxes"},{"description":"User operations","name":"Users"},{"description":"Webhook operations","name":"Webhooks"},{"description":"Workflow operations","name":"Workflows"}],"paths":{"/auditlog_events":{"get":{"description":"This API returns a list of all the audit log events that match the given filters.\n\n**Note**: Not every single change in the system is audited. Currently the audited entities include:\n\n| Object     | Action                    | Notes |\n|------------|---------------------------|-------|\n| customer   | form create/update/delete |       |\n| customer   | api create/update/delete  |       |\n| customer   | csv import                |       |\n| register   | form create/update/delete |       |\n| outlet     | form create/update/delete |       |\n| csv import | init                      | Tracks CSV import requests and includes data about the import type (customer, product) and the CSV file line count. |\n| product*   | create/update/delete      | All actions on products. |\n| security   | terms_accepted, signin, signout, change_email, change_password, reset_password_confirm, user_switching_succes, user_switching_denied, new_personal_token, update_personal_token, delete_personal_tokenss, issue_oauth_token ||\n| vend_consignment | insert/update | Receiving, creating and editing purchase orders as well as inventory counts. |\n| vend_consignment_product | insert/update | Changes to the products in a purchase order. Such as creating purchase orders. |\n| timeclock | clockin/clockout | Clock event where a user either clocked in or clocked out. |\n\n### Filters\n- The from and to filters require a full isoformat date, for example `?from=2020-02-03T00:00:00&to=2020-02-05T23:59:59`.\n\n🔒 Requires: `audit:read` scope","operationId":"GetAuditLogEvents","parameters":[{"description":"The size for a single page of results. By default 100 events will be returned.","in":"query","name":"page_size","schema":{"maxLength":100,"type":"string"}},{"description":"The number of objects to skip.","in":"query","name":"offset","schema":{"maxLength":0,"type":"string"}},{"description":"The lower limit for the `occurred_at` attribute. to be included in the response. The date and time from needs to be in isoformat.","in":"query","name":"from","schema":{"type":"string"}},{"description":"The upper limit for the `occurred_at` attribute. to be included in the response. The date and time from needs to be in isoformat.","in":"query","name":"to","schema":{"type":"string"}},{"description":"The sorting order for the results. Sorting is done by the `occurred_at` parameter. The default order is descending.","in":"query","name":"order","schema":{"type":"string"}},{"description":"The `id` of the user to filter the events by.","in":"query","name":"user_id","schema":{"type":"string"}},{"description":"The `type` of the events to be filtered for the response.","in":"query","name":"type","schema":{"type":"string"}}],"responses":{"200":{"content":{"Insert of product example":{"example":{"action":"insert","created_at":"2020-01-15T00:18:53Z","data":{"active":1,"adjustment":0.2,"adjustment_type":"MARKUP","attributed_cost":0,"brand_id":"02dcd191-aeba-11e9-f336-ff6699785796","created_at":"2020-01-15 00:18:52","default_display_price":0,"description":"my product description","handle":"02dcd191-aeba-11ea-f336-372c9c03224a","has_inventory":1,"has_variants":0,"id":"02dcd191-aeba-11ea-f336-372c9c078432","is_composite":0,"name":"productaroo-131852","product_type_id":"02dcd191-aeba-11ea-f336-372c9c1b0b56","retail_price":0.87,"retail_tax":0,"retailer_id":"02dcd191-ae2b-11e9-f336-cd2e6d82a87b","sku":"10032","source":"USER","supply_price":0,"tax_id":"02dcd191-ae2b-11e9-f336-cd2e6d864598","updated_at":"2020-01-15 00:18:52","variant_name":"productaroo-131852"},"entity_id":"02dcd191-aeba-11ea-f336-372c9c078432","id":"1217239695299842048","ip_address":"14.1.34.16","occurred_at":"2020-01-15T00:18:52Z","old_data":{},"type":"vend_product","user_agent":"vend/api-testing/0.0.1","user_id":"02dcd191-ae2b-11e9-f336-cd2e6d8a5806"}},"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AuditLogEvent"},"type":"array"}},"type":"object"}}},"description":"The response if the API call is successful."}},"summary":"List audit events","tags":["Audit"]}},"/brands":{"get":{"description":"Returns a paginated list of brands.\n\n🔒 Requires: `products:read` scope","operationId":"ListBrands","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"id":"0adaafb3-6583-11e5-fb60-d5b67a17df2f","name":"Peak Performance"},{"id":"0adaafb3-6583-11e5-fb60-ebae84675ae4","name":"Sennheiser"},{"id":"b1e2624f-f019-11e3-a0f5-b8ca3a64f8f4","name":"Generic Brand"}]},"schema":{"$ref":"#/components/schemas/BrandCollection"}}},"description":"OK"}},"summary":"List brands","tags":["Brands"]},"post":{"description":"Creates a new brand.\n\n🔒 Requires: `products:write` scope","operationId":"CreateBrand","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandBase"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"The id of brand created.","format":"uuid","type":"string"}},"type":"object"}}},"description":"OK"}},"summary":"Create brand","tags":["Brands"]}},"/brands/{brand_id}":{"delete":{"description":"Deletes a brand. If there are products associated with the brand, the products will be disassociated from the brand.\n\n🔒 Requires: `products:write` scope","operationId":"DeleteBrandByID","parameters":[{"description":"The brand id.","in":"path","name":"brand_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"payload":{"properties":{"data":{"properties":{"id":{"description":"The id of the brand deleted.","format":"UUID","type":"string"},"job_id":{"description":"The id of the asynchronous job to disassociate products from the deleted brand.","type":"string"}},"type":"object"}},"type":"object"}},"type":"object"}}},"description":"The deleted brand."}},"summary":"Delete a single brand","tags":["Brands"]},"get":{"description":"Returns a single brand with a requested ID\n\n🔒 Requires: `products:read` scope","operationId":"GetBrandByID","parameters":[{"description":"The brand id","in":"path","name":"brand_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandResponse"}},"new":{"example":{"data":{"id":"0adaafb3-6583-11e5-fb60-d5b67a17df2f","name":"Peak Performance","version":882391722}}}},"description":""}},"summary":"Get a single brand","tags":["Brands"]},"put":{"description":"🔒 Requires: `products:write` scope","operationId":"UpdateBrandById","parameters":[{"description":"The brand id.","in":"path","name":"brand_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandBase"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"description":"The id of the brand.","format":"uuid","type":"string"}},"type":"object"}},"type":"object"}}},"description":"The updated brand."}},"summary":"Update a single brand","tags":["Brands"]}},"/button_layouts":{"get":{"description":"Returns a versioned collection of button layouts for the authenticated retailer.\nButton layouts define the arrangement of quick key buttons on a register.\n\n🔒 Requires: `registers:read` scope","operationId":"ListButtonLayouts","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ButtonLayoutCollection"}}},"description":"A versioned collection of ButtonLayout"}},"summary":"List button layouts","tags":["Registers"]}},"/button_layouts/{button_layout_id}":{"get":{"description":"Returns a single button layout by id.\nButton layouts define the arrangement of quick key buttons on a register.\n\n🔒 Requires: `registers:read` scope","operationId":"GetButtonLayoutById","parameters":[{"description":"UUID of the button layout","in":"path","name":"button_layout_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ButtonLayout"}}},"description":"A single ButtonLayout wrapped in a data object"},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"ButtonLayout not found"}},"summary":"Get a single button layout","tags":["Registers"]}},"/channel_requests":{"get":{"description":"Returns a list of request log records.\n\n🔒 Requires: `channels:read` scope","operationId":"listRequests","parameters":[{"description":"Limit the requests to 1 or more status codes.","in":"query","name":"status_code","schema":{"type":"string"}},{"description":"Limit the requests to 1 or more request methods.","in":"query","name":"request_method","schema":{"type":"string"}},{"description":"Limit requests to before this RFC3339 date.","in":"query","name":"occurred_before","schema":{"format":"date-time","type":"string"}},{"description":"Limit requests to after this RFC3339 date.","in":"query","name":"occurred_after","schema":{"format":"date-time","type":"string"}},{"description":"Limit requests to those with status codes less than this value.","in":"query","name":"status_code_before","schema":{"type":"string"}},{"description":"Limit requests to those with status codes greater than this value.","in":"query","name":"status_code_after","schema":{"type":"string"}},{"description":"If provided, request logs will be limited to the supplied channel id. If no id is provided, only requests logged with no channel id will be returned. Requests with no channel id indicate requests made during the setup process.","in":"query","name":"channel_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"grouping_id":"job-5aa0bfd3f948109e314610883da6a6edf4c826db-1544662705","id":"1073019276397793280","occurred_at":"2018-12-13T00:58:25.919065Z","request":"POST /wp-json/wc/v2/products/batch HTTP/1.1\nHost: woocommerce-domain.com\nUser-Agent: vend/integrations/268506b80c1d/go1.11\nContent-Length: 229\nAuthorization: [REDACTED]\nContent-Type: application/json\nAccept-Encoding: gzip\n\n{\"update\":[{\"id\":8,\"permalink\":\"\",\"date_created\":\"\",\"date_created_gmt\":\"0001-01-01T00:00:00\",\"date_modified\":\"\",\"date_modified_gmt\":\"0001-01-01T00:00:00\",\"price\":\"0\",\"stock_quantity\":\"0\",\"shipping_class_id\":0,\"variations\":null}]}","request_method":"POST","response":"HTTP/2.0 200 OK\nContent-Length: 2137\nAccess-Control-Allow-Headers: Authorization, Content-Type\nAccess-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages\nAllow: POST, PUT, PATCH\nCache-Control: no-cache, must-revalidate, max-age=0\nContent-Type: application/json; charset=UTF-8\nDate: Thu, 13 Dec 2018 00:58:25 GMT\nExpires: Wed, 11 Jan 1984 05:00:00 GMT\nLink: <https://woocommerce-domain.com/wp-json/>; rel=\"https://api.w.org/\"\nServer: nginx/1.14.1\nStrict-Transport-Security: max-age=31536000\nX-Content-Type-Options: nosniff\nX-Powered-By: PHP/7.2.12\nX-Robots-Tag: noindex\n\n{\"update\":[{\"id\":8,\"name\":\"Simple + All 2\",\"slug\":\"simple1\",\"permalink\":\"https:\\/\\/woocommerce-domain.com\\/product\\/simple1\\/\",\"date_created\":\"2018-12-12T23:39:14\",\"date_created_gmt\":\"2018-12-12T23:39:14\",\"date_modified\":\"2018-12-13T00:58:25\",\"date_modified_gmt\":\"2018-12-13T00:58:25\",\"type\":\"simple\",\"status\":\"publish\",\"featured\":false,\"catalog_visibility\":\"visible\",\"description\":\"Simple product\",\"short_description\":\"\",\"sku\":\"1000001\",\"price\":\"40\",\"regular_price\":\"40\",\"sale_price\":\"\",\"date_on_sale_from\":null,\"date_on_sale_from_gmt\":null,\"date_on_sale_to\":null,\"date_on_sale_to_gmt\":null,\"price_html\":\"<span class=\\\"woocommerce-Price-amount amount\\\"><span class=\\\"woocommerce-Price-currencySymbol\\\">&#36;<\\/span>40.00<\\/span>\",\"on_sale\":false,\"purchasable\":true,\"total_sales\":0,\"virtual\":false,\"downloadable\":false,\"downloads\":[],\"download_limit\":-1,\"download_expiry\":-1,\"external_url\":\"\",\"button_text\":\"\",\"tax_status\":\"taxable\",\"tax_class\":\"\",\"manage_stock\":true,\"stock_quantity\":0,\"in_stock\":false,\"backorders\":\"no\",\"backorders_allowed\":false,\"backordered\":false,\"sold_individually\":false,\"weight\":\"\",\"dimensions\":{\"length\":\"\",\"width\":\"\",\"height\":\"\"},\"shipping_required\":true,\"shipping_taxable\":true,\"shipping_class\":\"\",\"shipping_class_id\":0,\"reviews_allowed\":true,\"average_rating\":\"0\",\"rating_count\":0,\"related_ids\":[],\"upsell_ids\":[],\"cross_sell_ids\":[],\"parent_id\":0,\"purchase_note\":\"\",\"categories\":[{\"id\":16,\"name\":\"Type 1\",\"slug\":\"type-1\"}],\"tags\":[{\"id\":17,\"name\":\"Tag2\",\"slug\":\"tag2\"}],\"images\":[{\"id\":0,\"date_created\":\"2018-12-13T00:58:25\",\"date_created_gmt\":\"2018-12-13T00:58:25\",\"date_modified\":\"2018-12-13T00:58:25\",\"date_modified_gmt\":\"2018-12-13T00:58:25\",\"src\":\"https:\\/\\/woocommerce-domain.com\\/wp-content\\/plugins\\/woocommerce\\/assets\\/images\\/placeholder.png\",\"name\":\"Placeholder\",\"alt\":\"Placeholder\",\"position\":0}],\"attributes\":[],\"default_attributes\":[],\"variations\":[],\"grouped_products\":[],\"menu_order\":0,\"meta_data\":[],\"_links\":{\"self\":[{\"href\":\"https:\\/\\/woocommerce-domain.com\\/wp-json\\/wc\\/v2\\/products\\/8\"}],\"collection\":[{\"href\":\"https:\\/\\/woocommerce-domain.com\\/wp-json\\/wc\\/v2\\/products\"}]}}]}","status_code":200,"url":"https://woocommerce-domain.com/wp-json/wc/v2/products/batch"}]},"schema":{"$ref":"#/components/schemas/RequestCollectionResponse"}}},"description":""}},"summary":"List request records","tags":["Channel Request Log"]}},"/channel_requests/{request_log_id}":{"get":{"description":"Returns a single request log entry with a specific ID.\n\n🔒 Requires: `channels:read` scope","operationId":"getSingleRequest","parameters":[{"description":"The request log id","in":"path","name":"request_log_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"grouping_id":"job-5aa0bfd3f948109e314610883da6a6edf4c826db-1544662705","id":"1073019276397793280","occurred_at":"2018-12-13T00:58:25.919065Z","request":"POST /wp-json/wc/v2/products/batch HTTP/1.1\nHost: woocommerce-domain.com\nUser-Agent: vend/integrations/268506b80c1d/go1.11\nContent-Length: 229\nAuthorization: [REDACTED]\nContent-Type: application/json\nAccept-Encoding: gzip\n\n{\"update\":[{\"id\":8,\"permalink\":\"\",\"date_created\":\"\",\"date_created_gmt\":\"0001-01-01T00:00:00\",\"date_modified\":\"\",\"date_modified_gmt\":\"0001-01-01T00:00:00\",\"price\":\"0\",\"stock_quantity\":\"0\",\"shipping_class_id\":0,\"variations\":null}]}","request_method":"POST","response":"HTTP/2.0 200 OK\nContent-Length: 2137\nAccess-Control-Allow-Headers: Authorization, Content-Type\nAccess-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages\nAllow: POST, PUT, PATCH\nCache-Control: no-cache, must-revalidate, max-age=0\nContent-Type: application/json; charset=UTF-8\nDate: Thu, 13 Dec 2018 00:58:25 GMT\nExpires: Wed, 11 Jan 1984 05:00:00 GMT\nLink: <https://woocommerce-domain.com/wp-json/>; rel=\"https://api.w.org/\"\nServer: nginx/1.14.1\nStrict-Transport-Security: max-age=31536000\nX-Content-Type-Options: nosniff\nX-Powered-By: PHP/7.2.12\nX-Robots-Tag: noindex\n\n{\"update\":[{\"id\":8,\"name\":\"Simple + All 2\",\"slug\":\"simple1\",\"permalink\":\"https:\\/\\/woocommerce-domain.com\\/product\\/simple1\\/\",\"date_created\":\"2018-12-12T23:39:14\",\"date_created_gmt\":\"2018-12-12T23:39:14\",\"date_modified\":\"2018-12-13T00:58:25\",\"date_modified_gmt\":\"2018-12-13T00:58:25\",\"type\":\"simple\",\"status\":\"publish\",\"featured\":false,\"catalog_visibility\":\"visible\",\"description\":\"Simple product\",\"short_description\":\"\",\"sku\":\"1000001\",\"price\":\"40\",\"regular_price\":\"40\",\"sale_price\":\"\",\"date_on_sale_from\":null,\"date_on_sale_from_gmt\":null,\"date_on_sale_to\":null,\"date_on_sale_to_gmt\":null,\"price_html\":\"<span class=\\\"woocommerce-Price-amount amount\\\"><span class=\\\"woocommerce-Price-currencySymbol\\\">&#36;<\\/span>40.00<\\/span>\",\"on_sale\":false,\"purchasable\":true,\"total_sales\":0,\"virtual\":false,\"downloadable\":false,\"downloads\":[],\"download_limit\":-1,\"download_expiry\":-1,\"external_url\":\"\",\"button_text\":\"\",\"tax_status\":\"taxable\",\"tax_class\":\"\",\"manage_stock\":true,\"stock_quantity\":0,\"in_stock\":false,\"backorders\":\"no\",\"backorders_allowed\":false,\"backordered\":false,\"sold_individually\":false,\"weight\":\"\",\"dimensions\":{\"length\":\"\",\"width\":\"\",\"height\":\"\"},\"shipping_required\":true,\"shipping_taxable\":true,\"shipping_class\":\"\",\"shipping_class_id\":0,\"reviews_allowed\":true,\"average_rating\":\"0\",\"rating_count\":0,\"related_ids\":[],\"upsell_ids\":[],\"cross_sell_ids\":[],\"parent_id\":0,\"purchase_note\":\"\",\"categories\":[{\"id\":16,\"name\":\"Type 1\",\"slug\":\"type-1\"}],\"tags\":[{\"id\":17,\"name\":\"Tag2\",\"slug\":\"tag2\"}],\"images\":[{\"id\":0,\"date_created\":\"2018-12-13T00:58:25\",\"date_created_gmt\":\"2018-12-13T00:58:25\",\"date_modified\":\"2018-12-13T00:58:25\",\"date_modified_gmt\":\"2018-12-13T00:58:25\",\"src\":\"https:\\/\\/woocommerce-domain.com\\/wp-content\\/plugins\\/woocommerce\\/assets\\/images\\/placeholder.png\",\"name\":\"Placeholder\",\"alt\":\"Placeholder\",\"position\":0}],\"attributes\":[],\"default_attributes\":[],\"variations\":[],\"grouped_products\":[],\"menu_order\":0,\"meta_data\":[],\"_links\":{\"self\":[{\"href\":\"https:\\/\\/woocommerce-domain.com\\/wp-json\\/wc\\/v2\\/products\\/8\"}],\"collection\":[{\"href\":\"https:\\/\\/woocommerce-domain.com\\/wp-json\\/wc\\/v2\\/products\"}]}}]}","status_code":200,"url":"https://woocommerce-domain.com/wp-json/wc/v2/products/batch"}},"schema":{"$ref":"#/components/schemas/RequestSingleResponse"}}},"description":""}},"summary":"Get a single request log","tags":["Channel Request Log"]}},"/channel_requests/{request_log_id}.txt":{"get":{"description":"Returns a text representation of a single request log entry with a specific ID.\n\n🔒 Requires: `channels:read` scope","operationId":"getSingleRequestText","parameters":[{"description":"The request log id","in":"path","name":"request_log_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"text/plain":{"example":"ID                   1074422697280679936\nGroupingID           api-TOx0VMzYJX\nURL                  https://woo-i9n.dev.vendhq.works/wp-json/wc/v2/system_status\nRequestMethod        GET\nRequest              GET /wp-json/wc/v2/system_status HTTP/1.1\n                     Host: woo-i9n.dev.vendhq.works\n                     User-Agent: vend/integrations/8e029c23748a/go1.10\n                     Authorization: [REDACTED]\n                     Content-Type: application/json\n                     Accept-Encoding: gzip\n\n\nStatusCode           401\nResponse             HTTP/2.0 401 Unauthorized\n                     Content-Length: 107\n                     Access-Control-Allow-Headers: Authorization, Content-Type\n                     Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages\n                     Content-Type: application/json; charset=UTF-8\n                     Date: Sun, 16 Dec 2018 21:55:07 GMT\n                     Link: <https://woo-i9n.dev.vendhq.works/wp-json/>; rel=\"https://api.w.org/\"\n                     Server: nginx/1.14.0\n                     Strict-Transport-Security: max-age=31536000\n                     X-Content-Type-Options: nosniff\n                     X-Powered-By: PHP/7.2.12\n                     X-Robots-Tag: noindex\n\n                     {\"code\":\"woocommerce_rest_cannot_view\",\"message\":\"Sorry, you cannot list resources.\",\"data\":{\"status\":401}}","schema":{"description":"Plain text representation of the request object.","type":"string"}}},"description":""}},"summary":"Get a single request log as text","tags":["Channel Request Log"]}},"/channels":{"get":{"description":"Returns a list of configured channels.\n\n🔒 Requires: `channels:read` scope","operationId":"listChannels","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelCollectionResponse"}}},"description":""}},"summary":"List channel records","tags":["Channel Request Log"]}},"/consignments":{"get":{"description":"Return a paginated list of consignments.\n\n🔒 Requires: `consignments:read` scope","operationId":"GetConsignments","parameters":[{"description":"The consignment type to search for.","in":"query","name":"type","schema":{"enum":["SUPPLIER","OUTLET","STOCKTAKE","RETURN"],"format":"string","type":"string"}},{"description":"The consignment status to search for.","in":"query","name":"status","schema":{"enum":["OPEN","SENT","DISPATCHED","RECEIVED","STOCKTAKE_IN_PROGRESS","STOCKTAKE_SCHEDULED","STOCKTAKE_IN_PROGRESS_PROCESSED","STOCKTAKE_COMPLETE","CLOSED","CANCELLED"],"format":"string","type":"string"}},{"description":"Filter response by the ID of the outlet associated with the consignments.","in":"query","name":"outlet_id","schema":{"format":"uuid","type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Consignment"},"type":"array"}}},"description":"OK"}},"summary":"List consignments","tags":["Consignments"]},"post":{"description":"Creates a new consignment.\n\nThe consignment type can be `SUPPLIER`, `OUTLET`, `STOCKTAKE` or `RETURN`. The workflows for these are:\n\n- `SUPPLIER` workflow: `OPEN` -> `SENT` -> `DISPATCHED` -> `RECEIVED`\n  * Can be `CANCELLED` at any time, except from `RECEIVED`\n  * Cannot create a `DISPATCHED` or `RECEIVED` consignment directly\n  * In the response `reference` refers to `Order number` and `name` refers to `Note`\n- `OUTLET` workflow: `OPEN` -> `SENT` -> `RECEIVED` (can be `CANCELLED` at any time after `OPEN`)\n- `RETURN` workflow: `OPEN` -> `SENT` or `CANCELLED`\n- `STOCKTAKE` workflow: `STOCKTAKE` or `STOCKTAKE_SCHEDULED` -> `STOCKTAKE_IN_PROGRESS` -> `STOCKTAKE_IN_PROGRESS_PROCESSED` -> `STOCKTAKE_COMPLETE` (can be `CANCELLED` or `CLOSED` at any time)\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"CreateConsignment","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsignmentRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"example":{"data":{"consignment_date":"2017-05-24T01:49:25+00:00","created_at":"2017-05-24T01:49:25+00:00","filters":[],"id":"0af7b240-ab83-11e7-eddc-402337165363","name":"API Invenotry Count","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","show_inactive":true,"status":"STOCKTAKE_SCHEDULED","type":"STOCKTAKE","updated_at":"2017-05-24T01:49:25+00:00","version":3505324485}},"schema":{"$ref":"#/components/schemas/ConsignmentResponse"}}},"description":""}},"summary":"Create a consignment","tags":["Consignments"]}},"/consignments/{consignment_id}":{"delete":{"description":"Deletes the consignment with the given ID.\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"DeleteConsignmentByID","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete a consignment","tags":["Consignments"]},"get":{"description":"Returns a single consignment with the requested ID.\n\n🔒 Requires: `consignments:read` scope","operationId":"GetConsignmentByID","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"consignment_date":"2014-07-13T23:22:00+00:00","created_at":"2014-07-13T23:22:00+00:00","filters":[],"id":"7dbe52cd-0ae4-11e4-a0f5-b8ca3a64f8f4","name":"Order - Mon 14 Jul 2014","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","received_at":"2015-07-30T02:59:51+00:00","show_inactive":true,"status":"RECEIVED","supplier_invoice":"","type":"SUPPLIER","updated_at":"2015-07-30T02:59:51+00:00","version":827406}},"schema":{"$ref":"#/components/schemas/ConsignmentResponse"}}},"description":""}},"summary":"Get a single consignment","tags":["Consignments"]},"put":{"description":"Updates the given consignment.\n\nIf the type is SUPPLIER then:\n\n- Cannot change from `SUPPLIER` to a different consignment type\n- `SUPPLIER` workflow: `OPEN` -> `SENT` -> `DISPATCHED` -> `RECEIVED`\n- Can be `CANCELLED` at any time, except from `RECEIVED`\n- Cannot update a `SUPPLIER` consignment that has the status `RECEIVED` or `CANCELLED`\n- Cannot update status if there are no products in the order\n- At least one product should have non-zero received quantity before updating to `RECEIVED`\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"UpdateConsignmentByID","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsignmentRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"consignment_date":"2014-08-20T03:07:07+00:00","created_at":"2014-08-20T03:07:07+00:00","due_at":"2014-08-21T00:00:00+00:00","filters":[],"id":"b8ca3a65-0183-11e4-fbb5-281711e05741","name":"Stock Transfer","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","received_at":"2014-08-20T03:08:49+00:00","show_inactive":true,"source_outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","status":"RECEIVED","supplier_invoice":"","type":"OUTLET","updated_at":"2014-08-20T03:08:49+00:00","version":1228872}},"schema":{"$ref":"#/components/schemas/ConsignmentResponse"}}},"description":""}},"summary":"Update a consignment","tags":["Consignments"]}},"/consignments/{consignment_id}/bulk":{"post":{"description":"Add or update the products in a consignment in bulk.\n\n**Note**: Must include either count or received for each product.\n\n**Note**: It is not recommended to update more than 500 products at a time, as this may lead to server timeouts.\n\n**Note**:\n\nIf the type is SUPPLIER then:\n\n- Cannot add a composite product by this api\n- Cannot update products if the consignment has a status of RECEIVED or CANCELLED\n- If status is OPEN or SENT, the count value will be accumulated\n- If status is DISPATCHED, the received quantity will be accumulated\n- If status is OPEN, SENT or DISPATCHED, the cost will be updated\n- If a received field is provided for consignment products in an OPEN or SENT Supplier Order - the order will be automatically marked as DISPATCHED. Remove the received field if you don't intend to dispatch the OPEN or SENT purchase order\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"CreateOrUpdateConsignmentProducts","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ConsignmentProduct"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"Example":{"example":{"data":{"0242ac14-002c-11eb-f66d-538dab104309":{"count":"60.00000"},"353a59ba-eb4a-de10-4f85-b8fdb8a08813":{"count":"60.00000"}}}},"application/json":{"schema":{"properties":{"data":{"properties":{"product_id":{"properties":{"count":{"minLength":1,"type":"string"},"received":{"type":"string"}},"type":"object"}},"type":"object"}},"type":"object"}}},"description":"OK"}},"summary":"Bulk update consignment products","tags":["Consignment Products"]}},"/consignments/{consignment_id}/products":{"get":{"description":"Returns a collection of consignment products associated with the specified consignment.\n\n🔒 Requires: `consignments:read` scope","operationId":"ListProductsByConsignmentID","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"cost":"0.00000","count":"10.00000","created_at":"2015-02-23T18:46:12+00:00","is_included":false,"product_id":"fa16cdf8-063c-11e4-a0f5-b8ca3a64f8f4","received":"10.00000","status":"RECEIVE_SUCCESS","updated_at":"2015-07-30T02:59:51+00:00","version":3542970},{"cost":"0.00000","created_at":"2015-02-23T18:46:24+00:00","is_included":false,"product_id":"fa16cdf8-063c-11e4-a0f5-b8ca3a64f8f4","received":"0.00000","status":"RECEIVE_SUCCESS","updated_at":"2015-07-30T02:59:51+00:00","version":3542975},{"cost":"100.00000","count":"10.00000","created_at":"2014-07-13T23:22:59+00:00","is_included":true,"product_id":"fa16cdf8-063c-11e4-a0f5-b8ca3a64f8f4","received":"0.00000","status":"RECEIVE_SUCCESS","updated_at":"2015-07-30T02:59:51+00:00","version":20813790}],"version":{"max":20813790,"min":3542970}},"schema":{"$ref":"#/components/schemas/ConsignmentProductCollection"}}},"description":""}},"summary":"List all products for a specific consignment","tags":["Consignment Products"]},"post":{"description":"Add a product to the given consignment.\n\nIf the type is SUPPLIER then:\n\n- Cannot add a product to a `RECEIVED` or `CANCELLED` order\n- Cannot add a composite product to the order\n- If a received value is provided for a consignment product for a SENT Supplier Order - the order will be automatically marked as DISPATCHED\n\nIf the type is OUTLET then:\n\n- If a cost value is not provided for a consignment product on an OPEN Outlet order - the cost will be automatically populated after the fact using the most accurate average cost of the product at the time of marking the consignment as sent.\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"CreateConsignmentProduct","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsignmentProductRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryCountItemResponse"}}},"description":"OK"}},"summary":"Add a product to a consignment","tags":["Consignment Products"]}},"/consignments/{consignment_id}/products/{product_id}":{"delete":{"description":"Removes the specific product from the consignment.\n\nFor `SUPPLIER` workflow:\n\n- Cannot delete a product from a consignment with a status of `DISPATCHED`, `RECEIVED` or `CANCELLED`\n\nFor consignment type `OUTLET`:\n\n- Cannot delete a product if the consignment has a status of `SENT` or `RECEIVED`\n\nFor consignment type `RETURN`:\n\n- Cannot delete a product if the consignment has a status of `SENT`\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"DeleteProductFromConsignment","parameters":[{"description":"The consignment id to be updated.","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The product id of the product to be added to the consignment.","in":"path","name":"product_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete an item from a consignment","tags":["Consignment Products"]},"put":{"description":"Updates the specific product within the consignment.\n\n**Notes**:\n\n- If the type is SUPPLIER then:\n  * If status is OPEN or SENT, the count value will be updated\n  * If status is DISPATCHED, the received quantity will be updated\n  * If status is OPEN, SENT or DISPATCHED, the cost can be updated\n  * Cannot update a product in RECEIVED or CANCELLED status\n  * Any updates to the received quantity field on a product in a `SENT` consignment, will set the consignment status to `DISPATCHED`\n- If the type is OUTLET then:\n  * If the status is OPEN and there is a cost the cost will be updated.\n  * If the status is SENT or DISPATCHED and received is not null the received quantity will be updated.\n  * If the status is OPEN or SENT and count is not null then the count quantity will be updated.\n- If the type is RETURN and the status is OPEN or SENT and count is not null then the count quantity will be updated.\n- If the type is STOCKTAKE and the status is STATUS\\_STOCKTAKE\\_IN\\_PROGRESS or STATUS\\_STOCKTAKE\\_IN\\_PROCESS\\_PROCESSED and received is not null then the received quantity will be updated.\n\n🔒 Requires: One of the following scopes:\n- `consignments:write:stock_order` scope for `SUPPLIER` and `RETURN` consignments\n- `consignments:write:stock_transfer` scope for `OUTLET` consignments\n- `consignments:write:inventory_count` scope for `STOCKTAKE` consignments","operationId":"UpdateProductInConsignment","parameters":[{"description":"The consignment id to be updated.","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The product id of the product to be added to the consignment.","in":"path","name":"product_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsignmentProductRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsignmentProductResponse"}}},"description":"OK"}},"summary":"Update a product in a consignment","tags":["Consignment Products"]}},"/consignments/{consignment_id}/totals":{"get":{"description":"Returns the count and cost for the given consignment.\n\nThe consignment type can be `SUPPLIER`, `OUTLET` or `RETURN` (not `STOCKTAKE`).\n\nThe status of the consignment will determine which values make sense:\n\n- If the consignment type is `OUTLET` the sent cost may not be accurate when the status is `OPEN`.\n- If the consignment is `OPEN` or `SENT` the received count and cost should both be zero.\n- For completely received consignments received cost should equal the sent cost and the received count should equal the sent count.\n- For partially received consignments we would expect the received cost value to be less than sent cost value, and the received count to be less than the sent count.\n\n🔒 Requires: `consignments:read` scope","operationId":"ListConsignmentTotals","parameters":[{"description":"The consignment id","in":"path","name":"consignment_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"Example":{"example":{"data":[{"total_received_cost":"50.0000000000","total_received_count":"5.00000","total_sent_cost":"150.0000000000","total_sent_count":"15.00000"}]}},"application/json":{"schema":{"$ref":"#/components/schemas/ConsignmentTotalsResponse"}}},"description":"OK"}},"summary":"Get consignment totals","tags":["Consignments"]}},"/customer_groups":{"get":{"description":"Return a list of Customer Groups\n\n🔒 Requires: `customers:read` scope","operationId":"ListCustomerGroups","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"created_at":"2014-06-09T21:04:49+00:00","group_id":"1111111111","id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","name":"All Customers","updated_at":"2014-06-09T21:04:49+00:00","version":29483},{"created_at":"2015-08-19T21:32:06+00:00","group_id":"VIP-Y968","id":"dc85058a-a683-11e5-e112-46b9bd1f069e","name":"VIP","updated_at":"2015-08-19T21:32:06+00:00","version":157810},{"created_at":"2016-04-26T21:45:53+00:00","group_id":"Students-2SFG","id":"06e35f89-3783-11e6-ec7e-0bf840380a64","name":"Students","updated_at":"2016-04-26T21:45:53+00:00","version":1205737356}],"version":{"max":1205737356,"min":29483}},"schema":{"$ref":"#/components/schemas/CustomerGroupCollection"}}},"description":"OK"}},"summary":"List customer groups","tags":["Customer Groups"]},"post":{"description":"Create a new customer group\n\n🔒 Requires: `customers:write` scope","operationId":"CreateCustomerGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerGroup"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerGroupResponse"}}},"description":"Created"}},"summary":"Create new customer group","tags":["Customer Groups"]}},"/customer_groups/{customer_group_id}":{"get":{"description":"Return given customer group\n\n🔒 Requires: `customers:read` scope","operationId":"GetCustomerGroupById","parameters":[{"description":"The customer group id","in":"path","name":"customer_group_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerGroupResponse"}}},"description":"OK"}},"summary":"Get single customer group","tags":["Customer Groups"]},"put":{"description":"Update the given Customer Group\n\n🔒 Requires: `customers:write` scope","operationId":"UpdateCustomerGroup","parameters":[{"description":"The customer group id","in":"path","name":"customer_group_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerGroup"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerGroupResponse"}}},"description":"OK"}},"summary":"Update the given customer group","tags":["Customer Groups"]}},"/customer_groups/{customer_group_id}/customers":{"delete":{"description":"Deletes the given customers from the customer group.\n\n**Note**: Only the link is deleted, the customers are not.\n\n🔒 Requires: `customers:write` scope\n","operationId":"DeleteCustomersFromCustomerGroup","parameters":[{"description":"The customer group id","in":"path","name":"customer_group_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"An array of Customer ids to delete from the Customer Group.","properties":{"customer_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"204":{"content":{"application/json":{"schema":{"type":"string"}}},"description":"OK"}},"summary":"Delete customers from customer group","tags":["Customer Groups"]},"get":{"description":"Returns a list of customers for the given Customer Group\n\n🔒 Requires: `customers:read` scope","operationId":"GetCustomerGroupCustomers","parameters":[{"description":"The customer group id","in":"path","name":"customer_group_id","required":true,"schema":{"type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCollection"}}},"description":"OK"}},"summary":"Get customers for customer group","tags":["Customer Groups"]},"post":{"description":"Associates one or more customers with the given customer group\n\n🔒 Requires: `customers:write` scope","operationId":"AddCustomersToCustomerGroup","parameters":[{"description":"The customer group id","in":"path","name":"customer_group_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"An array of Customer ids to add to the Customer Group.","properties":{"customer_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"type":"boolean"}}},"description":"OK"}},"summary":"Add customers to customer group","tags":["Customer Groups"]}},"/customers":{"get":{"description":"Returns a paginated list of customers.\n\nTo search for customers, please have a look at our [Search endpoint](/reference/search-1) on what is supported.\n\n🔒 Requires: `customers:read` scope","operationId":"ListCustomers","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"balance":-25840.85,"company_name":"Stark Industries Inc","created_at":"2014-10-09T05:20:09+00:00","custom_field_1":"test","custom_field_2":"","custom_field_3":"","custom_field_4":"","customer_code":"Tony-N4ZJ","customer_group_id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","date_of_birth":"1963-03-03","do_not_email":false,"email":"tony@stark.com","enable_loyalty":true,"enable_promotional_sms":false,"fax":"+001 555 12345345","first_name":"Anthony","gender":"M","id":"b8ca3a65-0183-11e4-fbb5-4f73f02a9d1c","last_name":"Stark","loyalty_balance":5809.64,"mobile":"+001 485 23456789","name":"Anthony Stark","note":"","on_account_limit":1000,"phone":"+001 555 12345678","physical_address_1":"Street 1","physical_address_2":"Street 2","physical_city":"Los Angeles","physical_country_id":"NZ","physical_postcode":"23422","physical_state":"California","physical_suburb":"Suburb","postal_address_1":"Street 1","postal_address_2":"Street 2","postal_city":"Los Angeles","postal_country_id":"NZ","postal_postcode":"23422","postal_state":"California","postal_suburb":"Suburb","twitter":"@ironman","updated_at":"2017-01-19T16:49:35+00:00","version":2691964626,"website":"http://www.starkinc.com","year_to_date":0},{"balance":0,"created_at":"2017-02-13T17:33:25+00:00","customer_code":"UNNAMED-669D","customer_group_id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","do_not_email":false,"enable_loyalty":true,"enable_promotional_sms":false,"first_name":null,"id":"06bf537b-c783-11e6-ff13-f21286299973","last_name":null,"loyalty_balance":0,"on_account_limit":null,"updated_at":"2017-02-13T17:33:25+00:00","version":2847386277,"year_to_date":0}]},"schema":{"$ref":"#/components/schemas/CustomerCollection"}}},"description":""}},"summary":"List customers","tags":["Customers"]},"post":{"description":"Creates a new customer.\n\n🔒 Requires: `customers:write` scope","operationId":"CreateCustomer","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBase"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerResponse"}},"new":{"example":{"data":{"balance":0,"created_at":"2017-05-24T01:53:25+00:00","customer_code":"Tony-37YP","customer_group_id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","do_not_email":false,"email":"tony@starkinc.com","enable_loyalty":true,"enable_promotional_sms":false,"first_name":"Tony","id":"0af7b240-ab83-11e7-eddc-4023c64c85e5","last_name":"Stark","loyalty_balance":0,"name":"Tony Stark","tax_id":null,"updated_at":"2017-05-24T01:53:25+00:00","version":3505346597,"year_to_date":0}}}},"description":""}},"summary":"Create a new customer","tags":["Customers"]}},"/customers/{customer_id}":{"delete":{"description":"Deletes the customer with the requested ID.\n\n🔒 Requires: `customers:write` scope","operationId":"DeleteCustomerByID","parameters":[{"description":"The customer id","in":"path","name":"customer_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete a customer","tags":["Customers"]},"get":{"description":"Returns a single customer with a requested ID.\n\n🔒 Requires: `customers:read` scope","operationId":"GetCustomerByID","parameters":[{"description":"The customer id","in":"path","name":"customer_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"balance":-25840.85,"company_name":"Stark Industries Inc","created_at":"2014-10-09T05:20:09+00:00","custom_field_1":"test","custom_field_2":"","custom_field_3":"","custom_field_4":"","customer_code":"Tony-N4ZJ","customer_group_id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","date_of_birth":"1963-03-03","do_not_email":false,"email":"tony@stark.com","enable_loyalty":true,"enable_promotional_sms":false,"fax":"+001 555 12345345","first_name":"Anthony","gender":"M","id":"b8ca3a65-0183-11e4-fbb5-4f73f02a9d1c","last_name":"Stark","loyalty_balance":5809.64,"mobile":"+001 485 23456789","name":"Anthony Stark","note":"","phone":"+001 555 12345678","physical_address_1":"Street 1","physical_address_2":"Street 2","physical_city":"Los Angeles","physical_country_id":"NZ","physical_postcode":"23422","physical_state":"California","physical_suburb":"Suburb","postal_address_1":"Street 1","postal_address_2":"Street 2","postal_city":"Los Angeles","postal_country_id":"NZ","postal_postcode":"23422","postal_state":"California","postal_suburb":"Suburb","twitter":"@ironman","updated_at":"2017-01-19T16:49:35+00:00","version":2691964626,"website":"http://www.starkinc.com","year_to_date":0}},"schema":{"$ref":"#/components/schemas/CustomerResponse"}}},"description":""}},"summary":"Get a single customer","tags":["Customers"]},"put":{"description":"Updates the customer with the requested ID.\n\n🔒 Requires: `customers:write` scope","operationId":"UpdateCustomerByID","parameters":[{"description":"The customer id","in":"path","name":"customer_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerBase"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"balance":0,"company_name":"Stark Inc.","created_at":"2017-05-24T02:02:18+00:00","custom_field_1":"Custom value 1","custom_field_2":"Custom value 2","custom_field_3":"Custom value 3","custom_field_4":"Custom value 4","customer_code":"Tony-AB2W","customer_group_id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","do_not_email":false,"email":"tony@starkinc.com","enable_loyalty":true,"enable_promotional_sms":false,"first_name":"Tony","id":"0af7b240-ab83-11e7-eddc-4025043113d5","last_name":"Stark","loyalty_balance":0,"name":"Tony Stark","tax_id":null,"updated_at":"2017-05-24T02:03:59+00:00","version":3505431251,"year_to_date":0}},"schema":{"$ref":"#/components/schemas/CustomerResponse"}}},"description":""}},"summary":"Update a customer","tags":["Customers"]}},"/customers/{customer_id}/addresses":{"get":{"description":"Returns a list of all addresses associated with the specified customer.\n\n🔒 Requires: `customers:read` scope","operationId":"ListCustomerAddresses","parameters":[{"description":"The unique identifier of the customer.","in":"path","name":"customer_id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"address_line_1":"123 Main Street","address_line_2":"Suite 100","city":"Auckland","country_code":"NZ","country_name":"New Zealand","created_at":"2025-01-12T10:00:00Z","customer_id":"b8ca3a65-0183-11e4-fbb5-4f73f02a9d1c","id":123456789,"postcode":"1010","state":"Auckland","state_code":"AUK","suburb":"Downtown","type":"BILLING","updated_at":"2025-01-12T10:00:00Z"}]},"schema":{"$ref":"#/components/schemas/CustomerAddressCollection"}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - insufficient permissions"},"404":{"description":"Customer not found"}},"summary":"List all addresses for a customer","tags":["Customer Addresses"]},"post":{"description":"Creates a new address for the specified customer.\n\n**Validation Rules:**\n- `country_code`: Required, must be a valid ISO 3166-1 alpha-2 code (e.g., US, NZ, AU)\n- `state_code`: Required for US and CA, must be valid for the country\n- `postcode`: Required, must be valid format for the country\n- `type`: Required, must be either BILLING or SHIPPING\n- `address_line_1`: Required, maximum 50 characters\n- `city`: Required, maximum 28 characters\n- `state`: Maximum 35 characters\n\n🔒 Requires: `customers:write` scope","operationId":"CreateCustomerAddress","parameters":[{"description":"The unique identifier of the customer.","in":"path","name":"customer_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"address_line_1":"123 Main Street","address_line_2":"Suite 100","city":"Auckland","country_code":"NZ","postcode":"1010","state":"Auckland","state_code":"AUK","suburb":"Downtown","type":"BILLING"},"schema":{"$ref":"#/components/schemas/CustomerAddressBase"}}},"required":true},"responses":{"201":{"content":{"application/json":{"example":{"data":{"address_line_1":"123 Main Street","address_line_2":"Suite 100","city":"Auckland","country_code":"NZ","country_name":"New Zealand","created_at":"2025-01-12T10:00:00Z","customer_id":"b8ca3a65-0183-11e4-fbb5-4f73f02a9d1c","id":123456789,"id_token":"abc123token","postcode":"1010","state":"Auckland","state_code":"AUK","suburb":"Downtown","type":"BILLING","updated_at":"2025-01-12T10:00:00Z"}},"schema":{"$ref":"#/components/schemas/CustomerAddressCreateResponse"}}},"description":"Address created successfully"},"400":{"description":"Bad Request - validation errors"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - insufficient permissions"},"404":{"description":"Customer not found"}},"summary":"Create a new address for a customer","tags":["Customer Addresses"],"x-codegen-request-body-name":"body"}},"/customers/{customer_id}/addresses/{address_id}":{"delete":{"description":"Deletes an address for the specified customer.\n\n🔒 Requires: `customers:write` scope","operationId":"DeleteCustomerAddress","parameters":[{"description":"The unique identifier of the customer.","in":"path","name":"customer_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The unique identifier of the address.","in":"path","name":"address_id","required":true,"schema":{"format":"int64","type":"integer"}}],"responses":{"204":{"description":"Address deleted successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - insufficient permissions or address is read-only"},"404":{"description":"Customer or address not found"}},"summary":"Delete an address","tags":["Customer Addresses"]},"get":{"description":"Returns a single address by its ID for the specified customer.\n\n🔒 Requires: `customers:read` scope","operationId":"GetCustomerAddress","parameters":[{"description":"The unique identifier of the customer.","in":"path","name":"customer_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The unique identifier of the address.","in":"path","name":"address_id","required":true,"schema":{"format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"address_line_1":"123 Main Street","address_line_2":"Suite 100","city":"Auckland","country_code":"NZ","country_name":"New Zealand","created_at":"2025-01-12T10:00:00Z","customer_id":"b8ca3a65-0183-11e4-fbb5-4f73f02a9d1c","id":123456789,"postcode":"1010","state":"Auckland","state_code":"AUK","suburb":"Downtown","type":"BILLING","updated_at":"2025-01-12T10:00:00Z"}},"schema":{"$ref":"#/components/schemas/CustomerAddressResponse"}}},"description":""},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - insufficient permissions"},"404":{"description":"Customer or address not found"}},"summary":"Get a single address","tags":["Customer Addresses"]},"put":{"description":"Updates an existing address for the specified customer.\n\n**Validation Rules:**\n- `country_code`: Required, must be a valid ISO 3166-1 alpha-2 code (e.g., US, NZ, AU)\n- `state_code`: Required for US and CA, must be valid for the country\n- `postcode`: Required, must be valid format for the country\n- `type`: Required, must be either BILLING or SHIPPING\n- `address_line_1`: Required, maximum 50 characters\n- `city`: Required, maximum 28 characters\n- `state`: Maximum 35 characters\n\n🔒 Requires: `customers:write` scope","operationId":"UpdateCustomerAddress","parameters":[{"description":"The unique identifier of the customer.","in":"path","name":"customer_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"The unique identifier of the address.","in":"path","name":"address_id","required":true,"schema":{"format":"int64","type":"integer"}}],"requestBody":{"content":{"application/json":{"example":{"address_line_1":"456 Updated Avenue","address_line_2":"Floor 2","city":"Wellington","country_code":"NZ","postcode":"6011","state":"Wellington","state_code":"WGN","suburb":"Midtown","type":"SHIPPING"},"schema":{"$ref":"#/components/schemas/CustomerAddressBase"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"address_line_1":"456 Updated Avenue","address_line_2":"Floor 2","city":"Wellington","country_code":"NZ","country_name":"New Zealand","created_at":"2025-01-12T10:00:00Z","customer_id":"b8ca3a65-0183-11e4-fbb5-4f73f02a9d1c","id":123456789,"postcode":"6011","state":"Wellington","state_code":"WGN","suburb":"Midtown","type":"SHIPPING","updated_at":"2025-01-12T12:30:00Z"}},"schema":{"$ref":"#/components/schemas/CustomerAddressResponse"}}},"description":"Address updated successfully"},"400":{"description":"Bad Request - validation errors"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden - insufficient permissions or address is read-only"},"404":{"description":"Customer or address not found"}},"summary":"Update an address","tags":["Customer Addresses"],"x-codegen-request-body-name":"body"}},"/discount":{"post":{"description":"This will find the best possible promotion to a sale, apply it and return the sale and the discount.\n\n * Despite its `POST` method, this endpoint does not modify any server-side state.\n * It is the caller's responsibility to pass along the full details of the sale, including all customer information and product information (product type, tags, etc.).\n\n 🔒 Requires: `promotions:read` `outlets:read` scopes\n","operationId":"ApplyDiscount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountParam"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountResponse"}}},"description":""}},"summary":"Apply discounts to a sale object","tags":["Promotions"]}},"/fulfillments":{"get":{"description":"Retrieves a paginated list of fulfillment summary items with optional filtering","operationId":"getFulfillmentSummary","parameters":[{"description":"Filter by outlet IDs (can be specified multiple times)","example":["e058ea02-c565-405f-be27-cefaeeca1f92","aea44f85-b729-448b-bcd4-bd2b8757396f"],"explode":true,"in":"query","name":"outlet_id","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by sale IDs (can be specified multiple times)","example":["81b37e5f-aa50-4fe3-95d3-a3cec73a7e2c","81d2fc44-e4d4-4180-8f1e-b36de2acf438"],"explode":true,"in":"query","name":"sale_id","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Filter by fulfillment types (can be specified multiple times)","example":["PICKUP","DISPATCH"],"explode":true,"in":"query","name":"fulfillment_type","schema":{"items":{"enum":["PICKUP","DISPATCH","SERVICE"],"type":"string"},"type":"array"}},{"description":"Filter by fulfillment states (can be specified multiple times)","example":["OPEN","STARTED"],"explode":true,"in":"query","name":"fulfillment_state","schema":{"items":{"enum":["OPEN","STARTED","PICKED","PACKED","FULFILLED"],"type":"string"},"type":"array"}},{"description":"Page number for pagination (1-based)","example":1,"in":"query","name":"page_number","schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Number of items per page","example":20,"in":"query","name":"page_size","schema":{"default":10,"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillmentSummaryResponse"}}},"description":"Successful response with fulfillment summary data"},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"bearerAuth":[]}],"summary":"Get Fulfillments Summary","tags":["Fulfillments"]}},"/fulfillments/fulfill":{"post":{"description":"Completes all fulfillments for a given sale. This is an idempotent action.\n\n🔒 Requires: `sales:write` scope","operationId":"postFulfillSale","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillSaleRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillSaleResponse"}}},"description":"Sale fulfilled successfully."},"400":{"description":"Bad Request - The request body is malformed."},"401":{"description":"Unauthorized - Authentication information is missing or invalid."},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"security":[{"bearerAuth":[]}],"summary":"Fulfill a Sale","tags":["Fulfillments"]}},"/fulfillments/{fulfillment_id}/fulfill":{"post":{"description":"Fulfills line items for a given sale. This is an idempotent action.\n\nEach line item may optionally include a `source_breakdown`, which specifies how a fulfillment quantity should be sourced.\nWhen provided, all three fields are required and must sum to the parent quantity.\n\n🔒 Requires: `sales:write` scope","operationId":"postFulfillLineItems","parameters":[{"description":"The unique identifier of the fulfillment","in":"path","name":"fulfillment_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillLineItemsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillLineItemsResponse"}}},"description":"Sale line item fulfilled successfully."},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"security":[{"bearerAuth":[]}],"summary":"Fulfill line items within a sale","tags":["Fulfillments"]}},"/fulfillments/{fulfillment_id}/pack":{"post":{"description":"Sets pack quantity for line items for a given sale. This is an idempotent action.\n\nEach line item may optionally include a `source_breakdown`, which specifies how a packing quantity should be sourced.\nWhen provided, both fields are required and must sum to the parent quantity.\nSource breakdown is not allowed when the quantity is negative (unpacking).\n\n🔒 Requires: `sales:write` scope","operationId":"postPackLineItems","parameters":[{"description":"The unique identifier of the fulfillment","in":"path","name":"fulfillment_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackLineItemsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PackLineItemsResponse"}}},"description":"Sale line item packed successfully."},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"security":[{"bearerAuth":[]}],"summary":"Partial Pack line items within a sale","tags":["Fulfillments"]}},"/fulfillments/{fulfillment_id}/pick":{"post":{"description":"Sets pick quantity for line items for a given sale. This is an idempotent action.\n\n🔒 Requires: `sales:write` scope","operationId":"postPickLineItems","parameters":[{"description":"The unique identifier of the fulfillment","in":"path","name":"fulfillment_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PickLineItemsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PickLineItemsResponse"}}},"description":"Sale line item picked successfully."},"400":{"description":"Bad Request"},"401":{"description":"Unauthorized"},"404":{"description":"Not Found"},"409":{"description":"Conflict"}},"security":[{"bearerAuth":[]}],"summary":"Partial Pick line items within a sale","tags":["Fulfillments"]}},"/gift_cards":{"get":{"description":"Returns a paginated list of gift cards.\n\n🔒 Requires: `gift_cards:read` scope","operationId":"ListGiftCards_v2026-04","parameters":[{"description":"Pagination cursor for reverse-chronological traversal. Pass the ID of a gift card to retrieve the next page of gift cards created before it, ordered from newest to oldest.","in":"query","name":"before","schema":{"type":"string"}},{"description":"The maximum number of items to be returned in the response. Defaults to 1000. Maximum value is 1000.","in":"query","name":"page_size","schema":{"default":1000,"maximum":1000,"type":"integer"}},{"description":"Find by gift card number.","in":"query","name":"card_number","schema":{"type":"string"}},{"description":"Filter by gift card status.","in":"query","name":"status","schema":{"enum":["ACTIVE","INACTIVE","REDEEMED","VOIDED","EXPIRED"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardCollection"}}},"description":"The gift card list was successfully retrieved."}},"summary":"List gift cards","tags":["Gift Cards"]},"post":{"description":"Creates and activates a new gift card. The gift card will be created with one transaction with status \"ACTIVATION\" which contains the initial balance of the gift card.\n\n🔒 Requires: `gift_cards:write:issue` scope","operationId":"CreateGiftCard_v2026-04","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardActivationParams"}}},"description":"Create gift card parameters","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardSingleton"}}},"description":"Gift card successfully created."},"422":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Gift card has already been created and activated."}},"summary":"Create gift card","tags":["Gift Cards"]}},"/gift_cards/by_id/{id}":{"delete":{"description":"Voids the gift card with the given id. The gift card balance will be set to zero and its status changed to \"VOIDED\".\n\n🔒 Requires: `gift_cards:write:issue` scope","operationId":"VoidGiftCardById_v2026-04","parameters":[{"description":"The id of the gift card to be voided.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardSingleton"}}},"description":"Gift card successfully voided."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The gift card was not found."}},"summary":"Void gift card by id","tags":["Gift Cards"]},"get":{"description":"Finds and returns the gift card with the given id. Returns a 404 if the card does not exist.\n\nWithin the gift card structure returned is the field `gift_card_transactions` which contains a list of all the transactions associated with the gift card. In this list you will see one or more of the following statuses:\n\n* \"ACTIVATION\" - This transaction type is added automatically when the gift card is created. The amount will be the initial balance that was loaded onto the gift card.\n* \"REDEEMING\" - This status indicates the customer used their gift card to pay for one or more items. The amount MUST be negative.\n* \"IMPORTING\" - You should only see this if gift cards were imported into the gift card system.\n* \"VOIDING\" - You will see this status if the gift card has been voided. Note that the balance of the card is set to zero when the gift card is voided.\n* \"EXPIRING\" - This transaction is added automatically when the gift card expires. Again note that the balance is set to zero when the gift card expires.\n* \"REVERSING\" - This status indicates that a given transaction was reversed.\n* \"RELOADING\" - This status means that more credit was loaded onto the gift card.\n\n🔒 Requires: `gift_cards:read` scope","operationId":"FindGiftCardById_v2026-04","parameters":[{"description":"The id of the gift card to find.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardSingleton"}}},"description":"Gift card successfully retrieved."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Gift card was not found."}},"summary":"Find gift card by id","tags":["Gift Cards"]}},"/gift_cards/by_number/{card_number}":{"delete":{"description":"Voids the gift card with the given card number. The gift card balance will be set to zero and its status changed to \"VOIDED\".\n\n🔒 Requires: `gift_cards:write:issue` scope","operationId":"VoidGiftCardByNumber_v2026-04","parameters":[{"description":"The number of the gift card to be voided.","in":"path","name":"card_number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardSingleton"}}},"description":"Gift card successfully voided."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The gift card was not found."}},"summary":"Void gift card by number","tags":["Gift Cards"]},"get":{"description":"Finds and returns the gift card with the given card number. Returns a 404 if the card does not exist.\n\nWithin the gift card structure returned is the field `gift_card_transactions` which contains a list of all the transactions associated with the gift card. In this list you will see one or more of the following statuses:\n\n* \"ACTIVATION\" - This transaction type is added automatically when the gift card is created. The amount will be the initial balance that was loaded onto the gift card.\n* \"REDEEMING\" - This status indicates the customer used their gift card to pay for one or more items. The amount MUST be negative.\n* \"IMPORTING\" - You should only see this if gift cards were imported into the gift card system.\n* \"VOIDING\" - You will see this status if the gift card has been voided. Note that the balance of the card is set to zero when the gift card is voided.\n* \"EXPIRING\" - This transaction is added automatically when the gift card expires. Again note that the balance is set to zero when the gift card expires.\n* \"REVERSING\" - This status indicates that a given transaction was reversed.\n* \"RELOADING\" - This status means that more credit was loaded onto the gift card.\n\n🔒 Requires: `gift_cards:read` scope","operationId":"FindGiftCardByNumber_v2026-04","parameters":[{"description":"The number of the gift card to find.","in":"path","name":"card_number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardSingleton"}}},"description":"Gift card successfully retrieved."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Gift card was not found."}},"summary":"Find gift card by number","tags":["Gift Cards"]}},"/gift_cards/transactions/{transaction_id}":{"delete":{"description":"Reverses the given transaction on the gift card. If the reversal is successful, a new transaction will be added to the gift card transactions with the status \"REVERSING\". Only transactions of type \"REDEEMING\" can be reversed.\n\n🔒 Requires: `gift_cards:write:redeem` scope","operationId":"ReverseGiftCardTransaction_v2026-04","parameters":[{"description":"The transaction id to be reversed for the gift card.","in":"path","name":"transaction_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardTransactionSingleton"}}},"description":"The gift card transaction was successfully reversed."},"400":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Only transactions of type \"REDEEMING\" can be reversed."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"A 404 is returned if the gift card transaction is not found."}},"summary":"Reverse gift card transaction","tags":["Gift Cards"]},"get":{"description":"Finds and returns the gift card associated with the given transaction id. Returns a 404 if the gift card with the given transaction id was not found.\n\nSupports an optional `system_id` query parameter to specify the source system (defaults to x-series, also supports e-series).\n\n🔒 Requires: `gift_cards:read` scope","operationId":"FindGiftCardByTransactionId_v2026-04","parameters":[{"description":"The transaction id of the gift card transaction to find.","in":"path","name":"transaction_id","required":true,"schema":{"type":"string"}},{"description":"The source system identifier. Defaults to x-series if not specified.","in":"query","name":"system_id","schema":{"default":"x-series","enum":["x-series","e-series"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardSingleton"}}},"description":"The gift card with this transaction id was successfully found."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The gift card associated with the transaction id was not found."}},"summary":"Find gift card by transaction id","tags":["Gift Cards"]}},"/gift_cards/{card_number}/transactions":{"post":{"description":"Creates a new gift card transaction on the specified gift card. The request body requires the `type`, `amount`, and `client_id` fields. The `type` determines what sort of transaction it is.\n\n* \"REDEEMING\" - Use this type when you want to redeem a certain amount from the gift card balance. The amount MUST be negative. If you want to add an amount to the balance use the \"RELOADING\" type.\n* \"RELOADING\" - Use this type when you load a new amount onto a gift card.\n\nIf the gift card does not have enough credit to honour the transaction a 422 HTTP status code will be returned.\n\n## Idempotency\n\nPlease populate the client_id field with a unique transaction identifier, to ensure that the transaction is safe from double-submit problems. See [the tutorial](/docs/gift_cards#idempotency) for more information.\n\n🔒 Requires: `gift_cards:write:redeem` scope","operationId":"CreateGiftCardTransaction_v2026-04","parameters":[{"description":"The number of the gift card to add the transaction to.","in":"path","name":"card_number","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardTransactionParams"}}},"description":"Create gift card transaction parameters","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardTransactionSingleton"}}},"description":"Gift card transaction successfully created."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The gift card was not found."},"422":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Gift card does not have sufficient balance."}},"summary":"Create a gift card transaction","tags":["Gift Cards"]}},"/gift_cards/{number}":{"delete":{"description":"Void the given gift card.\n\n🔒 Requires: `gift_cards:write:issue` scope","operationId":"VoidGiftCard","parameters":[{"description":"The number of the gift card to be voided.","in":"path","name":"number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCard"}}},"description":"Gift card successfully voided."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The gift card was not found."}},"summary":"Void gift card","tags":["Gift Cards"]},"get":{"description":"Finds and returns the given card number. Returns a 404 if the card does not exist.\n\nWithin the gift card structure returned is the field gift__card__transactions which contains a list of all the transactions associated with the gift card. In this list you will see one or more of the following statuses:\n\n* \"ACTIVATION\" - This transaction type is added automatically when the gift card is created. The amount will be the initial balance that was loaded onto the gift card.\n* \"REDEEMING\" - This status indicates the customer used their gift card to pay for one or more items. The amount MUST be negative.\n* \"IMPORTING\" - You should only see this if gift cards were imported into the gift card system.\n* \"VOIDING\" - You will see this status if the gift card has been voided. Note that the balance of the card is set to zero when the gift card is voided.\n* \"EXPIRING\" - This transaction is added automatically when the gift card expires. Again note that the balance is set to zero when the gift card expires.\n* \"REVERSING\" - This status indicates that a given transaction was reversed.\n* \"RELOADING\" - This status means that more credit was loaded onto the gift card.\n\n🔒 Requires: `gift_cards:read` scope","operationId":"FindGiftCard","parameters":[{"description":"The number of the gift card to find.","in":"path","name":"number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCard"}}},"description":"Gift card successfully retrieved."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Gift card was not found."}},"summary":"Find gift card","tags":["Gift Cards"]}},"/inventory":{"post":{"description":"Returns a paginated list of inventory records.\n\n🔒 Requires: `inventory:read` scope","operationId":"ListInventoryRecords_v2026-04","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryRequest"}}}},"responses":{"200":{"content":{"application/json":{"example":[{"current_inventory_level":10,"id":"7896f269-2b20-ff38-602a-ace60b172b12","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","product_id":"a0369f1f-9083-11e4-f68e-d26298afef03","quantity_to_procure":0,"version":1639940},{"current_inventory_level":6,"id":"c15190b9-0c37-6b52-54e2-f804b00fa8c5","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"a0369f1f-9083-11e4-f68e-d26298afef03","quantity_to_procure":2,"version":1639941},{"current_inventory_level":0,"id":"0b32fb5c-9cff-5d26-2b64-1593ed2a463b","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"a0369f1f-9083-11e4-f68e-cc284567c50d","quantity_to_procure":12,"version":3426971}],"schema":{"items":{"$ref":"#/components/schemas/Inventory"},"type":"array"}}},"description":""}},"summary":"List inventory records","tags":["Inventory"]}},"/inventory/{product_id}":{"get":{"description":"Returns inventory records for a single product at all outlets.\n\n🔒 Requires: `inventory:read` scope","operationId":"ListProductInventoryRecords_v2026-04","parameters":[{"description":"The product to fetch inventory levels for. When combined with variants: true, it's treated as a root product\nID and matches all variants of that product; otherwise it matches the exact product.","in":"path","name":"product_id","required":true,"schema":{"type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"default":1000,"maximum":5000,"type":"integer"}},{"description":"When true (and product_id is set), matches all variant products sharing the same root_product_id, rather\nthan just the exact product.","in":"query","name":"variants","schema":{"default":false,"type":"boolean"}},{"description":"Whether to include inventory records for deleted products.","in":"query","name":"include_deleted","schema":{"default":false,"type":"boolean"}},{"description":"Whether to order the results ascending or descending by version.","in":"query","name":"order_direction","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":[{"average_cost":100,"current_inventory_level":21,"id":"18e86393-ebdf-fbba-5455-4120bc6773fd","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","product_id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","quantity_to_procure":0,"reorder_amount":20,"reorder_point":5,"version":2398817047},{"average_cost":100,"current_inventory_level":42,"id":"eb650394-9d49-8985-41f5-51507838d3b7","outlet_id":"06bf537b-c783-11e6-f6b9-53a81bd6b215","product_id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","quantity_to_procure":3,"reorder_amount":20,"reorder_point":5,"version":2398817048},{"average_cost":0,"current_inventory_level":19,"id":"a020eed7-7f96-3b50-e133-a435dfbc242b","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","quantity_to_procure":0,"reorder_amount":20,"reorder_point":5,"version":3630064802}],"schema":{"items":{"$ref":"#/components/schemas/Inventory"},"type":"array"}}},"description":""}},"summary":"List inventory records for a single product","tags":["Inventory"]}},"/inventory_levels":{"post":{"description":"Returns a paginated list of inventory levels.\n\n🔒 Requires: `inventory:read` scope","operationId":"ListInventoryLevels_v2026-04","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InventoryLevelsRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/InventoryLevel"},"type":"array"}}},"description":""}},"summary":"List inventory levels","tags":["Inventory"]}},"/inventory_levels/{product_id}":{"get":{"description":"Returns a paginated list of inventory levels for a single product.\n\n🔒 Requires: `inventory:read` scope","operationId":"ListProductInventoryLevels_v2026-04","parameters":[{"description":"The product to fetch inventory levels for.","in":"path","name":"product_id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Whether to include inactive products in the response.","in":"query","name":"include_inactive","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/InventoryLevel"},"type":"array"}}},"description":""}},"summary":"List inventory levels for a single product.","tags":["Inventory"]}},"/outlet_taxes":{"get":{"description":"Returns a paginated list of outlet-product-tax records.\n\n🔒 Requires: `outlets:read` scope","operationId":"listOutletProductTaxes","parameters":[{"description":"The ID of the outlet for which the results should be returned.","in":"query","name":"outlet_id","schema":{"type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"b8ca3a65-0183-11e4-fbb5-281af7f3d091","tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","version":2162167},{"outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"b8ca3a65-0183-11e4-fbb5-281b151ee9a6","tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","version":2162183},{"outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"b8ca3a64-f883-11e4-e0f5-15e94b089bc5","tax_id":"b1cecdf6-f019-11e3-a0f5-b8ca3a64f8f4","version":10734484}],"version":{"max":10734484,"min":2162167}},"schema":{"$ref":"#/components/schemas/OutletTaxCollection"}}},"description":""}},"summary":"List outlet product taxes","tags":["Outlet Product Taxes"]}},"/outlets":{"get":{"description":"Returns a collection of outlets.\n\n🔒 Requires: `outlets:read` scope","operationId":"ListOutlets","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"attributes":[],"currency":"NZD","currency_symbol":"$","default_tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","display_prices":"inclusive","id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","name":"Second Outlet","physical_address_1":"Nuffield Street","physical_address_2":"","physical_city":"Auckland","physical_country_id":"NZ","physical_postcode":"1023","physical_state":"Auckland","physical_suburb":"Newmarket","time_zone":"Pacific/Auckland","version":816974914},{"attributes":[],"currency":"NZD","currency_symbol":"$","default_tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","display_prices":"inclusive","id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","name":"Main Outlet","physical_address_1":"Baker Street","physical_address_2":"","physical_city":"London","physical_country_id":"GB","physical_postcode":"","physical_state":"","physical_suburb":"","time_zone":"Pacific/Auckland","version":909257071},{"attributes":[{"key":"order_reference","value":"1"},{"key":"order_reference_prefix","value":"SYD"},{"key":"return_reference","value":"1"},{"key":"return_reference_prefix","value":"SYD"}],"currency":"NZD","currency_symbol":"$","default_tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","display_prices":"inclusive","id":"06bf537b-c783-11e6-f6b9-53a81bd6b215","name":"Sydney","physical_address_1":"","physical_address_2":"","physical_city":"Sydney","physical_country_id":"AU","physical_postcode":"","physical_state":"NSW","physical_suburb":"","time_zone":"Australia/Sydney","version":1690497245}],"version":{"max":1690497245,"min":816974914}},"schema":{"$ref":"#/components/schemas/OutletCollection"}}},"description":""}},"summary":"List outlets","tags":["Outlets"]}},"/outlets/{outlet_id}":{"get":{"description":"Returns a single outlet with the requested ID.\n\n🔒 Requires: `outlets:read` scope","operationId":"GetOutletByID","parameters":[{"description":"The outlet id","in":"path","name":"outlet_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"attributes":[],"currency":"NZD","currency_symbol":"$","default_tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","display_prices":"inclusive","id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","name":"Second Outlet","physical_address_1":"Nuffield Street","physical_address_2":"","physical_city":"Auckland","physical_country_id":"NZ","physical_postcode":"1023","physical_state":"Auckland","physical_suburb":"Newmarket","time_zone":"Pacific/Auckland","version":816974914}},"schema":{"$ref":"#/components/schemas/OutletResponse"}}},"description":""}},"summary":"Get a single outlet","tags":["Outlets"]}},"/partner/billing/subscriptions":{"get":{"description":"Returns list of partner's subscriptions of the retailer\n\n🔒 Requires: `billing:partner_subscription:read` scope","operationId":"PartnerSubscriptions","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PartnerSubscriptions"}},"required":["data"],"type":"object"}}},"description":""}},"summary":"List partner subscriptions","tags":["Partner Billing"]}},"/partner/billing/subscriptions/{subscription_id}":{"get":{"description":"Returns a specific partner subscription of the retailer\n\n🔒 Requires: `billing:partner_subscription:read` scope","operationId":"PartnerSubscription","parameters":[{"in":"path","name":"subscription_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PartnerSubscription"}},"type":"object"}}},"description":""}},"summary":"Get a partner subscription","tags":["Partner Billing"]}},"/partner/billing/token":{"post":{"description":"Creates a partner subscription token (called by partner using retailer's access token)\n\n🔒 Requires: `billing:partner_subscription:write` scope","operationId":"PartnerToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerSubscriptionTokenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PartnerSubscriptionTokenResponse"}},"type":"object"}}},"description":""}},"summary":"Create a partner subscription token","tags":["Partner Billing"]}},"/partner/billing/token/{partner_subscription_token}":{"get":{"description":"Returns a subscription token data\n\n🔒 Requires: `billing:partner_subscription:read` scope","operationId":"PartnerTokenGet","parameters":[{"description":"The partner subscription token","in":"path","name":"partner_subscription_token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PartnerSubscriptionToken"}},"type":"object"}}},"description":""}},"summary":"Get subscription by token","tags":["Partner Billing"]}},"/partner/billing/update-subscription/token":{"post":{"description":"Creates a partner subscription token with the intention of updating a subscription (called by partner using retailer's access token)\n\n🔒 Requires: `billing:partner_subscription:write` scope","operationId":"PartnerUpdateSubscriptionToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PartnerUpdateSubscriptionTokenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/PartnerSubscriptionTokenResponse"}},"type":"object"}}},"description":""}},"summary":"Create a partner update subscription token","tags":["Partner Billing"]}},"/payment_types":{"get":{"description":"Returns a paginated collection of payment types.\n\n🔒 Requires: `payment_types:read` scope","operationId":"ListPaymentTypes","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"If true, includes deleted payment types in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}},{"description":"Filters payment types by outlet. Only effective when the payment_type_controls feature is enabled.","in":"query","name":"outlet_id","schema":{"type":"string"}},{"description":"Filters payment types by currency code (ISO 4217, e.g. \"AUD\", \"USD\").","in":"query","name":"currency","schema":{"type":"string"}},{"description":"If true, returns only LSPay payment types.","in":"query","name":"only_lspay","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"id":"0adaafb3-6583-11e5-fb60-fd093076e9d3","name":"Gift Card","type_id":118,"version":1120194938},{"config":{"url":"/pay/dc85058a-a683-11e5-e112-51cc5a8ffc96"},"id":"dc85058a-a683-11e5-e112-51cc5a8ffc96","name":"Loyalty","type_id":106,"version":342955},{"config":{"print":true,"url":"https://sec.paymentexpress.com/pxmi/logon"},"id":"dc85058a-a683-11e5-ef46-0b1f0d167dea","name":"DPS","type_id":3,"version":297938}],"version":{"max":1120194938,"min":297938}},"schema":{"$ref":"#/components/schemas/PaymentTypeCollection"}}},"description":""}},"summary":"List payment types","tags":["Payment Types"]}},"/price_book_products":{"get":{"description":"Returns a paginated list of price book products.\n\n🔒 Requires: `products:read:price_books` scope","operationId":"ListPriceBookProducts","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"created_at":"2014-06-10T00:46:05+00:00","id":"327a1b25-4a47-9ba7-15cd-f65dfb3f06e2","price":0,"price_book_id":"b1cc4593-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"9a84e9e1-f038-11e3-a0f5-b8ca3a64f8f4","tax_id":"0242ac12-0002-11e9-e8c4-6594948eac5c","updated_at":"2014-06-10T00:46:05+00:00","version":74322454},{"created_at":"2014-07-09T00:15:13+00:00","id":"dc85058a-a683-11e4-ef46-e15361f7916a","loyalty_value":22,"max_units":43.2,"min_units":12.5,"price":246.92,"price_book_id":"dc85058a-a683-11e4-ef46-e1535cf1ebe5","product_id":"188a87aa-06fe-11e4-a0f5-b8ca3a64f8f4","tax_id":"0242ac12-0002-11e9-e8c4-6594948eac5c","updated_at":"2016-04-13T22:27:29+00:00","version":94533112},{"created_at":"2014-11-14T02:11:38+00:00","id":"dc85058a-a683-11e5-ef46-0fe437d43747","price":1200,"price_book_id":"dc85058a-a683-11e4-ef46-e1535cf1ebe5","product_id":"b8ca3a65-0183-11e4-fbb5-6ba391393b6e","tax_id":"0242ac12-0002-11e9-e8c4-6594948eac5c","updated_at":"2015-06-11T02:47:49+00:00","version":107001929}]},"schema":{"$ref":"#/components/schemas/PriceBookProductCollection"}}},"description":""}},"summary":"List price book products","tags":["Price Books"]}},"/price_books":{"get":{"description":"Returns a paginated list of price books.\n\n🔒 Requires: `products:read:price_books` `customers:read` `outlets:read` scopes","operationId":"ListPriceBooksV3","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Field used to sort the results.","in":"query","name":"order","schema":{"type":"string"}},{"description":"Sort results direction. ASC or DESC.","in":"query","name":"direction","schema":{"type":"string"}},{"description":"Include (true) or exclude (false) deleted price books. Default value is false.","in":"query","name":"deleted","schema":{"type":"boolean"}},{"description":"Filter the list and show only price books linked to the specified Customer Group.","in":"query","name":"customer_group_id","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"customer_groups":[{"created_at":"2014-06-09T21:04:49+00:00","group_id":"1111111111","id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","name":"All Customers","updated_at":"2014-06-09T21:04:49+00:00","version":29483}],"id":"b1cc4593-f019-11e3-a0f5-b8ca3a64f8f4","name":"General Price Book (All Products)","outlets":[{"attributes":[],"currency":"NZD","currency_symbol":"$","default_tax_id":"00000000-0002-0002-0002-000000000003","deleted_at":null,"display_prices":"inclusive","email":"no-reply+fixture@vendhq.com","id":"0242ac12-0002-11e9-e8c4-6594953122f6","latitude":null,"longitude":null,"name":"Selenium (Mixed)","physical_address_1":"33 retailer st","physical_address_2":"","physical_city":"Auckland","physical_country_id":"NZ","physical_postcode":"0100","physical_state":"Auckland","physical_suburb":"City","time_zone":"Pacific/Auckland","version":150711}],"restrict_to_platform_key":"1","restrict_to_platform_label":"In Store","type":"BASE","version":368354},{"customer_groups":[{"created_at":"2014-06-09T21:04:49+00:00","group_id":"1111111111","id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","name":"All Customers","updated_at":"2014-06-09T21:04:49+00:00","version":29483}],"id":"dc85058a-a683-11e4-ef46-e2ecc5bda31a","name":"API test","outlets":[{"attributes":[],"currency":"NZD","currency_symbol":"$","default_tax_id":"00000000-0002-0002-0002-000000000003","deleted_at":null,"display_prices":"inclusive","email":"no-reply+fixture@vendhq.com","id":"0242ac12-0002-11e9-e8c4-6594953122f6","latitude":null,"longitude":null,"name":"Selenium (Mixed)","physical_address_1":"33 retailer st","physical_address_2":"","physical_city":"Auckland","physical_country_id":"NZ","physical_postcode":"0100","physical_state":"Auckland","physical_suburb":"City","time_zone":"Pacific/Auckland","version":150711}],"restrict_to_platform_key":"1","restrict_to_platform_label":"In Store","type":"GENERAL","version":398146}]},"schema":{"$ref":"#/components/schemas/PriceBookCollection"}}},"description":""}},"summary":"List price books","tags":["Price Books"]},"post":{"description":"Create a price book\n\n🔒 Requires: `products:write:price_books` `customers:read` scopes","operationId":"CreatePriceBookV3","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookCreateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookCreateResponse"}}},"description":""}},"summary":"Create a single price book","tags":["Price Books"]}},"/price_books/{id}":{"get":{"description":"Returns a single price book with a requested ID\n\n🔒 Requires: `products:read:price_books` `customers:read` `outlets:read` scopes","operationId":"GetPriceBookByIDV3","parameters":[{"description":"The price book id","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"customer_groups":[{"created_at":"2014-06-09T21:04:49+00:00","group_id":"1111111111","id":"b1ca8902-f019-11e3-a0f5-b8ca3a64f8f4","name":"All Customers","updated_at":"2014-06-09T21:04:49+00:00","version":29483}],"id":"b1cc4593-f019-11e3-a0f5-b8ca3a64f8f4","name":"General Price Book (All Products)","outlets":[{"attributes":[],"currency":"NZD","currency_symbol":"$","default_tax_id":"00000000-0002-0002-0002-000000000003","deleted_at":null,"display_prices":"inclusive","email":"no-reply+fixture@vendhq.com","id":"0242ac12-0002-11e9-e8c4-6594953122f6","latitude":null,"longitude":null,"name":"Selenium (Mixed)","physical_address_1":"33 retailer st","physical_address_2":"","physical_city":"Auckland","physical_country_id":"NZ","physical_postcode":"0100","physical_state":"Auckland","physical_suburb":"City","time_zone":"Pacific/Auckland","version":150711}],"restrict_to_platform_key":"1","restrict_to_platform_label":"In Store","type":"BASE","version":368354}},"schema":{"$ref":"#/components/schemas/PriceBookResponse"}}},"description":""}},"summary":"Get a single price book","tags":["Price Books"]},"put":{"description":"Update a price book by ID\n\n🔒 Requires: `products:write:price_books` `customers:read` scopes","operationId":"UpdatePriceBookV3","parameters":[{"description":"The price book id","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookUpdateRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookCreateResponse"}}},"description":""}},"summary":"Update a single price book","tags":["Price Books"]}},"/price_books/{price_book_id}/products":{"delete":{"description":"Delete price book product entries.\n\n> **Note**: You may not delete more than 100 price book products at a time.\n\n> **Note**: The request body params can be used within request headers. Header key name is `data`\n\n🔒 Requires: `products:write:price_books` scope","operationId":"DeletePriceBookProducts","parameters":[{"description":"The price book id","in":"path","name":"price_book_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductIdCollection"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductsUpdateResponse"}}},"description":""}},"summary":"Delete some entries for a price book","tags":["Price Books"]},"get":{"description":"Returns a list of price book products for a given price book.\n\n> **Note**: The returned retail price is the tax exclusive price of the product.\n\n🔒 Requires: `products:read:price_books` scope","operationId":"GetPriceBookProductsForPriceBook","parameters":[{"description":"The price book id","in":"path","name":"price_book_id","required":true,"schema":{"type":"string"}},{"description":"The product ids","in":"query","name":"product_ids","schema":{"example":"06326976-9d65-11ed-fa40-1347e4b4ae6d,16326976-9d65-11ed-fa40-1347e4b4ae6d","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductCollection"}}},"description":""}},"summary":"List price book products per price book","tags":["Price Books"]},"patch":{"description":"Update price book products.\n\n> **Note**: When adding a product the retail price is the tax exclusive price of the product if your store is tax exclusive, and tax inclusive if your store is tax inclusive. The returned value is always tax exclusive.\n\n> **Note**: The request body may not contain more than 100 price book products.\n\n🔒 Requires: `products:write:price_books` `products:read` scopes","operationId":"UpdatePriceBookProducts","parameters":[{"description":"The price book id","in":"path","name":"price_book_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductCollection"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductsUpdateResponse"}}},"description":""}},"summary":"Update the products in a price book","tags":["Price Books"]},"post":{"description":"Create price book products.\n\n> **Note**: When adding a product the retail price is the tax exclusive price of the product if your store is tax exclusive, and tax inclusive if your store is tax inclusive.  The returned value is always tax exclusive.\n\n> **Note**: The request body may not contain more than 100 price book products.\n\n🔒 Requires: `products:write:price_books` `products:read` scopes","operationId":"AddPriceBookProducts","parameters":[{"description":"The price book id","in":"path","name":"price_book_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductCollection"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductsUpdateResponse"}}},"description":""}},"summary":"Add the products to a price book","tags":["Price Books"]},"put":{"description":"Update price book products.\n\n> **Note**: When adding a product the retail price is the tax exclusive price of the product if your store is tax exclusive, and tax inclusive if your store is tax inclusive. The returned value is always tax exclusive.\n\n> **Note**: The request body may not contain more than 100 price book products.\n\n🔒 Requires: `products:write:price_books` `products:read` scopes","operationId":"UpdatePriceBookProductsWithPutOp","parameters":[{"description":"The price book id","in":"path","name":"price_book_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductCollection"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductsUpdateResponse"}}},"description":""}},"summary":"Update the products in a price book","tags":["Price Books"]}},"/product_categories":{"get":{"description":"🔒 Requires: `products:read` scope","operationId":"ListProductCategories","parameters":[{"description":"If parent is an id, it filters the list of categories that belongs to the given category. If parent is \"none\", it filters  categories for root categories only.","in":"query","name":"parent","schema":{"type":"string"}},{"description":"Defaults to \"family\" * `family` - Include all categories in the hierarchy. * `children` - Include only direct children.\n","in":"query","name":"include","schema":{"enum":["family","children"],"type":"string"}},{"description":"The total number of categories to return. Default is 1000.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"The category id to get the next set of paginated results.","in":"query","name":"after","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"categories":{"description":"The list of product categories, sorted by the full category path alphabetically ascending. In other words, by sorting category path, it will be sorted per category level in alphabetical order.","items":{"$ref":"#/components/schemas/ProductCategory"},"type":"array"}},"type":"object"},"page_info":{"properties":{"has_next":{"description":"True if there are more pages available in the next page.","type":"boolean"},"last_seen":{"description":"If there are more results, this is the value to use as \"after\" to retrieve the next set of results.","type":"string"}},"type":"object"}},"type":"object"}}},"description":""}},"summary":"List product categories","tags":["Product Categories"]}},"/product_categories/bulk":{"delete":{"description":"Delete a list of categories.\nIf the category is a parent or root, the descendent categories also get deleted.\nProducts associated to the deleted category are assigned to the parent, or if the deleted category is a root, the products are unassigned.\n\n🔒 Requires: `products:write` scope\n","operationId":"DeleteProductCategories","requestBody":{"content":{"application/json":{"schema":{"properties":{"category_ids":{"items":{"type":"string"},"type":"array"}},"type":"object"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"categories":{"description":"The list of categories deleted.","items":{"properties":{"ids":{"description":"The id of the category deleted, and the subsequent descendent categories deleted.","items":{"format":"uuid","type":"string"},"type":"array"},"job_id":{"description":"The id of the asynchronous job to move products to an either the parent category or unassign the product from the category.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"}},"type":"object"}}},"description":""}},"summary":"Delete a list of product categories","tags":["Product Categories"]},"post":{"description":"🔒 Requires: `products:write` scope","operationId":"CreateUpdateProductCategories","requestBody":{"content":{"application/json":{"examples":{"Add new category under existing category":{"value":{"categories":[{"name":"Dog Food","parent_category_id":"2cd5ff83-8a76-498a-9fe9-f28c9e24bcff"}]}},"Adding a new category hierarchy":{"value":{"categories":[{"name":"Pet","payload_id":"arbitrary_root_id"},{"name":"Dog","payload_parent_category_id":"arbitrary_root_id"},{"name":"Cat","payload_id":"arbitrary_cat_id","payload_parent_category_id":"arbitrary_root_id"},{"name":"Cat Food","payload_parent_category_id":"arbitrary_cat_id"}]}},"Update category":{"value":{"categories":[{"id":"2cd5ff83-8a76-498a-9fe9-f28c9e24bcff","name":"Animal / Pet"}]}}},"schema":{"properties":{"categories":{"items":{"properties":{"id":{"description":"The category id to be updated.","format":"uuid","type":"string"},"name":{"description":"The category name to be updated, or added for new category.","type":"string"},"parent_category_id":{"description":"Existing category that the new category will be a child of.","format":"uuid","type":"string"},"payload_id":{"description":"A temporary id to identify the category that don't exist yet. This can be used by other categories within this payload to refer to this category.","type":"string"},"payload_parent_category_id":{"description":"The temporary id referring to the parent category which is also to be created in the same payload.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"description":"The categories created or updated","properties":{"id":{"description":"The category id. If updated, its existing, if created, it is the issued id.","format":"uuid","type":"string"},"name":{"description":"The saved category name.","type":"string"},"parent_category_id":{"description":"The parent category id, if the category is not a root. If the new category in the request was referencing pseudo parent, this refers to the created parent's real id.","format":"uuid","type":"string"},"payload_id":{"description":"A reference back to the pseudo id given for this category in the request.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"}}},"description":""}},"summary":"Create and update a product category hierarchy","tags":["Product Categories"]}},"/product_images/{product_image_id}":{"delete":{"description":"Deletes the product image with the requested ID.\n\n🔒 Requires: `products:write` scope","operationId":"DeleteProductImageByID","parameters":[{"description":"The product image id","in":"path","name":"product_image_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete a product image","tags":["Product Images"]},"get":{"description":"Returns the metadata for a single product image with a given ID.\nThis method is useful for checking the status of an image after it was uploaded.\n\n🔒 Requires: `products:read` scope","operationId":"GetProductImageDataByID","parameters":[{"description":"The product image id","in":"path","name":"product_image_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageResponse"}}},"description":""}},"summary":"Get a single product image data","tags":["Product Images"]},"put":{"description":"Allows for changing the image position in the list\n\n🔒 Requires: `products:write` scope","operationId":"SetImagePosition","parameters":[{"description":"The product image id","in":"path","name":"product_image_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagePosition"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageResponse"}}},"description":""}},"summary":"Set image position","tags":["Product Images"]}},"/product_types":{"get":{"deprecated":true,"description":"**DEPRECATED**  We recommend using the product_categories endpoint instead.\n\nReturns a paginated list of product types.\n\n🔒 Requires: `products:read` scope","operationId":"ListProductTypes","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"id":"b1e2babe-f019-11e3-a0f5-b8ca3a64f8f4","name":"General"},{"category_path":[{"id":"b1e2babe-f019-11e3-a0f5-b8ca3a64f8f4","name":"General"},{"id":"b8ca3a65-0183-11e4-fbb5-3a61730ca2ef","name":"Test type"}],"id":"b8ca3a65-0183-11e4-fbb5-3a61730ca2ef","leaf_category":true,"name":"Test type"},{"id":"bc305bf6-6183-11e4-f15a-162d346b231e","name":"Enrollment Packages"}]},"schema":{"$ref":"#/components/schemas/ProductTypeCollection"}}},"description":""}},"summary":"List product types","tags":["Product Types"]}},"/product_types/{product_type_id}":{"get":{"description":"Returns a single product type with a given ID.\n\n🔒 Requires: `products:read` scope","operationId":"GetProductTypeByID","parameters":[{"description":"The product type id","in":"path","name":"product_type_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"category_path":[{"id":"b1e2babe-f019-11e3-a0f5-b8ca3a64f8f4","name":"General"},{"id":"b8ca3a65-0183-11e4-fbb5-3a61730ca2ef","name":"Test type"}],"id":"b1e2babe-f019-11e3-a0f5-b8ca3a64f8f4","leaf_category":true,"name":"General","version":449902}},"schema":{"$ref":"#/components/schemas/ProductTypeResponse"}}},"description":""}},"summary":"Get a single product type","tags":["Product Types"]}},"/products":{"get":{"description":"Returns a paginated list of products.\n\nTo search for products, please have a look at our [Search endpoint](/reference/search-1) on what is supported.\n\n🔒 Requires: `products:read` scope","operationId":"ListProducts","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Allows loading a product by one of its SKUs. Note that all other query params are ignored if this is provided.","in":"query","name":"sku","schema":{"type":"string"}},{"description":"Allows loading products with the name provided in this parameter. This query typically retrieves all products from the product family with the provided name. Note that all other query parameters are ignored if this is provided.","in":"query","name":"name","schema":{"type":"string"}},{"description":"Alias for 'name'. Allows loading products that belong to the family with the name provided in this parameter. Note that all other query parameters are ignored if this is provided.","in":"query","name":"family_name","schema":{"type":"string"}},{"description":"Side-load related entities. Supported value 'composite_products'.","explode":true,"in":"query","name":"includes[]","schema":{"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Whether to include product image fields in the response. Defaults to true.","in":"query","name":"include_images","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"active":true,"attributes":[],"brand":{},"button_order":0,"categories":[],"created_at":"2015-01-08T20:41:50+00:00","handle":"0003","has_inventory":true,"has_variants":false,"id":"b8ca3a65-0183-11e4-fbb5-9776c5cd0240","image_thumbnail_url":"https://secure.retail.lightspeed.app/images/placeholder/product/no-image-white-thumb.png","image_url":"https://secure.retail.lightspeed.app/images/placeholder/product/no-image-white-standard.png","images":[],"is_active":true,"is_composite":false,"name":"Product 0003","price_excluding_tax":2.63158,"price_including_tax":3.02632,"sku":"0003","source":"USER","supplier":{},"supply_price":0,"tag_ids":[],"type":{},"updated_at":"2015-08-18T23:28:00+00:00","variant_name":"Product 0003","variant_options":[],"version":59780745},{"active":true,"attributes":[],"brand":{},"button_order":0,"categories":[],"created_at":"2015-01-08T20:41:51+00:00","handle":"0005","has_inventory":true,"has_variants":false,"id":"b8ca3a65-0183-11e4-fbb5-9776c5faaed2","image_thumbnail_url":"https://secure.retail.lightspeed.app/images/placeholder/product/no-image-white-thumb.png","image_url":"https://secure.retail.lightspeed.app/images/placeholder/product/no-image-white-standard.png","images":[],"is_active":true,"is_composite":false,"name":"Product 0005","price_excluding_tax":4.38596,"price_including_tax":5.04385,"sku":"0005","source":"USER","supplier":{},"supply_price":0,"tag_ids":[],"type":{},"updated_at":"2015-08-18T23:28:00+00:00","variant_name":"Product 0005","variant_options":[],"version":59780753},{"active":true,"attributes":[],"brand":{},"button_order":0,"categories":[],"composite_bom":{"b8ca3a65-0183-11e4-fbb5-9776c611d865":2,"d796d8b2-ff79-48fa-8e6e-a15e2e0bd429":3},"created_at":"2015-01-08T20:41:51+00:00","handle":"0006","has_inventory":true,"has_variants":false,"id":"b8ca3a65-0183-11e4-fbb5-9776c611d865","image_thumbnail_url":"https://secure.retail.lightspeed.app/images/placeholder/product/no-image-white-thumb.png","image_url":"https://secure.retail.lightspeed.app/images/placeholder/product/no-image-white-standard.png","images":[],"is_active":true,"is_composite":false,"name":"Product 0006","price_excluding_tax":5.26316,"price_including_tax":6.05263,"product_codes":[{"code":"123456","type":"custom"}],"product_suppliers":[{"code":"code","id":"cfbf30bd-4b6a-47df-931c-1a326acc1769","price":19,"product_id":"d796d8b2-ff79-48fa-8e6e-a15e2e0bd429","supplier_id":"63c4c033-3019-4582-99e7-446baacca1b0","supplier_name":"supplier_1"}],"sku":"0006","source":"USER","supplier":{},"supply_price":0,"tag_ids":[],"type":{},"updated_at":"2015-08-18T23:28:00+00:00","variant_name":"Product 0006","variant_options":[],"version":59780757}],"version":{"max":59780757,"min":59780745}},"schema":{"$ref":"#/components/schemas/ProductCollection"}}},"description":""}},"summary":"List products","tags":["Products"]},"post":{"description":"Creates a new product.\n\n🔒 Requires: `products:write` scope","operationId":"CreateProduct","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreateBody"}}},"description":"**Note**: You cannot include both `price_including_tax` and `price_excluding_tax`.","required":true},"responses":{"200":{"content":{"Example":{"example":{"data":["0717b8d6-a4eb-858b-351d-16274fdf186c"]}},"application/json":{"schema":{"properties":{"data":{"description":"An array containing the ID or IDs of the new products.","items":{"type":"string"},"type":"array"}},"type":"object"}}},"description":"OK"}},"summary":"Create product","tags":["Products"]}},"/products/{product_id}":{"delete":{"description":"Deletes a single product. If a variant ID is provided, that single variant is removed.\n\n🔒 Requires: `products:write` scope","operationId":"DeleteProduct","parameters":[{"description":"The product id","in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"summary":"Delete a single product","tags":["Products"]},"get":{"description":"Returns a single product object with a given ID.\n\n🔒 Requires: `products:read` scope","operationId":"GetProductByID","parameters":[{"description":"The product id","in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"active":true,"attributes":[],"brand":{"id":"0adaafb3-6583-11e5-fb60-d5b67a17df2f","name":"Peak Performance","version":882391722},"brand_id":"0adaafb3-6583-11e5-fb60-d5b67a17df2f","button_order":2,"categories":[{"id":"b8ca3a65-0183-11e4-fbb5-a7e973b74d92","name":"tag_test","version":1446856},{"id":"bc305bf6-6183-11e4-f15a-16ced23b8465","name":"variant","version":961180}],"created_at":"2014-12-01T18:34:15+00:00","description":"<p>The best product ever, except for the next one.</p>","handle":"bravo","has_inventory":true,"has_variants":true,"id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","image_thumbnail_url":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","image_url":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","images":[{"id":"06bf537b-c783-11e6-f6b9-b73917d393b6","sizes":{"original":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","sl":"https://vendimageuploadcdn.global.ssl.fastly.net/150x150,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","sm":"https://vendimageuploadcdn.global.ssl.fastly.net/100x100,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","ss":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","st":"https://vendimageuploadcdn.global.ssl.fastly.net/40x40,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","standard":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","thumb":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg"},"url":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/product/original/f/0/f0ebadbc30947444d438678a4a7bd6d996f392fc.jpg","version":2398861114}],"is_active":true,"is_composite":false,"name":"Bravo","price_excluding_tax":110,"price_including_tax":126.5,"product_codes":[{"code":"123456","type":"custom"}],"product_suppliers":[{"code":"code","id":"cfbf30bd-4b6a-47df-931c-1a326acc1769","price":19,"product_id":"d796d8b2-ff79-48fa-8e6e-a15e2e0bd429","supplier_id":"63c4c033-3019-4582-99e7-446baacca1b0","supplier_name":"supplier_1"}],"product_type_id":"b1e2babe-f019-11e3-a0f5-b8ca3a64f8f4","sku":"787878","source":"USER","supplier":{"description":"","id":"dc85058a-a683-11e5-ef46-08f9a926615e","name":"Peak","source":"","version":2089502},"supplier_code":"123456","supplier_id":"dc85058a-a683-11e5-ef46-08f9a926615e","supply_price":100,"tag_ids":["b8ca3a65-0183-11e4-fbb5-a7e973b74d92","bc305bf6-6183-11e4-f15a-16ced23b8465"],"type":{"id":"b1e2babe-f019-11e3-a0f5-b8ca3a64f8f4","name":"General","version":449902},"updated_at":"2017-08-21T23:50:39+00:00","variant_name":"Bravo / Black / Cotton / Cotton","variant_options":[{"id":"9a972fbe-3b53-102e-b60f-4abbcbc88955","name":"Color","value":"Black"},{"id":"6b8f11e2-5188-11e0-9d7a-4040f540b50a","name":"Fabric","value":"Cotton"},{"id":"6b8f11e2-5188-11e0-9d7a-4040f540b50a","name":"Fabric","value":"Cotton"}],"version":4284638488}},"schema":{"$ref":"#/components/schemas/ProductResponse"}}},"description":""}},"summary":"Get a single product","tags":["Products"]},"put":{"description":"Update an existing product.\n\n🔒 Requires: `products:write` scope","operationId":"UpdateProduct","parameters":[{"description":"The object identifier of the Product to update.","in":"path","name":"product_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdate21Request"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The response if the API call is successful."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The response if the product you are attempting to update doesn't exist."},"422":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The response if the update can't be processed."}},"summary":"Update a product","tags":["Products"]}},"/products/{product_id}/actions/image_upload":{"post":{"description":"Upload a binary file with an image to be used for a product. This request should be encoded as `multipart/form-data`.\n\n> **Please Note** If you are reading this on https://x-series-api.lightspeedhq.com then the `Try It!` generated code will not work as the underlying code generator assumes the image will be base64 encoded, which the API does not support. Please have a look at https://x-series-api.lightspeedhq.com/docs/products_image_upload_basics instead.\n\n🔒 Requires: `products:write` scope","operationId":"UploadImage","parameters":[{"description":"The product id","in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{"description":"File to upload. Can be in `jpg` or `png` format.","format":"binary","properties":{"image":{"format":"binary","type":"string"}},"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageResponse"}}},"description":""}},"summary":"Upload an image","tags":["Products"]}},"/products/{product_id}/all":{"delete":{"description":"Deletes a product family. The /all suffix is provided to delete an entire variant family.\n\n🔒 Requires: `products:write` scope","operationId":"DeleteProductFamily","parameters":[{"description":"The product id of a family member","in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"summary":"Delete a product family","tags":["Products"]}},"/products/{product_id}/inventory":{"get":{"deprecated":true,"description":"** DEPRECATED ** Please use /api/{version}/inventory/{product_id} instead. The request and response format are identical.\n\nReturns inventory data for a single product in all the outlets.\n\n🔒 Requires: `inventory:read` scope","operationId":"GetInventoryByProductID","parameters":[{"description":"The product id","in":"path","name":"product_id","required":true,"schema":{"type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"average_cost":100,"current_amount":21,"id":"18e86393-ebdf-fbba-5455-4120bc6773fd","inventory_level":21,"outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","product_id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","reorder_amount":20,"reorder_point":5,"version":2398817047},{"average_cost":100,"current_amount":42,"id":"eb650394-9d49-8985-41f5-51507838d3b7","inventory_level":42,"outlet_id":"06bf537b-c783-11e6-f6b9-53a81bd6b215","product_id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","reorder_amount":20,"reorder_point":5,"version":2398817048},{"average_cost":0,"current_amount":19,"id":"a020eed7-7f96-3b50-e133-a435dfbc242b","inventory_level":19,"outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","product_id":"b8ca3a65-0183-11e4-fbb5-7988a6ed80f8","reorder_amount":20,"reorder_point":5,"version":3630064802}]},"schema":{"$ref":"#/components/schemas/InventoryCollection"}}},"description":""}},"summary":"Get inventory data for a single product","tags":["Products"]}},"/products/{product_id}/price_book_products":{"get":{"description":"This endpoint returns the list of price books the given product is in.\n\n🔒 Requires: `products:read:price_books` scope","operationId":"GetPriceBooksForProduct","parameters":[{"description":"The product id to find in the Price Books","in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceBookProductCollection"}}},"description":"OK"}},"summary":"Get a list of price books the given product is in","tags":["Products"]}},"/promocode/bulk":{"delete":{"description":"Delete promo codes, by promocode IDs\n\n🔒 Requires: `promotions:write` scope","operationId":"DeletePromoCodesBulk","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionDeletePromoCodesResponse"}}},"description":"Remaining promo codes"}},"summary":"Delete promo codes","tags":["Promo Code"]}},"/promocode/bulk/active":{"post":{"description":"Get promo codes, with their associated promotions.\n\n🔒 Requires: `promotions:read` scope","operationId":"GetActivePromoCodesBulk","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromoCodesMap"}}},"description":""}},"summary":"Get the active status of promo codes","tags":["Promo Code"]}},"/promotions":{"get":{"description":"This endpoint lists all promotions for a retailer.\n\nThere are optional query parameters that allow filtering promotions. They can't be combined:\n\n - `end_time_from` - only show promotions that have end\\_time after or equal to this time\n - `end_time_to` - only show promotions that have end\\_time before this time\n\nFor example. the time format for end\\_time\\_from and end\\_time\\_to are: `2047-06-21T13:00:00`\n\n🔒 Requires: `promotions:read` scope\n","operationId":"ListPromotions","parameters":[{"description":"Upper limit for the promotion end date as UTC timestamp. Format: `2020-08-08T12:00:00Z`.","in":"query","name":"end_time_to","schema":{"type":"string"}},{"description":"Lower limit for the promotion end date as UTC timestamp. Format: `2020-08-08T12:00:00Z`.","in":"query","name":"end_time_from","schema":{"type":"string"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionCollection"}}},"description":""}},"summary":"List promotions","tags":["Promotions"]},"post":{"description":"This endpoint creates a new promotion.\n\nIt responds with the newly-created promotion, including the promotion's ID.\n\n🔒 Requires: `promotions:write` scope","operationId":"CreatePromotion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Promotion"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionResponse"}}},"description":""}},"summary":"Create a promotion","tags":["Promotions"]}},"/promotions/search":{"get":{"description":"This endpoint can be used to find promotions matching specific criteria.\n\n🔒 Requires: `promotions:read` scope\n","operationId":"SearchPromotions","parameters":[{"description":"Scope of the search","in":"query","name":"scope","schema":{"default":"all","enum":["current_upcoming","past","all"],"type":"string"}},{"description":"Part of promotion's name being searched","explode":true,"in":"query","name":"name","schema":{"example":"choco","type":"string"}},{"description":"Only show promotions that have a start time after or equal to this","explode":true,"in":"query","name":"start_time","schema":{"example":"2022-08-29T9:57:52","type":"string"}},{"description":"Only show promotions that have an end time before or equal to this","explode":true,"in":"query","name":"end_time","schema":{"example":"2023-08-29T9:57:52","nullable":true,"type":"string"}},{"description":"Only show promotions linked to one or many of the outlets specified here","in":"query","name":"outlet_id","schema":{"items":{"example":"06326976-9d65-11ed-fa40-1347e4b4ae6d","type":"string"},"type":"array"}},{"description":"Sort the result by this field","in":"query","name":"order_by","schema":{"default":"name","enum":["name","start_date","end_date"],"type":"string"}},{"description":"Sort direction","in":"query","name":"direction","schema":{"default":"desc","enum":["asc","desc"],"type":"string"}},{"description":"Offset","in":"query","name":"offset","schema":{"default":1,"type":"integer"}},{"description":"Number of results per page","in":"query","name":"page_size","schema":{"default":1000,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionCollection"}}},"description":""}},"summary":"Search promotions","tags":["Promotions"]}},"/promotions/{promotion_id}":{"get":{"description":"This will retrieve a single promotion using the given ID.\n\n🔒 Requires: `promotions:read` scope","operationId":"GetPromotionByID","parameters":[{"description":"The promotion id","in":"path","name":"promotion_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionResponse"}}},"description":""}},"summary":"Get a promotion by ID","tags":["Promotions"]},"put":{"description":"This endpoint updates an existing promotion by ID.\n\n * All of a promotion's fields except its id may be updated.\n * There are no partial updates.\n * All fields must be specified in the update.\n * The response contains the updated promotion object.\n\n🔒 Requires: `promotions:write` scope\n","operationId":"UpdatePromotion","parameters":[{"description":"The promotion id","in":"path","name":"promotion_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Promotion"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionResponse"}}},"description":""}},"summary":"Update a promotion","tags":["Promotions"]}},"/promotions/{promotion_id}/products":{"get":{"description":"Get a list of products applicable for this promotion, and their discount price.\n\nIt takes in `page_size`, `offset` and `name` (use for searching product by product name) as query parameters.\n\nThe endpoint returns:\n * a list of products with discount for the condition product set, and\n * another list for the action product sets.\n\n🔒 Requires: `promotions:read` `products:read` scopes\n","operationId":"GetPromotionProducts","parameters":[{"description":"The promotion id","in":"path","name":"promotion_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionProductsResponse"}}},"description":""}},"summary":"Get products for a promotion","tags":["Promotions"]}},"/promotions/{promotion_id}/promocodes":{"get":{"description":"Get the promo codes associated with this promotion.\n\n🔒 Requires: `promotions:read` scope","operationId":"GetPromotionPromoCodes","parameters":[{"description":"The promotion id","in":"path","name":"promotion_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromotionPromoCodesResponse"}}},"description":""}},"summary":"Get the promo codes for a promotion","tags":["Promotions"]}},"/quotes":{"get":{"description":"Returns a paginated list of quotes.\n\n🔒 Requires: `sales:read` scope","operationId":"get-quotes","parameters":[{"description":"The lower limit for the quote id to be included in the response. For proper pagination, it needs to be the quote id of the last item in the response from your previous request.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"limit","schema":{"default":100,"format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotesCollection"}}},"description":"OK"}},"summary":"List Quotes","tags":["Quotes"]}},"/quotes/{quote_id}":{"get":{"description":"Returns a single quote with a given ID.\n\n🔒 Requires: `sales:read` scope","operationId":"get-quote-quote_id","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}},"description":"OK"}},"summary":"Get Quote","tags":["Quotes"]},"parameters":[{"description":"ID of the quote to get","in":"path","name":"quote_id","required":true,"schema":{"type":"string"}}]},"/registers":{"get":{"description":"Returns a paginated list of registers.\n\n🔒 Requires: `registers:read` scope","operationId":"ListRegisters","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterCollection"}},"new":{"example":{"data":[{"ask_for_note_on_save":1,"ask_for_user_on_sale":false,"button_layout_id":"d656e8e1-7be7-11e4-9bb5-b8ca3a65011c","cash_managed_payment_type_id":"b1e1d70e-f019-11e3-a0f5-b8ca3a64f8f4","email_receipt":true,"id":"b1e198a9-f019-11e3-a0f5-b8ca3a64f8f4","invoice_prefix":"MR-","invoice_sequence":1708,"invoice_suffix":"-NZ","is_open":true,"is_quick_keys_enabled":true,"name":"Main Register","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","print_note_on_receipt":false,"print_receipt":true,"receipt_template_id":"0242ac11-0002-11ea-e96b-69ae6c24a799","register_open_sequence_id":"06bf537b-c783-11e7-ff13-3157eb615f96","register_open_time":"2017-05-05T05:58:53+00:00","show_discounts_on_receipts":true,"version":3391483933},{"ask_for_note_on_save":1,"ask_for_user_on_sale":false,"email_receipt":false,"id":"b8ca3a65-0183-11e4-fbb5-2816e25ffc51","invoice_prefix":"S","invoice_sequence":3,"invoice_suffix":"","is_open":true,"is_quick_keys_enabled":true,"name":"Second Register","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","print_note_on_receipt":false,"print_receipt":true,"receipt_template_id":"0242ac11-0002-11ea-e96b-69ae6c24a799","register_open_sequence_id":"a0369f1f-9083-11e4-f68e-cc2ad7a415de","register_open_time":"2015-03-16T22:21:50+00:00","show_discounts_on_receipts":true,"version":709083},{"ask_for_note_on_save":1,"ask_for_user_on_sale":false,"email_receipt":false,"id":"06e35f89-3783-11e6-ec7e-10e1180eba6d","invoice_prefix":"Th","invoice_sequence":3,"invoice_suffix":"X","is_open":true,"is_quick_keys_enabled":true,"name":"Third register","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","print_note_on_receipt":false,"print_receipt":true,"receipt_template_id":"0242ac11-0002-11ea-e96b-69ae6c24a799","register_open_sequence_id":"06e35f89-3783-11e6-ec7e-10e124cb1e78","register_open_time":"2016-05-03T03:43:04+00:00","show_discounts_on_receipts":true,"version":1234541473}],"version":{"max":3391483933,"min":709083}}}},"description":""}},"summary":"List registers","tags":["Registers"]}},"/registers/{register_id}":{"get":{"description":"Returns a single register with the requested ID.\n\n🔒 Requires: `registers:read` scope","operationId":"GetRegisterByID","parameters":[{"description":"The register id","in":"path","name":"register_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"ask_for_note_on_save":1,"ask_for_user_on_sale":false,"email_receipt":false,"id":"b8ca3a65-0183-11e4-fbb5-2816e25ffc51","invoice_prefix":"S","invoice_sequence":3,"invoice_suffix":"","is_open":true,"is_quick_keys_enabled":true,"name":"Second Register","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","print_note_on_receipt":false,"print_receipt":true,"receipt_template_id":"0242ac11-0002-11ea-e96b-69ae6c24a799","register_open_sequence_id":"a0369f1f-9083-11e4-f68e-cc2ad7a415de","register_open_time":"2015-03-16T22:21:50+00:00","show_discounts_on_receipts":true,"version":709083}},"schema":{"$ref":"#/components/schemas/RegisterResponse"}}},"description":""}},"summary":"Get a single register","tags":["Registers"]}},"/registers/{register_id}/actions/close":{"put":{"description":"Closes a single register with the requested ID.\n\n🔒 Requires: `register:close` `payment_types:read` scopes","operationId":"CloseRegister","parameters":[{"description":"The register id","in":"path","name":"register_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterCloseRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"ask_for_note_on_save":1,"ask_for_user_on_sale":false,"email_receipt":false,"id":"b8ca3a65-0183-11e4-fbb5-2816e25ffc51","invoice_prefix":"S","invoice_sequence":3,"invoice_suffix":"","is_open":false,"is_quick_keys_enabled":true,"name":"Second Register","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","print_note_on_receipt":false,"print_receipt":true,"receipt_template_id":"0242ac11-0002-11ea-e96b-69ae6c24a799","register_close_time":"2015-03-16T22:21:50+00:00","show_discounts_on_receipts":true,"version":709083}},"schema":{"$ref":"#/components/schemas/RegisterResponse"}}},"description":""}},"summary":"Close a single register","tags":["Registers"]}},"/registers/{register_id}/actions/open":{"put":{"description":"Opens a single register with the requested ID.\n\n🔒 Requires: `register:open` scope","operationId":"OpenRegister","parameters":[{"description":"The register id","in":"path","name":"register_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterOpenRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":{"ask_for_note_on_save":1,"ask_for_user_on_sale":false,"email_receipt":false,"id":"b8ca3a65-0183-11e4-fbb5-2816e25ffc51","invoice_prefix":"S","invoice_sequence":3,"invoice_suffix":"","is_open":true,"is_quick_keys_enabled":true,"name":"Second Register","outlet_id":"b8ca3a65-0183-11e4-fbb5-2816d2677218","print_note_on_receipt":false,"print_receipt":true,"receipt_template_id":"0242ac11-0002-11ea-e96b-69ae6c24a799","register_open_sequence_id":"a0369f1f-9083-11e4-f68e-cc2ad7a415de","register_open_time":"2015-03-16T22:21:50+00:00","show_discounts_on_receipts":true,"version":709083}},"schema":{"$ref":"#/components/schemas/RegisterResponse"}}},"description":""}},"summary":"Open a single register","tags":["Registers"]}},"/registers/{register_id}/payments_summary":{"get":{"description":"Returns a payload containing payment totals for all payments types defined in the account for a single register.\n\n🔒 Requires: `payments:read` scope","operationId":"RegisterPaymentsSummary","parameters":[{"description":"The register id","in":"path","name":"register_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"payments":[{"payment_type_id":"2ac65e3b-1224-4aa5-bedf-936cfe85ac95","payment_type_name":"Loyalty","total":"0.00"},{"payment_type_id":"be21ec2b-315f-1b07-8567-936cfe85ac95","payment_type_name":"Cash","total":"255.00"},{"payment_type_id":"2ac65e3b-b6c5-6547-9543-80ba85264a8e","payment_type_name":"Credit Card","total":"1038.77"}],"register_closure_id":"0ab9b350-ab7f-11ba-fc5c-6e58d999006f","register_closure_sequence_number":5,"register_open_time":"2015-03-16T22:21:50+00:00"}},"schema":{"$ref":"#/components/schemas/RegisterPaymentsSummaryResponse"}}},"description":""}},"summary":"Get all the payments data associated with a single register.","tags":["Registers"]}},"/retailer":{"get":{"description":"This endpoint returns information about the retailer.\n\n🔒 Requires: `retailer:read` `payment_types:read` scopes","operationId":"GetRetailer","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetailerResponse"}}},"description":"OK"}},"summary":"Get information about this retailer","tags":["Retailers"]}},"/sales":{"get":{"description":"Returns a paginated list of sales.\n\nTo search for sales, please have a look at our [Search endpoint](/reference/search-1) on what is supported.\n\n🔒 Requires: `sales:read` scope","operationId":"ListSales","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleCollection"}}},"description":""}},"summary":"List Sales","tags":["Sales"]},"post":{"description":"Create a sale. Returns the ID of the created sale. See [Sales 101](/docs/sales_101) for usage information.\n\n**Note**: Promotions cannot be used with this endpoint.\n\n🔒 Requires: `sales:write` scope","operationId":"CreateSale","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleRequest"}}},"description":"New sale object.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleCreateResponse"}}},"description":""}},"summary":"Create a sale","tags":["Sales"]}},"/sales/{sale_id}":{"get":{"description":"Returns a single sale with a given ID.\n\n🔒 Requires: `sales:read` scope","operationId":"GetSaleByID","parameters":[{"description":"A valid sale ID.","in":"path","name":"sale_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleResponse"}}},"description":""}},"summary":"Get a single sale","tags":["Sales"]},"put":{"description":"Update an existing sale by ID.\n\n**Note**: Promotions cannot be used with this endpoint.\n\n🔒 Requires: `sales:write` scope","operationId":"UpdateSale","parameters":[{"description":"A valid sale ID.","in":"path","name":"sale_id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaleUpdateRequest"}}},"description":"Updated sale object.","required":true},"responses":{"204":{"description":"Sale updated successfully."}},"summary":"Update a sale","tags":["Sales"]}},"/sales/{sale_id}/actions/return":{"put":{"description":"Initializes a return on a given sale ID and returns the SAVED return. See [the tutorial](/docs/sales_returns) for more information.\n\n🔒 Requires: `sales:write` `users:read` scopes","operationId":"initReturnSale","parameters":[{"description":"A valid sale ID.","in":"path","name":"sale_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"created_at":"2016-09-19T20:28:03+00:00","customer_id":"b1cabb53-f019-11e3-a0f5-b8ca3a64f8f4","id":"06bf537b-c783-11e6-f6b9-7ea7909ffedd","invoice_number":"1570","invoice_sequence":1570,"line_items":[{"cost":100,"cost_total":-100,"discount":0,"discount_total":0,"id":"06bf537b-c783-11e6-f6b9-7ea7909c64b9","is_return":true,"loyalty_value":23,"price":200,"price_set":true,"price_total":-200,"product_id":"188a87aa-06fe-11e4-a0f5-b8ca3a64f8f4","quantity":-1,"sequence":1,"status":"SAVED","tax":30,"tax_components":[{"rate_id":"b1dfed8b-f019-11e3-a0f5-b8ca3a64f8f4","total_tax":30}],"tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","tax_total":-30,"total_cost":-100,"total_discount":0,"total_loyalty_value":-23,"total_price":-200,"total_tax":-30,"unit_cost":100,"unit_discount":0,"unit_loyalty_value":23,"unit_price":200,"unit_tax":30},{"cost":100,"cost_total":-100,"discount":0,"discount_total":0,"id":"06bf537b-c783-11e6-f6b9-7ea7909d949a","is_return":true,"loyalty_value":0,"price":0,"price_set":true,"price_total":0,"product_id":"188a87aa-06fe-11e4-a0f5-b8ca3a64f8f4","quantity":-1,"sequence":0,"status":"SAVED","tax":0,"tax_components":[{"rate_id":"b1dfed8b-f019-11e3-a0f5-b8ca3a64f8f4","total_tax":0}],"tax_id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","tax_total":0,"total_cost":-100,"total_discount":0,"total_loyalty_value":0,"total_price":0,"total_tax":0,"unit_cost":100,"unit_discount":0,"unit_loyalty_value":0,"unit_price":0,"unit_tax":0}],"note":"","outlet_id":"b1e04bd8-f019-11e3-a0f5-b8ca3a64f8f4","payments":[],"receipt_number":"1570","receipt_sequence":1570,"register_id":"b1e198a9-f019-11e3-a0f5-b8ca3a64f8f4","return_for":"b8ca3a65-0183-11e4-fbb5-39f7fce5e39b","sale_date":"2016-09-19T20:28:03+00:00","short_code":"ovvfkk","state":"parked","status":"SAVED","taxes":[],"total_loyalty":0,"total_price":-200,"total_tax":-30,"updated_at":"2016-09-19T20:28:03+00:00","user_id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","version":1978890425}},"schema":{"$ref":"#/components/schemas/SaleResponse"}}},"description":""}},"summary":"Return a sale","tags":["Sales"]}},"/sales/{sale_id}/fulfill":{"post":{"description":"Fulfil an unfulfilled sale.\n\n🔒 Requires: `fulfillments:write` `sales:write` scopes","operationId":"FulfillSale","parameters":[{"description":"The sale id","in":"path","name":"sale_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillSaleRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillmentResponse"}}},"description":""}},"summary":"Fulfil a sale","tags":["Fulfillments"]}},"/sales/{sale_id}/fulfillments":{"get":{"description":"Returns a list of fulfillments for a given sale.\n\n🔒 Requires: `sales:read` `fulfillments:read` scopes","operationId":"GetFulfillmentsBySaleID","parameters":[{"description":"The sale id","in":"path","name":"sale_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FulfillmentsResponse"}}},"description":""}},"summary":"List Sale Fulfillments","tags":["Fulfillments"]}},"/sales/{sale_id}/pick_lists":{"get":{"description":"Returns a list of pick lists for a given sale.\n\n🔒 Requires: `sales:read` scope","operationId":"GetPickListsBySaleID","parameters":[{"description":"The sale id","in":"path","name":"sale_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PickListsResponse"}}},"description":""}},"summary":"List Sale Pick Lists","tags":["Pick Lists"]}},"/search":{"get":{"description":"This endpoint allows integrators to search all of the most commonly used resources, **sales**, **products** and **customers**. Each type allowing search by a number of different parameters.\n### Supported resource types and attributes\n- **Sales**\n  - date_from\n  - date_to\n  - status\n  - state\n  - attributes\n  - invoice_number\n  - customer_id\n  - user_id\n  - outlet_id\n- **Products**\n  - sku **_(values must be lowercased)_**\n  - supplier_id\n  - brand_id\n  - tag_id\n  - product_type_id\n  - variant_parent_id\n- **Customers**\n  - customer_code\n  - first_name\n  - last_name\n  - company_name\n  - mobile\n  - phone\n  - email\n### Sorting and pagination\nUnlike other endpoints in the API 2.0, search results from this endpoint can be sorted by any of the attributes above. Because of that, the default [pagination](https://x-series-api.lightspeedhq.com/docs/pagination#api-20) mechanism is not appropriate for this endpoint. Instead, this endpoint uses `offset` and `page_size` attributes to handle search results spanning multiple pages.\n\n🔒 Requires one of the following:\n- `sales:read` scope when searching for sales\n- `products:read` scope when searching for products\n- `customers:read` scope when searching for customers\n","operationId":"Search","parameters":[{"description":"The entity type to search for.","in":"query","name":"type","required":true,"schema":{"enum":["sales","products","customers"],"type":"string"}},{"description":"The attribute used to sort items returned in the response.","in":"query","name":"order_by","schema":{"type":"string"}},{"description":"Sorting direction.","in":"query","name":"order_direction","schema":{"enum":["asc","desc"],"type":"string"}},{"description":"The maximum number of objects to be included in the response, currently limited to 1000. Specifying more than 1000 will result in 1000 objects being returned.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"The number of objects to be \"skipped\" for the response. Used for pagination.","in":"query","name":"offset","schema":{"type":"integer"}},{"description":"The `id` of the object to be included in the response.","in":"query","name":"_id","schema":{"format":"UUID","type":"string"}},{"description":"The `id` of the object to be excluded from the response.","in":"query","name":"-_id","schema":{"format":"UUID","type":"string"}},{"description":"Indicated whether deleted objects should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}},{"deprecated":true,"description":"**SALES** Status of the sale to find.\nCan be used multiple times to search for objects with different values of this parameter.\nDeprecated, please use state and attributes instead.","in":"query","name":"status","schema":{"type":"string"}},{"description":"**SALES** State of the sale to find.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"state","schema":{"type":"string"}},{"description":"**SALES** Attributes of the sale to find.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"attributes","schema":{"items":{"type":"string"},"type":"array"}},{"description":"**SALES** Invoice number of the sale.","in":"query","name":"invoice_number","schema":{"type":"string"}},{"description":"**SALES** The `ID` of the customer associated with the sales.","in":"query","name":"customer_id","schema":{"format":"UUID","type":"string"}},{"description":"**SALES** The `ID` of the user associated with the sales.","in":"query","name":"user_id","schema":{"format":"UUID","type":"string"}},{"description":"**SALES** The `ID` of the outlet associated with the sales.","in":"query","name":"outlet_id","schema":{"format":"UUID","type":"string"}},{"description":"**SALES** Lower limit for the sale date as UTC timestamp. Format: `2016-08-08T12:00:00Z`.","in":"query","name":"date_from","schema":{"type":"string"}},{"description":"**SALES** Upper limit for the sale date as UTC timestamp. Format: `2016-08-08T12:00:00Z`.","in":"query","name":"date_to","schema":{"type":"string"}},{"description":"**PRODUCTS** The SKU of products to include in the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"sku","schema":{"type":"string"}},{"description":"**PRODUCTS** The SKU of products to exclude from the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"-sku","schema":{"type":"string"}},{"description":"**PRODUCTS** The ID of the supplier associated with the product to include in the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"supplier_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the supplier associated with the product to exclude from the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"-supplier_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the brand associated with the product to include in the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"brand_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the brand associated with the product to exclude from the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"-brand_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the tag associated with the product to include in the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"tag_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the brand associated with the product to exclude from the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"-tag_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the product type associated with the product to include in the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"product_type_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the product type associated with the product to exclude from the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"-product_type_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the variant parent product associated with the product to include in the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"variant_parent_id","schema":{"format":"UUID","type":"string"}},{"description":"**PRODUCTS** The ID of the variant parent product associated with the product to exclude from the search.\nCan be used multiple times to search for objects with different values of this parameter.","in":"query","name":"-variant_parent_id","schema":{"format":"UUID","type":"string"}},{"description":"**CUSTOMERS** The `customer_code` associated with the customer to find.","in":"query","name":"customer_code","schema":{"type":"string"}},{"description":"**CUSTOMERS** The `email` address associated with the customer to find.","in":"query","name":"email","schema":{"type":"string"}},{"description":"**CUSTOMERS** The `first_name` for the customers to find.","in":"query","name":"first_name","schema":{"type":"string"}},{"description":"**CUSTOMERS** The `last_name` for the customers to find.","in":"query","name":"last_name","schema":{"type":"string"}},{"description":"**CUSTOMERS** The `company_name` for the customers to find.","in":"query","name":"company_name","schema":{"type":"string"}},{"description":"**CUSTOMERS** The `mobile number` for the customers to find.","in":"query","name":"mobile","schema":{"type":"string"}},{"description":"**CUSTOMERS** The `phone number` for the customers to find.","in":"query","name":"phone","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}},"description":""}},"summary":"Search for resources","tags":["Search"]}},"/security_events":{"get":{"description":"This API returns a list of all the security log events **for the current user**. If you want a list of all the security events for all users please use the auditlog_events with filter type == \"security\". See the auditlog_events API in the beta documentation for more information.\n\n🔒 Requires: `audit:read` scope","operationId":"get-security_events","responses":{"200":{"content":{"Security signin example":{"example":{"action":"signin","created_at":"2020-01-29T22:26:18Z","id":"1222647183683117056","ip_address":"14.1.34.16","occurred_at":"2020-01-29T22:26:18Z","type":"security","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36","user_id":"02dcd191-ae2b-11e9-f336-cd2e6d8a5806"}},"application/json":{"schema":{"properties":{"event":{"$ref":"#/components/schemas/AuditLogEvent"}},"type":"object"}}},"description":"OK"}},"summary":"List security events for current user","tags":["Audit"]}},"/serialnumbers":{"get":{"description":"Returns a paginated list of serial numbers.\n\n🔒 Requires: `serial_numbers:read` scope","operationId":"get-serialnumbers","parameters":[{"description":"A product ID. This filters the serial numbers to only include ones on this product.","in":"query","name":"product_id","schema":{"format":"uuid","type":"string"}},{"description":"An outlet ID. This filters the serial numbers to only include ones on this outlet.","in":"query","name":"outlet_id","schema":{"format":"uuid","type":"string"}},{"description":"A sale ID. This filters the serial numbers to only include ones that were sold in the specified sale.","in":"query","name":"sale_id","schema":{"format":"uuid","type":"string"}},{"description":"A line item ID. This filters the serial numbers to only include ones sold in the specified line item.","in":"query","name":"line_item_id","schema":{"format":"uuid","type":"string"}},{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerialNumberCollection"}}},"description":"A paginated list of serial numbers."}},"summary":"List serial numbers","tags":["Serial Numbers"]},"post":{"description":"Creates a serial number.\n\n🔒 Requires: `serial_numbers:write` scope","operationId":"create-serialnumber","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerialNumberRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerialNumberResponse"}}},"description":"The serial number"}},"summary":"Create a serial number","tags":["Serial Numbers"]}},"/serialnumbers/{serialnumber_id}":{"delete":{"description":"Deletes a serial number.\n\n🔒 Requires: `serial_numbers:write` scope","operationId":"delete-serialnumber","parameters":[{"description":"The serial number id","in":"path","name":"serialnumber_id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":""}},"summary":"Delete a serial number","tags":["Serial Numbers"]},"get":{"description":"Returns a single serial number.\n\n🔒 Requires: `serial_numbers:read` scope","operationId":"get-serialnumber","parameters":[{"description":"The serial number id","in":"path","name":"serialnumber_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerialNumberResponse"}}},"description":"The serial number"}},"summary":"Get a single serial number","tags":["Serial Numbers"]}},"/service_items/customer/{customer_id}":{"get":{"description":"Returns a paginated list of customer's service items.\n\n🔒 Requires: `services:read` scope","operationId":"ListServiceItems","parameters":[{"description":"The customer id","in":"path","name":"customer_id","required":true,"schema":{"type":"string"}},{"description":"The lower limit for the service id to be included in the response. For proper pagination, it needs to be the item id of the last item in the response from your previous request.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"limit","schema":{"default":100,"format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"has_next":false,"job_items":[{"created_at":"2025-08-12T18:46:30.216844Z","created_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af","initial_condition":"Screen cracked, minor water damage","item_details":{"description":"Customer's primary phone with cracked screen","serial_number":"F2LXN1234A"},"item_id":"e6fd369e-e579-4768-b12d-6754af620f2d","item_name":"iPhone 15 Pro","updated_at":"2025-08-12T18:46:30.216844Z","updated_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af"},{"created_at":"2025-08-12T18:44:14.387026Z","created_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af","initial_condition":"Spacebar key not responding consistently","item_details":{"description":"13-inch laptop with keyboard issues","serial_number":"C02D12345678"},"item_id":"a57dc842-1075-458a-ab98-f658c4f985de","item_name":"MacBook Air M2","updated_at":"2025-08-12T18:44:14.387026Z","updated_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af"}],"total_job_items":2},"schema":{"properties":{"has_next":{"type":"boolean"},"job_items":{"items":{"properties":{"created_at":{"type":"string"},"created_by":{"type":"string"},"initial_condition":{"type":"string"},"item_details":{"properties":{"description":{"type":"string"},"serial_number":{"type":"string"}},"type":"object"},"item_id":{"type":"string"},"item_name":{"type":"string"},"updated_at":{"type":"string"},"updated_by":{"type":"string"}},"type":"object"},"type":"array"},"total_job_items":{"type":"integer"}},"type":"object"}}},"description":""},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"}}},"description":"Unauthorized"}},"summary":"List a customer's service items","tags":["Service Orders"]}},"/service_statuses":{"get":{"description":"Returns all service statuses for the retailer, including system defaults and custom ones.\n\n**Only available with the Service Orders module enabled.**\n\n🔒 Requires: `services:read` scope","operationId":"ListServiceStatuses","responses":{"200":{"content":{"application/json":{"example":[{"created_at":"2026-01-15T10:00:00Z","display_name":"New","display_order":1,"id":"2038696150067306496","retailer_id":"00000000-0001-0001-0001-000000000001","status_key":"NEW","system_default":true,"updated_at":"2026-01-15T10:00:00Z"},{"created_at":"2026-01-15T10:00:00Z","display_name":"Waiting for Parts","display_order":2,"id":"2038696150067306497","retailer_id":"00000000-0001-0001-0001-000000000001","status_key":"CUSTOM","system_default":false,"updated_at":"2026-01-15T10:00:00Z"}],"schema":{"items":{"$ref":"#/components/schemas/ServiceStatusDetails"},"type":"array"}}},"description":"List of service statuses"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"example":{"error":"user missing required permissions"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Forbidden — missing `services:read` scope"}},"summary":"List service statuses","tags":["Service Orders"]},"post":{"description":"Creates a new custom service status for the retailer. The new status is\nappended at the end of the display order. Use the PATCH endpoint to\nchange its position after creation.\n\n**Only available with the Service Orders module enabled.**\n\n🔒 Requires: `services:write` scope","operationId":"CreateServiceStatus","requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"description":"Human-readable name for the status.","type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"201":{"content":{"application/json":{"example":{"created_at":"2026-03-31T18:23:47.719422Z","display_name":"Waiting for Parts","display_order":5,"id":"2039046012672835584","retailer_id":"00000000-0001-0001-0001-000000000001","status_key":"CUSTOM","system_default":false,"updated_at":"2026-03-31T18:23:47.719422Z"},"schema":{"$ref":"#/components/schemas/ServiceStatusDetails"}}},"description":"Service status created successfully"},"400":{"content":{"application/json":{"example":{"error":"name cannot be empty"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Bad request — name is missing or blank"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"example":{"error":"user missing required permissions"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Forbidden — missing `services:write` scope"},"409":{"content":{"application/json":{"example":{"error":"a status already exists with this name"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Conflict — a status with this name already exists"}},"summary":"Create a service status","tags":["Service Orders"]}},"/service_statuses/{id}":{"delete":{"description":"Deletes a custom service status.\n\nSystem default statuses cannot be deleted. A status cannot be deleted if it is still assigned to one or more service orders.\n\n**Only available with the Service Orders module enabled.**\n\n🔒 Requires: `services:write` scope","operationId":"DeleteServiceStatus","responses":{"204":{"description":"Service status deleted successfully"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"example":{"error":"cannot modify system status"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Forbidden — missing `services:write` scope, or attempting to delete a system default status"},"404":{"content":{"application/json":{"example":{"error":"job status not found"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Not Found"},"409":{"content":{"application/json":{"example":{"error":"status is in use by one or more jobs and cannot be deleted without a replacement"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Conflict — status is still assigned to one or more service orders"}},"summary":"Delete a service status","tags":["Service Orders"]},"get":{"description":"Returns a single service status by ID.\n\n**Only available with the Service Orders module enabled.**\n\n🔒 Requires: `services:read` scope","operationId":"GetServiceStatus","responses":{"200":{"content":{"application/json":{"example":{"created_at":"2026-03-30T19:28:37.155851Z","display_name":"newest custom edited?","display_order":4,"id":"2038699938241933312","retailer_id":"00000000-0001-0001-0001-000000000001","status_key":"CUSTOM","system_default":false,"updated_at":"2026-03-31T18:23:07.400648Z"},"schema":{"$ref":"#/components/schemas/ServiceStatusDetails"}}},"description":"Service status found"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"example":{"error":"user missing required permissions"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Forbidden — missing `services:read` scope"},"404":{"content":{"application/json":{"example":{"error":"job status not found"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Not Found"}},"summary":"Get a service status","tags":["Service Orders"]},"parameters":[{"description":"ID of the service status","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"patch":{"description":"Partially updates a custom service status. Only provided fields are updated.\n\nSystem default statuses cannot be modified.\n\n**Only available with the Service Orders module enabled.**\n\n🔒 Requires: `services:write` scope","operationId":"UpdateServiceStatus","requestBody":{"content":{"application/json":{"schema":{"properties":{"display_order":{"description":"New display order. Can be set to null to clear it.","nullable":true,"type":"integer"},"name":{"description":"New human-readable name for the status. If provided, must not be blank.","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"created_at":"2026-03-30T19:28:37.155851Z","display_name":"newest custom edited?","display_order":4,"id":"2038699938241933312","retailer_id":"00000000-0001-0001-0001-000000000001","status_key":"CUSTOM","system_default":false,"updated_at":"2026-03-31T18:23:07.400648Z"},"schema":{"$ref":"#/components/schemas/ServiceStatusDetails"}}},"description":"Service status updated successfully"},"400":{"content":{"application/json":{"example":{"error":"name cannot be empty"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Bad request — name is provided but blank"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"example":{"error":"cannot modify system status"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Forbidden — missing `services:write` scope, or attempting to modify a system default status"},"404":{"content":{"application/json":{"example":{"error":"job status not found"},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Not Found"},"409":{"content":{"application/json":{"examples":{"duplicate_display_order":{"value":{"error":"a status already exists with this display order"}},"duplicate_name":{"value":{"error":"a status already exists with this name"}}},"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Conflict — a status with this name or display order already exists"}},"summary":"Update a service status","tags":["Service Orders"]}},"/services":{"get":{"description":"Returns a paginated list of services.\n\n🔒 Requires: `services:read` scope","operationId":"ListServices","parameters":[{"description":"The lower limit for the service id to be included in the response. For proper pagination, it needs to be the service id of the last item in the response from your previous request.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"limit","schema":{"default":100,"format":"int64","type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"has_next":false,"jobs":[{"service":{"agenda":{"date":"2025-08-27T04:00:00Z","minutes_scheduled":120},"assigned_user_id":"","created_at":"2025-08-25T16:26:29.56854Z","id":"1960015938019700736","line_items":[{"fulfillment_type":"UNSPECIFIED","gift_card":null,"id":"dc8fcea9-e4eb-47b1-9994-fa7fa8d10f53","is_picklist_pickable":false,"note":"","price_set":false,"product_id":"ced180dd-1234-47ae-b16e-149897b26681","promotions":[],"quantity":"1","register_id":"06e94082-ed4f-11ed-fd41-fef5ad8737fa","register_sequence_id":"0698ab21-5f72-11f0-f6d9-785ab008ba49","sales_person_id":"","sequence":"0","sku":"10026","state":"CONFIRMED","tax_components":[],"unit_discount":"0","unit_loyalty":"0","unit_price":"15"}],"retailer_id":"06e94082-ed4f-11ed-fd41-fef5ad4ffc39","sale_id":"6872a358-0089-89ae-11f0-81cfbf9b0ca1","status":"NEW","status_details":{"created_at":"2025-08-25T16:26:29.56854Z","display_name":"New","display_order":1,"id":"2038696150067306496","retailer_id":"06e94082-ed4f-11ed-fd41-fef5ad4ffc39","status_key":"NEW","system_default":true,"updated_at":"2025-08-25T16:26:29.56854Z"},"totals":{"is_sale_level_discount_percentage":false,"sale_level_discount_value":"0","sub_total":"15","total_amount":"16.95","total_promotion":"0","total_tax":"1.95"},"updated_at":"2025-08-25T16:26:29.732308Z"},"service_item":{"created_at":"2025-08-21T18:08:14.277021Z","created_by":"tech-001","initial_condition":"Needs new brake pads and general tune-up.","item_details":{"description":"2022 Trek FX 3 Disc, 21-speed hybrid bike, black.","serial_number":"TREKFX3-2022-12345"},"item_id":"bike-001","item_name":"Trek FX 3 Disc Hybrid Bike","updated_at":"2025-08-21T18:08:14.43438Z","updated_by":"tech-001"}}],"total_jobs":1},"schema":{"properties":{"has_next":{"description":"Whether or not there are more pages available","type":"boolean"},"jobs":{"items":{"properties":{"service":{"$ref":"#/components/schemas/ServiceOrder"},"service_item":{"nullable":true,"type":"object"}},"type":"object"},"type":"array"},"total_jobs":{"description":"Total number of jobs","type":"integer"}},"type":"object"}}},"description":"A paginated list of service orders"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"}}},"description":"Unauthorized"}},"summary":"List services","tags":["Service Orders"]},"post":{"description":"**Only available with the Service Orders module enabled.**\n\nCreates a new service order. This endpoint allows you to create service orders with a customer, a service item, note and location.\n\n🔒 Requires: `services:write` `sales:write` scopes","operationId":"CreateService","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceOrderRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailedService"}}},"description":"Service order created successfully"},"400":{"content":{"application/json":{"example":{"error":"twirp error invalid_argument: register_id register ID can't be empty"},"schema":{"properties":{"error":{"description":"Error message describing the bad request","type":"string"}},"type":"object"}}},"description":"Bad request"},"401":{"content":{"application/json":{"example":{"error":"CSRF validation fail"},"schema":{"properties":{"error":{"description":"Error message describing the authentication failure","type":"string"}},"type":"object"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"example":{"error":"user missing required permissions"},"schema":{"properties":{"error":{"description":"Error message describing the authorization failure","type":"string"}},"type":"object"}}},"description":"Forbidden"}},"summary":"Create a service order","tags":["Service Orders"]}},"/services/{service_id}":{"get":{"description":"Get a single service order.\n\n🔒 Requires: `services:read` scope","operationId":"GetService","responses":{"200":{"content":{"application/json":{"example":{"notes":[{"body":"","created_at":"2025-08-25T16:26:29.56854Z","created_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af","id":"1960015938019700737","service_id":"1960015938019700736","service_status":"NEW"}],"service":{"agenda":{"date":"2025-08-27T04:00:00Z","minutes_scheduled":120},"assigned_user_id":"","created_at":"2025-08-25T16:26:29.56854Z","id":"1960015938019700736","line_items":[{"fulfillment_type":"UNSPECIFIED","gift_card":null,"id":"dc8fcea9-e4eb-47b1-9994-fa7fa8d10f53","is_picklist_pickable":false,"note":"","price_set":false,"product_id":"ced180dd-1234-47ae-b16e-149897b26681","promotions":[],"quantity":"1","register_id":"06e94082-ed4f-11ed-fd41-fef5ad8737fa","register_sequence_id":"0698ab21-5f72-11f0-f6d9-785ab008ba49","sales_person_id":"","sequence":"0","sku":"10026","state":"CONFIRMED","tax_components":[],"unit_discount":"0","unit_loyalty":"0","unit_price":"15"}],"location":"Bike rack #123","retailer_id":"06e94082-ed4f-11ed-fd41-fef5ad4ffc39","sale_id":"6872a358-0089-89ae-11f0-81cfbf9b0ca1","status":"NEW","status_details":{"created_at":"2025-08-25T16:26:29.56854Z","display_name":"New","display_order":1,"id":"2038696150067306496","retailer_id":"06e94082-ed4f-11ed-fd41-fef5ad4ffc39","status_key":"NEW","system_default":true,"updated_at":"2025-08-25T16:26:29.56854Z"},"totals":{"is_sale_level_discount_percentage":false,"sale_level_discount_value":"0","sub_total":"15","total_amount":"16.95","total_promotion":"0","total_tax":"1.95"},"updated_at":"2025-08-25T16:26:29.732308Z"},"service_item":{"created_at":"2025-07-25T23:59:10.335813Z","created_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af","initial_condition":"Needs new brake pads and general tune-up.","item_details":{"description":"2022 Trek FX 3 Disc, 21-speed hybrid bike, black.","serial_number":"TREKFX3-2022-12345"},"item_id":"f808afa3-c8f6-4b13-aa37-4b90dfae77a5","item_name":"Trek FX 3 Disc Hybrid Bike","updated_at":"2025-08-25T16:26:29.619284Z","updated_by":"662d3131-6434-2d65-3832-303665393430"}},"schema":{"$ref":"#/components/schemas/DetailedService"}}},"description":"Service has been found"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"example":{"error":"service not found"}}},"description":"Not Found"}},"summary":"Get service","tags":["Service Orders"]},"parameters":[{"description":"ID of the service to get","in":"path","name":"service_id","required":true,"schema":{"type":"string"}}]},"/services_agenda/outlet/{outlet_id}":{"get":{"description":"Returns the service agenda for the specified outlet within the given time window.\n\n🔒 Requires: `services:read` scope","operationId":"get-agenda-outlet_id","responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DailyAgenda"},"type":"array"}}},"description":"Outlet's service agenda"},"401":{"content":{"application/json":{"example":{"error":"Access token is not valid"}}},"description":"Unauthorized"}},"summary":"Get services agenda by outlet","tags":["Service Orders"]},"parameters":[{"description":"The size, in days, of the time window for which the agenda is requested.","in":"query","name":"days","schema":{"default":7,"example":31,"type":"integer"}},{"description":"The first date of the time window for which the agenda is requested.","in":"query","name":"start_date","required":true,"schema":{"example":"2017-07-21T17:32:28Z","format":"date-time","type":"string"}},{"description":"The timezone in which the agenda is requested. When provided, the agenda returned will account for time changes like daylight savings.","in":"query","name":"timezone","schema":{"example":"America/New_York","type":"string"}},{"in":"path","name":"outlet_id","required":true,"schema":{"type":"string"}}]},"/shifts":{"get":{"description":"Returns a paginated list of shifts.","operationId":"ListShifts","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"created_at":"2024-05-23T09:25:43.511Z","id":"00000000-0001-0001-0001-000000000004","retailer_id":"00000000-0001-0001-0001-000000000001","time_in":"2024-06-23T09:25:43.511Z","time_out":"2024-06-23T12:25:43.511Z","updated_at":"2024-05-23T09:25:43.511Z","updated_by":"08002782-0c90-11e6-e3ed-117ec127b1ca","user_id":"08002782-0c90-11e6-e3ed-117ec127b1ca","version":3378},{"created_at":"2024-06-23T10:30:43.511Z","id":"00000000-0001-0001-0001-000000000005","retailer_id":"00000000-0001-0001-0001-000000000002","time_in":"2024-07-23T10:30:43.511Z","time_out":"2024-07-23T13:30:43.511Z","updated_at":"2024-06-23T10:30:43.511Z","updated_by":"08002782-0c90-11e6-e3ed-117ec127b1cb","user_id":"08002782-0c90-11e6-e3ed-117ec127b1cb","version":3379}],"version":{"max":3379,"min":3378}},"schema":{"$ref":"#/components/schemas/ShiftCollection"}}},"description":""}},"summary":"List shifts","tags":["Shifts"]}},"/store_credits":{"get":{"description":"Returns a list of store credit customers.\n\n🔒 Requires: `store_credits:read` scope","operationId":"ListStoreCredit","parameters":[{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Include supplementary data. The only valid value for includes[] is 'customer'.","in":"query","name":"includes[]","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreditCustomer"}}},"description":"The list of store credit customers."}},"summary":"Store credit list","tags":["Store Credits"]}},"/store_credits/bulk":{"post":{"description":"Returns a list of store credit for multiple customers.\n\n🔒 Requires: `store_credits:read` scope","operationId":"BulkStoreCreditList","requestBody":{"content":{"application/json":{"schema":{"items":{"format":"uuid","type":"string"},"type":"array"}}},"description":"The list of customer ids to get related store credit for.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreditBulkResponse"}}},"description":"A list of customers with associated store credit balances."}},"summary":"Store credit bulk list","tags":["Store Credits"]}},"/store_credits/report":{"get":{"description":"Returns a report of store credits.\n\n🔒 Requires: `store_credits:read` scope","operationId":"StoreCreditReport","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreditReport"}}},"description":"A report of all store credit associated with the retailer."}},"summary":"Store credit report","tags":["Store Credits"]}},"/store_credits/{customerId}":{"get":{"description":"Returns a list of store credits for the given customer id.\n\n🔒 Requires: `store_credits:read` scope","operationId":"ListStoreCreditForCustomer","parameters":[{"description":"Find by customer id.","in":"path","name":"customerId","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Include supplementary data. The only valid value for includes[] is 'customer'.","in":"query","name":"includes[]","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreditCustomer"}}},"description":"The store credit details for the given customer."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The given customer not found."}},"summary":"Store credit list for the given customer id","tags":["Store Credits"]}},"/store_credits/{customerId}/transactions":{"post":{"description":"Creates a new store credit transaction. The type determines what sort of transaction it is.\n\n* \"REDEMPTION\" - Use this type when you want to redeem a certain amount from the store credit balance. The amount MUST be negative. If you want to add an amount to the balance use the \"ISSUE\" type.\n* \"ISSUE\" - Use this type when you issue store credit to a customer.\n* \"REVERSE\" - Use this type when voiding an earlier ISSUE or REDEMPTION transaction.\n\nIf the customer account does not have enough credit to honour a REDEMPTION transaction a 422 HTTP status code will be returned.\n\n## Idempotency\n\n Please populate the client_id field with a unique transaction identifier, to ensure that the transaction is safe from double-submit problems. See [the tutorial](/docs/store_credit#idempotency) for more information.\n\n🔒 Requires: `store_credits:write:issue` `customers:read` scopes","operationId":"CreateStoreCreditTransaction","parameters":[{"description":"The customer id to apply the store transaction to.","in":"path","name":"customerId","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreditTransactionParams"}}},"description":"The store credit transaction details","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreCreditTransaction"}}},"description":"Transaction successfully added to customer's store credit."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"The given customer was not found."},"422":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"There is insufficient balance for this customer to honour the transaction."}},"summary":"Create a store credit transaction","tags":["Store Credits"]}},"/suppliers":{"get":{"description":"Returns a paginated list of suppliers.\n\n🔒 Requires: `suppliers:read` scope","operationId":"ListSuppliers","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"id":"dc85058a-a683-11e5-ef46-05a1ba8c8c08","name":"Supplier post new test","source":"USER"},{"description":"","id":"dc85058a-a683-11e5-ef46-08f9a926615e","name":"Peak","source":""},{"description":"API Supplier description","id":"dc85058a-a683-11e5-e112-5734f1f3a2ca","name":"API Supplier","source":"USER"}]},"schema":{"$ref":"#/components/schemas/SupplierCollection"}}},"description":""}},"summary":"List suppliers","tags":["Suppliers"]},"post":{"description":"Creates a new supplier.\n\n🔒 Requires: `suppliers:write` scope","operationId":"CreateSupplier","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSupplierRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"The id of the supplier created.","format":"uuid","type":"string"}},"type":"object"}}},"description":""}},"summary":"Create new supplier","tags":["Suppliers"]}},"/suppliers/{supplier_id}":{"delete":{"description":"Deletes a supplier. If there are products associated with the supplier, the products will be disassociated from the supplier.\n\n🔒 Requires: `suppliers:write` scope","operationId":"DeleteSupplierById","parameters":[{"description":"The supplier id.","in":"path","name":"supplier_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"description":"The id of the supplier deleted.","format":"uuid","type":"string"},"job_id":{"description":"The id of the asynchronous job to disassociate products from the supplier.","type":"string"}},"type":"object"}},"type":"object"}}},"description":"The deleted supplier."}},"summary":"Delete a single supplier","tags":["Suppliers"]},"get":{"description":"Returns a single supplier with a given ID.\n\n🔒 Requires: `suppliers:read` scope","operationId":"GetSupplierByID","parameters":[{"description":"The supplier id","in":"path","name":"supplier_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"id":"06bf537b-c783-11e7-ff13-02d1589727d5","name":"Best supplies"}},"schema":{"$ref":"#/components/schemas/SupplierResponse"}}},"description":""}},"summary":"Get a single supplier","tags":["Suppliers"]},"put":{"description":"Updates a supplier.\n\n🔒 Requires: `suppliers:write` scope","operationId":"UpdateSupplierByID","parameters":[{"description":"The supplier id","in":"path","name":"supplier_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSupplierRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"id":{"description":"The id of the supplier updated.","format":"uuid","type":"string"}},"type":"object"}}},"description":""}},"summary":"Update a supplier","tags":["Suppliers"]}},"/tags":{"get":{"description":"Returns a collection of tags.\n\n🔒 Requires: `products:read` scope","operationId":"ListTags","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagCollection"}},"new":{"example":{"data":[{"id":"a0bb3580-027a-11e4-a0f5-b8ca3a64f8f4","name":"test"},{"id":"a72bb4ec-027a-11e4-a0f5-b8ca3a64f8f4","name":"some_other_tag"},{"id":"b1e2e709-f019-11e3-a0f5-b8ca3a64f8f4","name":"General"}]}}},"description":""}},"summary":"List tags","tags":["Tags"]},"post":{"description":"Creates a new tag.\n\n🔒 Requires: `products:write` scope","operationId":"CreateTag","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"The id of the created tag.","format":"uuid","type":"string"}},"type":"object"}}},"description":""}},"summary":"Create tag","tags":["Tags"]}},"/tags/{tag_id}":{"delete":{"description":"Deletes a tag. If there are products associated with the tag, the products will be disassociated from the tag.\n\n🔒 Requires: `products:write` scope","operationId":"DeleteTagByID","parameters":[{"description":"The tag id.","in":"path","name":"tag_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"properties":{"id":{"description":"The id of the tag deleted.","format":"uuid","type":"string"},"job_id":{"description":"The id of the asynchronous job to disassociate products from the tag.","type":"string"}},"type":"object"}},"type":"object"}}},"description":"The deleted tag."}},"summary":"Delete a single tag","tags":["Tags"]},"get":{"description":"Returns a single tag with a given ID.\n\n🔒 Requires: `products:read` scope","operationId":"GetTagByID","parameters":[{"description":"The tag id.","in":"path","name":"tag_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"id":"a0bb3580-027a-11e4-a0f5-b8ca3a64f8f4","name":"test"}},"schema":{"$ref":"#/components/schemas/TagResponse"}}},"description":""}},"summary":"Get a single tag","tags":["Tags"]},"put":{"description":"Updates a tag.\n\n🔒 Requires: `products:write` scope","operationId":"UpdateTagByID","parameters":[{"description":"The tag id","in":"path","name":"tag_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"description":"The id of the updated tag.","format":"uuid","type":"string"}},"type":"object"}}},"description":""}},"summary":"Update a single tag","tags":["Tags"]}},"/taxes":{"get":{"description":"Returns a paginated list of taxes.\n\n🔒 Requires: `taxes:read` scope","operationId":"ListTaxes","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"deleted_at":null,"display_name":"No Tax","id":"b1cecdf6-f019-11e3-a0f5-b8ca3a64f8f4","is_default":false,"name":"No Tax","rates":[{"display_name":"No Tax","id":"b1cfbc85-f019-11e3-a0f5-b8ca3a64f8f4","name":"No Tax","rate":0}],"version":391487},{"deleted_at":null,"display_name":"GST","id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","is_default":true,"name":"GST","rates":[{"display_name":"GST","id":"b1dfed8b-f019-11e3-a0f5-b8ca3a64f8f4","name":"GST","rate":0.15}],"version":391490},{"deleted_at":null,"display_name":"VAT","id":"dc85058a-a683-11e5-e112-4600acd0096a","is_default":false,"name":"VAT","rates":[{"display_name":"VAT","id":"accff2bf-4600-11e5-8112-dc85058aa69e","name":"VAT","rate":0.2}],"version":478922}]},"schema":{"$ref":"#/components/schemas/TaxCollection"}}},"description":""}},"summary":"List taxes","tags":["Taxes"]},"post":{"description":"Creates a new tax.\n\n🔒 Requires: `taxes:write` scope","operationId":"CreateTax","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaxRequest"}}}},"responses":{"200":{"content":{"application/json":{"example":{"data":{"deleted_at":null,"display_name":"GST","id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","is_default":true,"name":"GST","rates":[{"display_name":"GST","id":"b1dfed8b-f019-11e3-a0f5-b8ca3a64f8f4","name":"GST","rate":0.15}],"version":391490}},"schema":{"$ref":"#/components/schemas/TaxResponse"}}},"description":""}},"summary":"Create tax","tags":["Taxes"]}},"/taxes/{tax_id}":{"get":{"description":"Returns a single tax with a given ID.\n\n🔒 Requires: `taxes:read` scope","operationId":"GetTaxByID","parameters":[{"description":"The tax id.","in":"path","name":"tax_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":{"deleted_at":null,"display_name":"GST","id":"b1d192bc-f019-11e3-a0f5-b8ca3a64f8f4","is_default":true,"name":"GST","rates":[{"display_name":"GST","id":"b1dfed8b-f019-11e3-a0f5-b8ca3a64f8f4","name":"GST","rate":0.15}],"version":391490}},"schema":{"$ref":"#/components/schemas/TaxResponse"}}},"description":""}},"summary":"Get a single tax","tags":["Taxes"]}},"/user":{"get":{"description":"Returns the current user.\n\n🔒 Requires: `users:read` scope","operationId":"GetUser","responses":{"200":{"content":{"application/json":{"example":{"data":[{"account_type":"admin","created_at":"2024-08-11T12:45:44+00:00","deleted_at":null,"display_name":"API User","email":"x-series.api@lightspeedhq.com","email_verified_at":null,"enabled":true,"enabled_mfa":null,"id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","image_source":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","images":{"original":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sl":"https://vendimageuploadcdn.global.ssl.fastly.net/150x150,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sm":"https://vendimageuploadcdn.global.ssl.fastly.net/100x100,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","ss":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","st":"https://vendimageuploadcdn.global.ssl.fastly.net/40x40,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","standard":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","thumb":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg"},"is_primary_user":false,"permissions":["user.add_edit","user.view"],"require_password_change":false,"restricted_outlet_id":null,"restricted_outlet_ids":[],"roles":[{"id":100,"name":"Admin","system_role_id":100}],"rules":{"sale.line_item_discount.manage":{"max_discount":100},"sale.total_sale_discount.manage":{"max_discount":100}},"seen_at":"2024-08-11T23:29:41+00:00","switch_id":"usi:3e4b5edaec24","target_daily":1000,"target_monthly":20000,"target_weekly":5000,"time_until_deletion":null,"updated_at":"2016-04-18T15:32:17+00:00","username":"apiuser","version":5020}]},"schema":{"$ref":"#/components/schemas/UserResponse"}}},"description":""}},"summary":"Get current user","tags":["Users"]}},"/users":{"get":{"description":"Returns a paginated list of users.\n\n🔒 Requires: `users:read` scope","operationId":"ListUsers","parameters":[{"description":"The lower limit for the version numbers to be included in the response.","in":"query","name":"after","schema":{"format":"int64","type":"integer"}},{"description":"The upper limit for the version numbers to be included in the response.","in":"query","name":"before","schema":{"format":"int64","type":"integer"}},{"description":"The maximum number of items to be returned in the response.","in":"query","name":"page_size","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"account_type":"admin","created_at":"2024-08-11T12:45:44+00:00","deleted_at":null,"display_name":"API User","email":"x-series.api@lightspeedhq.com","email_verified_at":null,"enabled":true,"enabled_mfa":null,"id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","image_source":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","images":{"original":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sl":"https://vendimageuploadcdn.global.ssl.fastly.net/150x150,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sm":"https://vendimageuploadcdn.global.ssl.fastly.net/100x100,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","ss":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","st":"https://vendimageuploadcdn.global.ssl.fastly.net/40x40,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","standard":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","thumb":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg"},"is_primary_user":false,"permissions":null,"require_password_change":false,"restricted_outlet_id":null,"restricted_outlet_ids":[],"roles":[{"id":100,"name":"Admin","system_role_id":100}],"rules":{},"seen_at":"2024-08-11T23:29:41+00:00","switch_id":"usi:3e4b5edaec24","target_daily":1000,"target_monthly":20000,"target_weekly":5000,"time_until_deletion":null,"updated_at":"2016-04-18T15:32:17+00:00","username":"apiuser","version":5020}],"version":{"max":3348795492,"min":298969}},"schema":{"$ref":"#/components/schemas/UserCollection"}}},"description":""}},"summary":"List users","tags":["Users"]}},"/users/bulk":{"post":{"description":"Get multiple users by id.\n\n🔒 Requires: `users:read` scope","operationId":"GetUsersById","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUsersByIdsRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"data":[{"account_type":"admin","created_at":"2024-08-11T12:45:44+00:00","deleted_at":null,"display_name":"API User","email":"x-series.api@lightspeedhq.com","email_verified_at":null,"enabled":true,"enabled_mfa":null,"id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","image_source":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","images":{"original":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sl":"https://vendimageuploadcdn.global.ssl.fastly.net/150x150,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sm":"https://vendimageuploadcdn.global.ssl.fastly.net/100x100,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","ss":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","st":"https://vendimageuploadcdn.global.ssl.fastly.net/40x40,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","standard":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","thumb":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg"},"is_primary_user":false,"permissions":null,"require_password_change":false,"restricted_outlet_id":null,"restricted_outlet_ids":[],"roles":[{"id":100,"name":"Admin","system_role_id":100}],"rules":{},"seen_at":"2024-08-11T23:29:41+00:00","switch_id":"usi:3e4b5edaec24","target_daily":1000,"target_monthly":20000,"target_weekly":5000,"time_until_deletion":null,"updated_at":"2016-04-18T15:32:17+00:00","username":"apiuser","version":5020}],"version":{"max":3348795492,"min":298969}},"schema":{"$ref":"#/components/schemas/UserCollection"}}},"description":""}},"summary":"Get multiple users by id","tags":["Users"]}},"/users/{user_id}":{"delete":{"description":"Returns the user that has been deleted.","operationId":"DeleteUserByID","parameters":[{"description":"A valid user id that is not the current user nor a primary admin","in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"account_type":"admin","created_at":"2024-08-11T12:45:44+00:00","deleted_at":"2024-08-12T16:00:03+00:00","display_name":"API User","email":"x-series.api@lightspeedhq.com","email_verified_at":null,"enabled":true,"enabled_mfa":null,"id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","image_source":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","images":{"original":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sl":"https://vendimageuploadcdn.global.ssl.fastly.net/150x150,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sm":"https://vendimageuploadcdn.global.ssl.fastly.net/100x100,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","ss":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","st":"https://vendimageuploadcdn.global.ssl.fastly.net/40x40,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","standard":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","thumb":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg"},"is_primary_user":false,"permissions":null,"require_password_change":false,"restricted_outlet_id":null,"restricted_outlet_ids":[],"roles":[{"id":100,"name":"Admin","system_role_id":100}],"rules":{},"seen_at":"2024-08-11T23:29:41+00:00","switch_id":"usi:3e4b5edaec24","target_daily":1000,"target_monthly":20000,"target_weekly":5000,"time_until_deletion":null,"updated_at":"2016-04-18T15:32:17+00:00","username":"apiuser","version":5020}],"version":{"max":3348795492,"min":298969}},"schema":{"$ref":"#/components/schemas/UserResponse"}}},"description":""},"403":{"content":{"application/json":{"example":{"error":"permission denied"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"example":{"error":"user not found"}}},"description":"Not Found"}},"summary":"Delete a single user","tags":["Users"]},"get":{"description":"Returns a single user with the requested ID.\n\n🔒 Requires: `users:read` scope","operationId":"GetUserByID","parameters":[{"description":"A valid user id","in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"account_type":"admin","created_at":"2024-08-11T12:45:44+00:00","deleted_at":null,"display_name":"API User","email":"x-series.api@lightspeedhq.com","email_verified_at":null,"enabled":true,"enabled_mfa":null,"id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","image_source":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","images":{"original":"https://vendimageuploadcdn.global.ssl.fastly.net/1920,fit/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sl":"https://vendimageuploadcdn.global.ssl.fastly.net/150x150,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","sm":"https://vendimageuploadcdn.global.ssl.fastly.net/100x100,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","ss":"https://vendimageuploadcdn.global.ssl.fastly.net/50x50,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","st":"https://vendimageuploadcdn.global.ssl.fastly.net/40x40,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","standard":"https://vendimageuploadcdn.global.ssl.fastly.net/350,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg","thumb":"https://vendimageuploadcdn.global.ssl.fastly.net/160,fit,q90/vend-images/user/original/1/b/1ba1099aecfbbcbdfc4aa8efb136507f99a3c0d9.jpg"},"is_primary_user":false,"permissions":null,"require_password_change":false,"restricted_outlet_id":null,"restricted_outlet_ids":[],"roles":[{"id":100,"name":"Admin","system_role_id":100}],"rules":{},"seen_at":"2024-08-11T23:29:41+00:00","switch_id":"usi:3e4b5edaec24","target_daily":1000,"target_monthly":20000,"target_weekly":5000,"time_until_deletion":null,"updated_at":"2016-04-18T15:32:17+00:00","username":"apiuser","version":5020}],"version":{"max":3348795492,"min":298969}},"schema":{"$ref":"#/components/schemas/UserResponse"}}},"description":""}},"summary":"Get a single user","tags":["Users"]}},"/users/{user_id}/sale_totals":{"get":{"description":"Returns a single user's sales totals.","operationId":"GetSalesTotalsForUserByID","parameters":[{"description":"A valid user id","in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"example":{"data":[{"cost":0,"date_from":"2024-08-11T12:00:00+00:00","date_to":"2024-08-12T11:59:59+00:00","discounts":0,"label":"today","loyalty":0,"revenue":0,"sale_count":0,"tax":0,"total":0},{"cost":0,"date_from":"2024-07-31T12:00:00+00:00","date_to":"2024-08-12T11:59:59+00:00","discounts":0,"label":"month","loyalty":0,"revenue":0,"sale_count":0,"tax":0,"total":0}]},"schema":{"$ref":"#/components/schemas/UserSaleTotalResponse"}}},"description":""}},"summary":"Get the sales totals for a single user","tags":["Users"]}},"/users/{user_id}/sessions":{"delete":{"description":"Deletes all sessions and personal tokens of the given user.\n\n🔒 Requires: `users:write` scope","operationId":"DeleteSessionsByUserID","parameters":[{"description":"A valid user id","in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"}},"summary":"Delete user sessions","tags":["Users"]}},"/variant_attributes":{"get":{"description":"Retrieve all Variant Attributes.\n\n🔒 Requires: `products:read` scope","operationId":"ListVariantAttributes","parameters":[{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributesListResponse"}}},"description":"The list of variant attributes."}},"summary":"Retrieve all Variant Attributes","tags":["Variant Attributes"]},"post":{"description":"Variant Attributes are required when creating variants. They are used to specify what properties make a particular SKU different to another. e.g. You may\nhave an attribute 'Size' that lets you differentiate variants based on their size.\n\n🔒 Requires: `products:write` scope","operationId":"CreateVariantAttribute","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributeCreateUpdateBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributeCreateResponse"}}},"description":"The created variant attribute."},"422":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Error response. Failed to process variant attribute."}},"summary":"Create a Variant Attribute","tags":["Variant Attributes"]}},"/variant_attributes/{attribute-id}":{"delete":{"description":"Note you can't delete a variant attribute that is currently being used by a family.\n\n🔒 Requires: `products:write` scope","operationId":"DeleteVariantAttribute","parameters":[{"description":"The object identifier of the Variant Attribute to delete.","in":"path","name":"attribute-id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributeDeleteResponse"}}},"description":"The deleted variant attribute."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Error response. Attribute not found."}},"summary":"Delete a variant attribute","tags":["Variant Attributes"]},"get":{"description":"Retrieves a single Variant Attribute with the given id.\n\n🔒 Requires: `products:read` scope","operationId":"GetVariantAttributes","parameters":[{"description":"The object identifier of the Variant Attribute to retrieve.","in":"path","name":"attribute-id","required":true,"schema":{"format":"uuid","type":"string"}},{"description":"Indicates whether deleted items should be included in the response.","in":"query","name":"deleted","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributeResponse"}}},"description":"The variant attribute."}},"summary":"Retrieve a single Variant Attribute","tags":["Variant Attributes"]},"put":{"description":"Updates a Variant Attribute's name.\n\n🔒 Requires: `products:write` scope","operationId":"UpdateVariantAttribute","parameters":[{"description":"The object identifier of the Variant Attribute to update.","in":"path","name":"attribute-id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributeCreateUpdateBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttributeUpdateResponse"}}},"description":"The updated variant attribute."},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Error response. Attribute not found."},"422":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Error response. Failed to process variant attribute."}},"summary":"Update a Variant Attribute's","tags":["Variant Attributes"]}},"/webhooks":{"get":{"description":"List all webhooks.\n\n🔒 Requires: `webhooks` scope","operationId":"get-webhooks","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Webhook"},"type":"array"}},"type":"object"}},"example-1":{"example":{}}},"description":"OK"}},"summary":"List webhooks","tags":["Webhooks"]},"post":{"description":"Create a webhook.\n\n🔒 Requires: `webhooks` scope","operationId":"post-webhooks","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Webhook"}},"type":"object"}}},"description":"Created"},"409":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"A webhook with this type and URL already exists."}},"summary":"Create Webhook","tags":["Webhooks"]}},"/webhooks/{webhookId}":{"delete":{"description":"Delete a webhook\n\n🔒 Requires: `webhooks` scope","operationId":"delete-webhooks-webhookId","parameters":[{"in":"path","name":"webhookId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Not Found"}},"summary":"Delete Webhook","tags":["Webhooks"]},"get":{"description":"Fetch a single webhook by its ID.\n\n🔒 Requires: `webhooks` scope","operationId":"get-webhooks-id","parameters":[{"in":"path","name":"webhookId","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Webhook"}},"type":"object"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Not Found"}},"summary":"Get Webhook","tags":["Webhooks"]},"put":{"description":"Update an existing webhook\n\n🔒 Requires: `webhooks` scope","operationId":"put-webhooks-id","parameters":[{"in":"path","name":"webhookId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/Webhook"}},"type":"object"}}},"description":"OK"},"404":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Not Found"}},"summary":"Update Webhook","tags":["Webhooks"]}},"/workflows/custom_fields":{"get":{"description":"Returns the custom field definitions for a given entity type.\n\n🔒 Requires: `custom_fields:read` scope","operationId":"GetCustomFields","parameters":[{"description":"The entity type.","in":"query","name":"entity","required":true,"schema":{"enum":["sale","line_item","customer","product"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDefinitionCollection"}}},"description":"A list of all the custom field definitions associated with the entity type."}},"summary":"List custom field definitions","tags":["Workflows"]},"post":{"description":"Create a new custom field definition for a given entity type.\n\n🔒 Requires: `custom_fields:write` scope","operationId":"CreateCustomField","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDefinitionParams"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/CustomFieldDefinition"}},"type":"object"}}},"description":"A custom field definition."}},"summary":"Define a new custom field","tags":["Workflows"]}},"/workflows/custom_fields/values":{"get":{"description":"Returns the custom field values for a given entity.\n\n🔒 Requires: `custom_fields:read` scope","operationId":"GetCustomFieldValues","parameters":[{"description":"The entity type.","in":"query","name":"entity","required":true,"schema":{"enum":["sale","line_item","customer","product"],"type":"string"}},{"description":"The entity ID.","in":"query","name":"entity_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldValueCollection"}}},"description":"A list of all the custom field values associated with entity."}},"summary":"List custom field values","tags":["Workflows"]},"post":{"description":"Set new custom field values on a given entity.\n\n🔒 Requires: `custom_fields:write` scope","operationId":"SetCustomFieldValues","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldValuesParams"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldValueCollection"}}},"description":"A list of all the custom field values associated with the entity."}},"summary":"Set new custom field values","tags":["Workflows"]}},"/workflows/custom_fields/{customFieldId}":{"delete":{"description":"Delete a custom field and all the values stored on that field.\n\n🔒 Requires: `custom_fields:write` scope","operationId":"delete-custom-field","parameters":[{"description":"The ID of the custom field that you want deleted.","in":"path","name":"customFieldId","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"The custom field was deleted."}},"summary":"Delete a custom field","tags":["Workflows"]},"put":{"description":"Updates properties on a custom field.\n\n🔒 Requires: `custom_fields:write` scope","operationId":"update-custom-field","parameters":[{"description":"The ID of the custom field that you want to update.","in":"path","name":"customFieldId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomFieldParams"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/CustomFieldDefinition"}},"type":"object"}}},"description":"A custom field definition."}},"summary":"Update a custom field","tags":["Workflows"]}},"/workflows/remote_rules":{"get":{"description":"Returns the remote business rules registered on the retailer.\n\n🔒 Requires: `remote_rules:read` scope","operationId":"get-remote-rules","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RemoteBusinessRule"},"type":"array"}},"required":["data"],"type":"object"}}},"description":"A list of all the remote business rules associated with the retailer."}},"summary":"List remote rules","tags":["Workflows"]},"post":{"description":"Register a new remote rule for the retailer.\n\n🔒 Requires: `remote_rules:write` scope","operationId":"create-remote-rule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteBusinessRuleParams"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/RemoteBusinessRule"}},"type":"object"}}},"description":"A remote business rule."}},"summary":"Create remote rule","tags":["Workflows"]}},"/workflows/remote_rules/{remoteRuleId}":{"delete":{"description":"Delete a remote business rule.\n\n🔒 Requires: `remote_rules:write` scope","operationId":"delete-remote-rule","parameters":[{"description":"The ID of the remote business rules that you want deleted.","in":"path","name":"remoteRuleId","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"The remote business rule was deleted."}},"summary":"Delete a remote rule","tags":["Workflows"]}},"/workflows/rules":{"get":{"description":"Returns the business rules for the retailer.\n\n🔒 Requires: `business_rules:read` scope","operationId":"get-rules","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/BusinessRule"},"type":"array"}},"type":"object"}}},"description":"A list of all the business rules associated with the retailer."}},"summary":"List rules","tags":["Workflows"]},"post":{"description":"Create a rule for the retailer.\n\n🔒 Requires: `business_rules:write` scope","operationId":"create-rule","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessRuleParams"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"$ref":"#/components/schemas/BusinessRule"}},"type":"object"}}},"description":"A business rule."}},"summary":"Create rule","tags":["Workflows"]}},"/workflows/rules/{ruleId}":{"delete":{"description":"Delete a business rule.\n\n🔒 Requires: `business_rules:write` scope","operationId":"delete-rule","parameters":[{"description":"The ID of the business rules that you want deleted.","in":"path","name":"ruleId","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"The business rule was deleted."}},"summary":"Delete a business rule","tags":["Workflows"]}}},"components":{"schemas":{"Action":{"description":"Action triggered by a promotion.","properties":{"exclude":{"items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"include":{"items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"max_quantity":{"description":"Maximum quantity, if required by the action type.","type":"integer"},"min_quantity":{"description":"Minimum quantity, if required by the action type.","type":"integer"},"quantity":{"description":"Quantity, if required by the action type.","type":"integer"},"type":{"description":"The type of action.","enum":["basic_percent_discount","basic_fixed_discount","fixed_discount","percent_discount","loyalty","fixed_price_discount","fixed_pool_discount","percent_pool_discount"],"type":"string"},"value":{"description":"Value associated with the action.","format":"double","type":"number"}},"required":["type","value"],"title":"Action","type":"object"},"Adjustment":{"description":"An adjustment contains a modification to the sale price. For example, it can be a service fee (fee when the customer pays by credit card) or a discount.\nThe types defined here are the one used so far, but we reserve the right to add others.","properties":{"adjustment_type":{"description":"Type of the adjustment.","enum":["NON_CASH_FEE","DISCOUNT","TIP","SURCHARGE","ECOM_CUSTOM_CHARGE"],"type":"string"},"name":{"type":"string"},"tax_components":{"description":"Collection of aggregated tax components associated with the adjustment.","items":{"$ref":"#/components/schemas/LineItemTaxComponent"},"type":"array"},"value":{"description":"Aggregated total value of the adjustment.","type":"number"}},"required":["name","type","value"],"title":"Adjustment","type":"object"},"AdjustmentAmount":{"properties":{"type":{"description":"The value type of the adjustment.","enum":["FIXED","PERCENT"],"type":"string"},"value":{"description":"The value of the adjustment.","type":"string"}},"required":["type","value"],"title":"Adjustment Amount","type":"object"},"AdjustmentSource":{"properties":{"id":{"description":"The ID of the source of the adjustment.","format":"uuid","type":"string"}},"title":"Adjustment Source","type":"object"},"AdjustmentTarget":{"properties":{"ids":{"description":"An array of target IDs.","items":{"format":"uuid","type":"string"},"type":"array"},"method":{"description":"The method of the adjustment.","enum":["PROPORTIONED","EACH","SINGLE"],"type":"string"}},"required":["method"],"title":"Adjustment Target","type":"object"},"Attribute":{"properties":{"key":{"description":"The key for the attribute.","type":"string"},"value":{"description":"The value for the attribute.","type":"string"}},"title":"Attribute","type":"object"},"AuditLogEvent":{"description":"The structure of the event and security event model","properties":{"action":{"description":"The type of the action performed on the object.","enum":["insert","update","delete"],"type":"string"},"created_at":{"description":"The timestamp indicating when the event was persisted to the audit log.","format":"date-time","type":"string"},"data":{"description":"An object in JSON format representing the new values of the attributes that were changed by the event.","oneOf":[{"type":"object"},{"items":{"type":"object"},"type":"array"}]},"entity_id":{"description":"The id of the object involved in the event","maxLength":36,"type":"string"},"id":{"description":"Autogenerated object identifier.","type":"string"},"ip_address":{"description":"The ip address from which the request causing the event originated.","format":"ipv4","maxLength":64,"type":"string"},"occurred_at":{"description":"The timestamp indicating when the action causing the event occurred.","format":"date-time","type":"string"},"old_data":{"description":"An object in JSON format representing the old values of the attributes that were changed by the event.","type":"object"},"type":{"description":"The type of the object involved in the event. This may be something like \"security\" for security events or the name of the table the action was performed on, like \"vend_customer\".","maxLength":64,"type":"string"},"user_agent":{"description":"User agent of the http client which submitted the request.","maxLength":500,"type":"string"},"user_id":{"description":"The `id` of the user executing the action registered by this event.","maxLength":36,"type":"string"}},"title":"Audit Log Event","type":"object","x-examples":{"example-1":{"action":"insert","created_at":"2019-08-24T14:15:22Z","data":{},"entity_id":"string","id":"string","ip_address":"192.168.0.1","occurred_at":"2019-08-24T14:15:22Z","old_data":{},"type":"string","user_agent":"string","user_id":"string"}}},"BaseSupplier":{"properties":{"contact":{"description":"Contact information for the supplier.","properties":{"company_name":{"description":"The name of the supplier company. This field is defaulted to the supplier name if not provided.","type":"string"},"email":{"description":"The contact email of the supplier.","type":"string"},"fax":{"description":"Fax number of the supplier.","type":"string"},"first_name":{"description":"The firstname of the contact person.","type":"string"},"last_name":{"description":"The last name of the contact person.","type":"string"},"mobile":{"description":"Mobile contact number of the supplier.","type":"string"},"phone":{"description":"Physical contact number of the supplier.","type":"string"},"physical_address1":{"description":"Line 1 address of the supplier's physical address.","type":"string"},"physical_address2":{"description":"Line 2 address of the supplier's physical address.","type":"string"},"physical_city":{"description":"City of the supplier's physical address.","type":"string"},"physical_country_id":{"description":"ID of the country of the supplier's physical address.","type":"string"},"physical_postcode":{"description":"Postcode of the supplier's physical address.","type":"string"},"physical_state":{"description":"State of the supplier's physical address.","type":"string"},"physical_suburb":{"description":"Suburb of the supplier's physical address.","type":"string"},"postal_address1":{"description":"Line 1 address of the supplier's postal address.","type":"string"},"postal_address2":{"description":"Line 2 address of the supplier's postal address.","type":"string"},"postal_city":{"description":"City of the supplier's postal address.","type":"string"},"postal_country_id":{"description":"ID of the country of the supplier's postal address.","type":"string"},"postal_postcode":{"description":"Postcode of the supplier's postal address.","type":"string"},"postal_state":{"description":"State of the supplier's postal address.","type":"string"},"postal_suburb":{"description":"Suburb of the supplier's postal address.","type":"string"},"twitter":{"description":"Twitter handle of the supplier contact.","type":"string"},"website":{"description":"The website address of the supplier","type":"string"}},"type":"object"},"default_markup":{"description":"This is used for record-keeping purposes and it does not have any effect on your products.","type":"number"},"description":{"description":"The Supplier description.","type":"string"},"name":{"description":"The Supplier name.","type":"string"}},"title":"BaseSupplier","type":"object"},"BasketProductResponse":{"description":"Per-line-item product pricing result returned by the basket endpoint.","properties":{"adjustments":{"description":"List of price adjustments applied to this product.","items":{"properties":{"amount":{"description":"Monetary amount of the adjustment (decimal string).","type":"string"},"description":{"description":"Human-readable description of the adjustment.","type":"string"},"id":{"description":"The adjustment ID.","type":"string"},"label":{"description":"Short label for the adjustment.","type":"string"},"type":{"description":"The adjustment type (e.g. promotion, discount).","type":"string"},"value":{"description":"Adjustment rate or value (decimal string).","type":"string"}},"required":["type","id","label","description","value","amount"],"type":"object"},"type":"array"},"final_price":{"description":"Final unit price after all adjustments (decimal string).","type":"string"},"final_tax":{"description":"Final unit tax after all adjustments (decimal string).","type":"string"},"id":{"description":"The product ID.","type":"string"},"loyalty_value":{"description":"Loyalty value earned for this product (decimal string).","type":"string"},"original_price":{"description":"Original unit price before adjustments (decimal string).","type":"string"},"original_tax":{"description":"Original unit tax before adjustments (decimal string).","type":"string"}},"required":["id","original_price","original_tax","final_price","final_tax","adjustments","loyalty_value"],"title":"BasketProductResponse","type":"object"},"BasketRequest":{"properties":{"conditions":{"description":"Contextual conditions affecting pricing and promotions.\n","items":{"oneOf":[{"type":"string"},{"items":{"type":"object"},"type":"array"},{"type":"object"}],"properties":{"type":{"description":"Condition type.","enum":["channel","customer_group","customer_id","promo_code","outlet_id","tax_removal","sale_discount","price_overrides","line_item_discount_percentages","credit_redemption"],"type":"string"},"value":{"description":"Value shape depends on `type`: - `channel`: string (channel ID) - `customer_group`: string (customer group ID) - `customer_id`: string (customer ID) - `promo_code`: string (promo code) - `outlet_id`: string (outlet ID) - `tax_removal`: array of TaxRemoval objects - `sale_discount`: SaleDiscountCondition object - `price_overrides`: array of PriceOverride objects - `line_item_discount_percentages`: array of LineItemDiscountPercentage objects - `credit_redemption`: array of CreditRedemption objects\n"}},"required":["type","value"],"type":"object"},"minItems":1,"type":"array"},"config":{"properties":{"advanced_promotion":{"default":false,"description":"Enable advanced promotion engine.","type":"boolean"},"disable_promotions":{"default":false,"description":"Disable all promotion calculations.","type":"boolean"},"resolve_tax":{"default":false,"description":"Resolve tax rates from the outlet configuration instead of requiring tax_rate on each product. Requires an outlet_id condition.\n","type":"boolean"}},"type":"object"},"items":{"description":"Line items in the basket. At least one required.","items":{"properties":{"id":{"description":"Unique line item ID within this basket.","type":"string"},"product":{"properties":{"id":{"description":"Product ID.","type":"string"},"quantity":{"description":"Quantity (decimal string). Must be positive.\n","example":"2.000","type":"string"},"tax_rate":{"description":"Tax rate as a decimal (e.g. \"0.15\" for 15%). Required unless config.resolve_tax=true. Must be positive.\n","type":"string"}},"required":["id","quantity"],"type":"object"}},"required":["id","product"],"type":"object"},"minItems":1,"type":"array"},"request_id":{"description":"Optional client-supplied idempotency ID. Echoed back in the response.","type":"string"},"sale_channel":{"description":"Sale channel. `Register` = in-store, `Ecommerce` = online. Null if not applicable.\n","enum":["Register","Ecommerce"],"nullable":true,"type":"string"}},"required":["items","conditions"],"type":"object"},"BasketResponse":{"properties":{"credit_redemption":{"nullable":true,"properties":{"loyalty_points_spent":{"description":"Loyalty points redeemed (decimal string).","type":"string"},"store_credit_spent":{"description":"Store credit redeemed (decimal string).","type":"string"},"warnings":{"items":{"additionalProperties":true,"description":"Non-fatal warning about an item or discount calculation.","type":"object"},"type":"array"}},"type":"object"},"items":{"items":{"properties":{"id":{"type":"string"},"product":{"$ref":"#/components/schemas/BasketProductResponse"},"quantity":{"description":"Decimal string.","type":"string"},"tax_components":{"items":{"properties":{"rate_id":{"type":"string"},"total":{"description":"Tax amount for this component (decimal string).","type":"string"}},"type":"object"},"type":"array"},"tax_id":{"type":"string"},"total_discount":{"description":"Total discount applied (decimal string).","type":"string"},"total_price":{"description":"Total price after adjustments (decimal string).","type":"string"},"total_tax":{"description":"Total tax amount (decimal string).","type":"string"},"warning":{"additionalProperties":true,"description":"Non-fatal warning about an item or discount calculation.","nullable":true,"type":"object"}},"required":["id","product","quantity","total_price","total_tax","total_discount","tax_id","tax_components"],"type":"object"},"type":"array"},"potential_promotions":{"description":"Promotions that could apply if additional conditions were met.","items":{"properties":{"action":{"description":"Action applied when the promotion triggers.","nullable":true,"type":"object"},"condition":{"description":"Criteria that must be met to trigger this promotion.","type":"object"},"description":{"type":"string"},"end_time":{"format":"date-time","nullable":true,"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"start_time":{"format":"date-time","type":"string"}},"type":"object"},"type":"array"},"promo_code_validations":{"description":"Validation result for each promo_code condition supplied.","items":{"$ref":"#/components/schemas/PromoCodeValidation"},"type":"array"},"request_id":{"description":"Echoed from the request.","type":"string"},"sale_discount":{"nullable":true,"properties":{"amount":{"description":"Discount amount applied (decimal string).","type":"string"},"discount_product_id":{"type":"string"},"tax":{"description":"Tax portion of the discount (decimal string).","type":"string"},"tax_components":{"items":{"properties":{"rate_id":{"type":"string"},"total":{"description":"Tax amount for this component (decimal string).","type":"string"}},"type":"object"},"type":"array"},"tax_id":{"type":"string"},"warning":{"additionalProperties":true,"description":"Non-fatal warning about an item or discount calculation.","nullable":true,"type":"object"}},"type":"object"},"taxes":{"description":"Aggregated tax breakdown across the basket.","items":{"$ref":"#/components/schemas/BasketTaxResponse"},"type":"array"},"totals":{"properties":{"amount":{"description":"Total amount payable (decimal string).","type":"string"},"remaining_sale_balance":{"description":"Remaining balance after credit/loyalty redemptions (decimal string).\n","type":"string"},"tax":{"description":"Total tax across all items (decimal string).","type":"string"}},"required":["tax","amount","remaining_sale_balance"],"type":"object"}},"required":["items","potential_promotions","promo_code_validations","taxes","totals"],"type":"object"},"BasketTaxResponse":{"description":"Aggregated tax entry in the basket response.","properties":{"id":{"description":"The tax ID.","type":"string"},"name":{"description":"Tax name.","type":"string"},"rate":{"description":"Tax rate (decimal string, e.g. \"0.15\" for 15%).","type":"string"},"tax":{"description":"Total tax amount for this tax group (decimal string).","type":"string"}},"required":["id","tax","name","rate"],"title":"BasketTaxResponse","type":"object"},"Brand":{"properties":{"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"description":{"description":"The brand description.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"description":"The brand name.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["name"],"title":"Brand","type":"object"},"BrandBase":{"properties":{"description":{"description":"The brand description.","type":"string"},"name":{"description":"The Brand name.","type":"string"}},"required":["name"],"title":"Brand","type":"object"},"BrandCollection":{"properties":{"data":{"description":"An array of Brand objects wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Brand"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Brand Collection","type":"object"},"BrandResponse":{"properties":{"data":{"$ref":"#/components/schemas/Brand"}},"title":"Brand Response","type":"object"},"BrandSample":{"properties":{"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Brand Sample","type":"object"},"BusinessRule":{"properties":{"created_at":{"description":"The creation timestamp in UTC.","format":"date-time","readOnly":true,"type":"string"},"event_type":{"enum":["sale.ready_for_payment","sale.line_items.added","sale.customer.changed","sale.created","sale.updated"],"type":"string"},"id":{"example":"1239349747718000640","readOnly":true,"type":"string"},"remote_rule_id":{"example":"1239349157873029120","type":"string"}},"required":["event_type","remote_rule_id"],"title":"Business Rule","type":"object"},"BusinessRuleParams":{"description":"The parameters that can be passed to the create rule API.","properties":{"event_type":{"enum":["sale.ready_for_payment","sale.line_items.added","sale.customer.changed","sale.created","sale.updated"],"type":"string"},"remote_rule_id":{"example":"1239349157873029120","type":"string"}},"required":["event_type","remote_rule_id"],"title":"Rule Parameters","type":"object"},"ButtonLayout":{"properties":{"deletedAt":{"format":"date-time","nullable":true,"type":"string"},"id":{"description":"Autogenerated object identifier.","type":"string"},"name":{"description":"The name of the button layout.","type":"string"},"nodes":{"description":"The nodes that make up the button layout.","items":{"$ref":"#/components/schemas/ButtonLayoutNode"},"type":"array"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["id","name","nodes","version"],"type":"object"},"ButtonLayoutCollection":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ButtonLayout"},"type":"array"},"pagination":{"$ref":"#/components/schemas/PaginationMetadata"},"version":{"$ref":"#/components/schemas/Version"}},"required":["data","version"],"type":"object"},"ButtonLayoutNode":{"properties":{"attributes":{"description":"The attributes associated with this node.","items":{"$ref":"#/components/schemas/ButtonLayoutNodeAttribute"},"type":"array"},"id":{"description":"Autogenerated object identifier.","type":"string"},"parentNodeId":{"description":"The ID of the parent node, if applicable.","format":"uuid","nullable":true,"type":"string"},"position":{"description":"The position of the node within its parent.","type":"integer"},"productId":{"description":"The product ID associated with this node, if applicable.","nullable":true,"type":"string"}},"required":["id","position","attributes"],"type":"object"},"ButtonLayoutNodeAttribute":{"properties":{"key":{"description":"The attribute key.","type":"string"},"value":{"description":"The attribute value.","type":"string"}},"required":["key","value"],"type":"object"},"Card":{"properties":{"brand":{"type":"string"},"fingerprint":{"type":"string"},"last_four":{"type":"string"},"type":{"type":"string"}},"type":"object"},"CardDetails":{"properties":{"auth_code":{"type":"string"},"auth_result":{"type":"string"},"card":{"$ref":"#/components/schemas/Card"},"entry_method":{"enum":["SWIPED","KEYED","CONTACTLESS","EMV","UNKNOWN","CHIP","FALLBACK","CONTACTLESSMSD"],"type":"string"}},"type":"object"},"Channel":{"description":"An object representing a single channel.","properties":{"channel_type":{"description":"The type of channel this is.","enum":["woocommerce"],"type":"string"},"created_at":{"description":"An RFC3339 representation of the time at which the channel was created.","format":"date-time","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"inventory_outlet_ids":{"description":"IDs of the outlets that count towards inventory.","items":{"minLength":1,"type":"string"},"type":"array"},"payment_type_id":{"description":"The payment type id that sale payments will be associated to.","type":"string"},"products_last_imported_at":{"description":"An RFC3339 representation of the time at which products were last imported.","format":"date-time","type":"string"},"register_id":{"description":"The register id that sales will be associated to.","type":"string"},"sales_last_imported_at":{"description":"An RFC3339 representation of the time at which sales were last imported.","format":"date-time","type":"string"},"store_url":{"description":"The store identifier.","type":"string"}},"required":["channel_type","id","inventory_outlet_ids","payment_type_id","products_last_imported_at","register_id","sales_last_imported_at","store_url"],"title":"Channel","type":"object"},"ChannelCollectionResponse":{"description":"A collection of channel records wrapped in a top-level data object.","properties":{"data":{"items":{"$ref":"#/components/schemas/Channel"},"type":"array"}},"title":"Channels response","type":"object"},"Composite":{"properties":{"product_id":{"description":"The ID of the component product.","format":"uuid","type":"string"},"quantity":{"description":"The quantity of the component product.","type":"number"}},"title":"Composite","type":"object"},"Condition":{"description":"A condition to determine whether a promotion should apply to a sale.","properties":{"exclude":{"items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"include":{"items":{"$ref":"#/components/schemas/Filter"},"type":"array"},"max_quantity":{"description":"Minimum quantity, if required by the condition type.","type":"integer"},"min_price":{"description":"Minimum price, if required by the condition type.","format":"double","type":"number"},"min_quantity":{"description":"Minimum quantity, if required by the condition type.","type":"integer"},"quantity":{"description":"Quantity, if required by the condition type.","type":"integer"},"type":{"description":"Condition type.","enum":["product_set","sale_price"],"type":"string"}},"title":"Condition","type":"object"},"Consignment":{"properties":{"consignment_date":{"description":"11-28T19:02:15+00:00 (timestamp) - Consignment creation date.","type":"string"},"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"due_at":{"description":"11-30T19:08:541+00:00 (timestamp) - Due date.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"name":{"description":"Tue 29 Nov 2016 (string) - Consignment name. For orders, the note field in the UI will be the name value.","type":"string"},"outlet_id":{"description":"A valid ID of an outlet where stock will be received.","format":"uuid","type":"string"},"received_at":{"description":"11-30T19:08:541+00:00 (timestamp) - The date when consignment was received.","nullable":true,"type":"string"},"reference":{"description":"Order number.+ `total_count_gain` (number)","nullable":true,"type":"string"},"source_outlet_id":{"description":"A valid ID of an outlet where stock will come from. **Stock transfers only**.","format":"uuid","nullable":true,"type":"string"},"status":{"description":"* Supplier Order: One of `OPEN`, `SENT`, `DISPATCHED`, `RECEIVED`, `CANCELLED`\n* Outlet Transfer: One of `OPEN`, `SENT`, `RECEIVED`, `CANCELLED`\n* Return Order: One of `OPEN`, `SENT`, `CANCELLED`\n* Stocktake: One of `STOCKTAKE_SCHEDULED`, `STOCKTAKE_IN_PROGRESS`, `STOCKTAKE_IN_PROGRESS_PROCESSED`, `STOCKTAKE_COMPLETE`, `CLOSED`, `CANCELLED`\nThis is not a definitive list and may be extended in future\n","enum":["OPEN","SENT","DISPATCHED","RECEIVED","STOCKTAKE_IN_PROGRESS","STOCKTAKE_SCHEDULED","STOCKTAKE_IN_PROGRESS_PROCESSED","STOCKTAKE_COMPLETE","CLOSED","CANCELLED"],"type":"string"},"supplier_id":{"description":"a valid supplier ID.","format":"uuid","nullable":true,"type":"string"},"supplier_invoice":{"description":"Supplier invoice number.","nullable":true,"type":"string"},"total_cost_gain":{"description":"The cost of items over the expected level.","format":"double","nullable":true,"type":"number"},"total_cost_loss":{"description":"The cost of items below the expected level.","format":"double","nullable":true,"type":"number"},"total_count_gain":{"description":"The number of items over the expected level.","format":"double","nullable":true,"type":"number"},"total_count_loss":{"description":"The number of items below the expected level.","format":"double","nullable":true,"type":"number"},"type":{"description":"One of `SUPPLIER`, `OUTLET`, `STOCKTAKE`, `RETURN`.","enum":["SUPPLIER","OUTLET","STOCKTAKE","RETURN"],"type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["name","outlet_id","type"],"title":"Consignment","type":"object"},"ConsignmentProduct":{"properties":{"cost":{"description":"The cost of the item.","nullable":true,"type":"string"},"count":{"description":"Expected item count.","nullable":true,"type":"string"},"created_at":{"description":"The creation timestamp in UTC.","type":"string"},"deleted_at":{"description":"The deletion timestamp in UTC.","nullable":true,"type":"string"},"is_included":{"description":"Indicated whether the item was included via a filter. Can be `null`. For full count (no filters) always `true`.","type":"boolean"},"product_id":{"description":"The ID of the product.","format":"uuid","type":"string"},"product_sku":{"description":"The SKU of the product.","nullable":true,"type":"string"},"received":{"description":"Observed item count.","type":"string"},"status":{"description":"The status of the item. One of: `PENDING`, `SUCCESS`.","type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["product_id"],"title":"Consignment Product","type":"object"},"ConsignmentProductCollection":{"properties":{"data":{"description":"An array of consignment products.","items":{"$ref":"#/components/schemas/ConsignmentProduct"},"type":"array"}},"title":"Consignment Product Collection","type":"object"},"ConsignmentProductRequest":{"properties":{"data":{"$ref":"#/components/schemas/ConsignmentProduct"}},"required":["data"],"title":"Consignment Product Request","type":"object"},"ConsignmentProductResponse":{"properties":{"data":{"$ref":"#/components/schemas/ConsignmentProductCollection"}},"required":["data"],"title":"Consignment Product Response","type":"object"},"ConsignmentRequest":{"properties":{"data":{"$ref":"#/components/schemas/Consignment"}},"title":"Consignment Request","type":"object"},"ConsignmentResponse":{"properties":{"data":{"$ref":"#/components/schemas/Consignment"}},"title":"Consignment Response","type":"object"},"ConsignmentTotalsResponse":{"properties":{"data":{"items":{"properties":{"total_received_cost":{"type":"string"},"total_received_count":{"type":"string"},"total_sent_cost":{"type":"string"},"total_sent_count":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"CreateSupplierRequest":{"allOf":[{"$ref":"#/components/schemas/BaseSupplier"}],"required":["name"],"title":"CreateSupplierRequest"},"CreateTagRequest":{"properties":{"name":{"description":"The Tag name.","type":"string"}},"required":["name"],"title":"CreateTagRequest","type":"object"},"CreateTaxRequest":{"properties":{"clothing_footwear_exemption":{"description":"Whether the tax is exempt for clothing and footwear. This is applicable for tax exclusive retailers only.","type":"boolean"},"clothing_footwear_threshold_value":{"description":"The threshold value for clothing and footwear exemption. This is applicable for tax exclusive retailers only.","format":"double","type":"number"},"name":{"description":"The Tax name.","type":"string"},"rate":{"description":"The Tax rate percentage.","format":"double","type":"number"},"tax_over_threshold":{"description":"Whether the tax applies over the threshold. This is applicable for tax exclusive retailers only.","type":"boolean"}},"required":["name","rate"],"title":"CreateTaxRequest","type":"object"},"CustomFieldDefinition":{"description":"The type, name, and configuration of a custom field.","properties":{"created_at":{"description":"The creation timestamp in UTC.","format":"date-time","readOnly":true,"type":"string"},"editable_in_ui":{"description":"Is this custom field be editable in the UI.","type":"boolean"},"entity":{"description":"The type of entity.","enum":["sale","line_item","customer","product"],"type":"string"},"id":{"example":"1239349157873029120","readOnly":true,"type":"string"},"name":{"example":"my_custom_field","type":"string"},"title":{"example":"My Custom Field","type":"string"},"type":{"description":"The type of the value to be stored using this custom field.","enum":["string","integer","boolean","date","product_id","qrcode","string_array"],"type":"string"},"visible_in_ui":{"description":"Is this custom field visible in the UI.","type":"boolean"}},"title":"Custom Field Definition","type":"object"},"CustomFieldDefinitionCollection":{"description":"The fields returned by the custom fields definition list API.","properties":{"data":{"description":"An array of Custom Field Definitions.","items":{"$ref":"#/components/schemas/CustomFieldDefinition"},"type":"array"}},"required":["data"],"title":"Custom Field Definition Collection","type":"object"},"CustomFieldDefinitionParams":{"description":"The parameters that can be passed to the create custom field definition API.","properties":{"editable_in_ui":{"default":false,"description":"Should this custom field be editable in the UI.","type":"boolean"},"entity":{"description":"The type of entity.","enum":["sale","line_item","customer","product"],"type":"string"},"name":{"example":"my_custom_field","type":"string"},"print_on_receipt":{"default":false,"description":"Should this custom field be printed on receipts.","type":"boolean"},"title":{"example":"My Custom Field","type":"string"},"type":{"description":"The type of the value to be stored using this custom field.","enum":["string","integer","boolean","date","product_id","qrcode","string_array"],"type":"string"},"visible_in_ui":{"default":false,"description":"Should this custom field be visible in the UI.","type":"boolean"}},"required":["entity","name","title","type"],"title":"Custom Field Definition Parameters","type":"object"},"CustomFieldValue":{"description":"The value of a custom field on an entity.","properties":{"boolean_value":{"type":"boolean"},"definition_id":{"description":"The ID of the custom field definition associated with this value.","example":"1239349157873029120","readOnly":true,"type":"string"},"integer_value":{"format":"int64","type":"integer"},"name":{"example":"my_custom_field","type":"string"},"string_value":{"type":"string"},"title":{"example":"My Custom Field","type":"string"},"type":{"description":"The type of the value to be stored using this custom field.","enum":["string","integer","boolean","date"],"type":"string"}},"title":"Custom Field Value","type":"object"},"CustomFieldValueCollection":{"description":"The fields returned by the custom field value list API.","properties":{"data":{"description":"An array of Custom Field Values.","items":{"$ref":"#/components/schemas/CustomFieldValue"},"type":"array"}},"required":["data"],"title":"Custom Field Value Collection","type":"object"},"CustomFieldValuesParams":{"description":"The parameters that can be passed to the set custom field values API.","properties":{"entity":{"description":"The entity type.","enum":["sale","line_item","customer","product"],"type":"string"},"entity_id":{"description":"The ID of entity.","format":"uuid","type":"string"},"values":{"description":"The values.","items":{"properties":{"boolean_value":{"type":"boolean"},"integer_value":{"format":"int64","type":"integer"},"name":{"type":"string"},"string_value":{"type":"string"}},"required":["name"],"type":"object"},"type":"array"}},"required":["entity","entity_id","values"],"title":"Custom Field Value Parameters","type":"object"},"Customer":{"properties":{"balance":{"description":"Customer's unpaid balance.","format":"double","type":"number"},"company_name":{"description":"Company name.","nullable":true,"type":"string"},"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"custom_field_1":{"description":"Custom field 1. Can be used to store random data.","nullable":true,"type":"string"},"custom_field_2":{"description":"Custom field 2.","nullable":true,"type":"string"},"custom_field_3":{"description":"Custom field 3.","nullable":true,"type":"string"},"custom_field_4":{"description":"Custom field 4.","nullable":true,"type":"string"},"customer_code":{"description":"Customer code used for claiming loyalty.","type":"string"},"customer_group_id":{"description":"Customer group ID.","type":"string"},"date_of_birth":{"description":"Birthday.","nullable":true,"type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"do_not_email":{"default":false,"description":"Indicates whether the customer opted out of email communications.","type":"boolean"},"email":{"description":"Customer's email address.","nullable":true,"type":"string"},"enable_loyalty":{"type":"boolean"},"enable_promotional_sms":{"default":false,"description":"Indicates whether the customer opted in to SMS communications.","type":"boolean"},"fax":{"description":"Fax no.","nullable":true,"type":"string"},"first_name":{"description":"Customer's first name.","nullable":true,"type":"string"},"gender":{"description":"Customer's gender. Can be `M`, `F` or null.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"last_name":{"description":"Customer 's last name.","nullable":true,"type":"string"},"loyalty_balance":{"description":"Customer's loyalty balance.","format":"double","type":"number"},"mobile":{"description":"Mobile phone no.","nullable":true,"type":"string"},"name":{"deprecated":true,"description":"Customers full name. **deprecated**","nullable":true,"type":"string"},"note":{"description":"Customer note.","nullable":true,"type":"string"},"on_account_limit":{"description":"Customer's OnAccount Limit.","format":"double","nullable":true,"type":"number"},"phone":{"description":"Phone no.","nullable":true,"type":"string"},"physical_address_1":{"description":"Physical address, line 1.","nullable":true,"type":"string"},"physical_address_2":{"description":"Physical address, line 2.","nullable":true,"type":"string"},"physical_city":{"description":"Physical address, city.","nullable":true,"type":"string"},"physical_country_id":{"description":"Physical address, country code.","nullable":true,"type":"string"},"physical_postcode":{"description":"Physical address, post code.","nullable":true,"type":"string"},"physical_state":{"description":"Physical address, state.","nullable":true,"type":"string"},"physical_suburb":{"description":"Physical address, suburb.","nullable":true,"type":"string"},"postal_address_1":{"description":"Postal address, line 1.","nullable":true,"type":"string"},"postal_address_2":{"description":"Postal address, line 2.","nullable":true,"type":"string"},"postal_city":{"description":"Postal address, city.","nullable":true,"type":"string"},"postal_country_id":{"description":"Postal address, country code.","nullable":true,"type":"string"},"postal_postcode":{"description":"Postal address, post code.","nullable":true,"type":"string"},"postal_state":{"description":"Postal address, state.","nullable":true,"type":"string"},"postal_suburb":{"description":"Postal address, suburb.","nullable":true,"type":"string"},"tax_id":{"description":"Customer's tax ID.","nullable":true,"type":"string"},"twitter":{"description":"Twitter handle.","nullable":true,"type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"},"website":{"description":"Website URL.","nullable":true,"type":"string"},"year_to_date":{"description":"Customer's spending this year.","format":"double","type":"number"}},"required":["first_name","last_name"],"title":"Customer","type":"object"},"CustomerAddress":{"properties":{"address_line_1":{"description":"Primary address line (street address, P.O. box, etc.).","maxLength":50,"type":"string"},"address_line_2":{"description":"Secondary address line (apartment, suite, unit, building, floor, etc.).","maxLength":50,"nullable":true,"type":"string"},"city":{"description":"City or town name.","maxLength":28,"type":"string"},"country_code":{"description":"ISO 3166-1 alpha-2 country code (e.g., US, NZ, AU).","type":"string"},"country_name":{"description":"Full country name derived from the country code.","type":"string"},"created_at":{"description":"Creation timestamp in UTC.","format":"date-time","type":"string"},"customer_id":{"description":"The unique identifier of the customer this address belongs to.","format":"uuid","type":"string"},"id":{"description":"Auto-generated address ID.","format":"int64","type":"integer"},"postcode":{"description":"Postal code or ZIP code.","type":"string"},"state":{"description":"State, province, or region name.","maxLength":35,"nullable":true,"type":"string"},"state_code":{"description":"State or province code. Required for US and CA.","nullable":true,"type":"string"},"suburb":{"description":"Suburb or district.","nullable":true,"type":"string"},"type":{"description":"The type of address.","enum":["BILLING","SHIPPING"],"type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","format":"date-time","type":"string"}},"required":["id","customer_id","address_line_1","city","postcode","country_code","type","created_at","updated_at"],"title":"Customer Address","type":"object"},"CustomerAddressBase":{"properties":{"address_line_1":{"description":"Primary address line (street address, P.O. box, etc.).","maxLength":50,"type":"string"},"address_line_2":{"description":"Secondary address line (apartment, suite, unit, building, floor, etc.).","maxLength":50,"nullable":true,"type":"string"},"city":{"description":"City or town name.","maxLength":28,"type":"string"},"country_code":{"description":"ISO 3166-1 alpha-2 country code (e.g., US, NZ, AU).","type":"string"},"postcode":{"description":"Postal code or ZIP code.","type":"string"},"state":{"description":"State, province, or region name.","maxLength":35,"nullable":true,"type":"string"},"state_code":{"description":"State or province code. Required for US and CA.","nullable":true,"type":"string"},"suburb":{"description":"Suburb or district.","nullable":true,"type":"string"},"type":{"description":"The type of address.","enum":["BILLING","SHIPPING"],"type":"string"}},"required":["address_line_1","city","postcode","country_code","type"],"title":"Customer Address Base","type":"object"},"CustomerAddressCollection":{"properties":{"data":{"description":"An array of customer address objects.","items":{"$ref":"#/components/schemas/CustomerAddress"},"type":"array"}},"title":"Customer Address Collection","type":"object"},"CustomerAddressCreateResponse":{"properties":{"data":{"allOf":[{"$ref":"#/components/schemas/CustomerAddress"},{"properties":{"id_token":{"description":"Token to be used when associating this address with a sale.","type":"string"}},"type":"object"}]}},"title":"Customer Address Create Response","type":"object"},"CustomerAddressResponse":{"properties":{"data":{"$ref":"#/components/schemas/CustomerAddress"}},"title":"Customer Address Response","type":"object"},"CustomerBase":{"properties":{"company_name":{"description":"Company name.","nullable":true,"type":"string"},"custom_field_1":{"description":"Custom field 1. Can be used to store random data.","nullable":true,"type":"string"},"custom_field_2":{"description":"Custom field 2.","nullable":true,"type":"string"},"custom_field_3":{"description":"Custom field 3.","nullable":true,"type":"string"},"custom_field_4":{"description":"Custom field 4.","nullable":true,"type":"string"},"customer_code":{"description":"Customer code used for claiming loyalty.","type":"string"},"customer_group_id":{"description":"Customer group ID.","type":"string"},"date_of_birth":{"description":"Birthday.","type":"string"},"do_not_email":{"default":false,"description":"Indicates whether the customer opted out of email communications.","type":"boolean"},"email":{"description":"Customer's email address.","nullable":true,"type":"string"},"enable_loyalty":{"type":"boolean"},"enable_promotional_sms":{"default":false,"description":"Indicates whether the customer opted in to SMS communications.","type":"boolean"},"fax":{"description":"Fax no.","nullable":true,"type":"string"},"first_name":{"description":"Customer's first name.","nullable":true,"type":"string"},"gender":{"description":"Customer's gender. Can be `M`, `F` or null.","nullable":true,"type":"string"},"last_name":{"description":"Customer 's last name.","nullable":true,"type":"string"},"mobile":{"description":"Mobile phone no.","nullable":true,"type":"string"},"note":{"description":"Customer note.","nullable":true,"type":"string"},"on_account_limit":{"description":"Customer's OnAccount Limit.","format":"double","nullable":true,"type":"number"},"phone":{"description":"Phone no.","nullable":true,"type":"string"},"physical_address_1":{"description":"Physical address, line 1.","nullable":true,"type":"string"},"physical_address_2":{"description":"Physical address, line 2.","nullable":true,"type":"string"},"physical_city":{"description":"Physical address, city.","nullable":true,"type":"string"},"physical_country_id":{"description":"Physical address, country code.","nullable":true,"type":"string"},"physical_postcode":{"description":"Physical address, post code.","nullable":true,"type":"string"},"physical_state":{"description":"Physical address, state.","nullable":true,"type":"string"},"physical_suburb":{"description":"Physical address, suburb.","nullable":true,"type":"string"},"postal_address_1":{"description":"Postal address, line 1.","nullable":true,"type":"string"},"postal_address_2":{"description":"Postal address, line 2.","nullable":true,"type":"string"},"postal_city":{"description":"Postal address, city.","nullable":true,"type":"string"},"postal_country_id":{"description":"Postal address, country code.","nullable":true,"type":"string"},"postal_postcode":{"description":"Postal address, post code.","nullable":true,"type":"string"},"postal_state":{"description":"Postal address, state.","nullable":true,"type":"string"},"postal_suburb":{"description":"Postal address, suburb.","nullable":true,"type":"string"},"tax_id":{"description":"Customer's tax ID.","nullable":true,"type":"string"},"twitter":{"description":"Twitter handle.","nullable":true,"type":"string"},"website":{"description":"Website URL.","nullable":true,"type":"string"}},"required":["first_name","last_name"],"title":"Customer Base","type":"object"},"CustomerCollection":{"properties":{"data":{"description":"An array of Customer objects.","items":{"$ref":"#/components/schemas/Customer"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Customer Collection","type":"object"},"CustomerGroup":{"properties":{"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"group_id":{"description":"The customer group identifier.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"description":"The customer group name.","type":"string"},"retailer_id":{"description":"The retailer identifier","type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["name"],"title":"Customer Group","type":"object","x-examples":{"All customers":{"created_at":"2023-04-16T12:44:54+00:00","deleted_at":null,"group_id":"1111111111","id":"28020918-a068-aae4-11e9-cad0d053ea28","name":"All Customers","retailer_id":"00000000-0001-0001-0001-000000000001","updated_at":"2023-04-16T12:44:54+00:00","version":150547}}},"CustomerGroupCollection":{"properties":{"data":{"description":"An array of customer group objects wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/CustomerGroup"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Customer Group Collection","type":"object"},"CustomerGroupResponse":{"properties":{"data":{"$ref":"#/components/schemas/CustomerGroup"}},"title":"Customer Group Response","type":"object"},"CustomerResponse":{"properties":{"data":{"$ref":"#/components/schemas/Customer"}},"title":"Customer Response","type":"object"},"DailyAgenda":{"properties":{"date":{"type":"string"},"minutes_scheduled":{"type":"integer"}},"title":"DailyAgenda","type":"object","x-stoplight":{"id":"o00yf6b09dfpf"}},"DetailedService":{"properties":{"notes":{"$ref":"#/components/schemas/ServiceNote"},"service":{"$ref":"#/components/schemas/ServiceOrder"},"serviceItems":{"$ref":"#/components/schemas/ServiceItems"}},"title":"DetailedService","type":"object","x-stoplight":{"id":"2fu3rgyr0q1gp"}},"DiscountCustomerParam":{"properties":{"customer_group_id":{"description":"Customer group ID","type":"string"}},"title":"Customer applicable to a discount","type":"object"},"DiscountLineItem":{"properties":{"confirmed":{"description":"Whether the line item is confirmed as part of a layby or on account sale.","type":"boolean"},"explicit_loyalty_value":{"description":"Whether loyalty was explicitly set in the product or it just uses the default outlet ratio.","type":"boolean"},"handle":{"description":"Handle.","type":"string"},"id":{"description":"Line item ID.","type":"string"},"loyalty_value":{"description":"The line item's loyalty value","format":"double","type":"number"},"price_adjusted":{"description":"Indicator to suggest that the price has been adjusted manually, such as through a discount.","type":"boolean"},"product_brand_id":{"description":"Product Brand ID.","type":"string"},"product_id":{"description":"Product ID","type":"string"},"product_supplier_id":{"description":"Product Supplier ID.","type":"string"},"product_tag_ids":{"description":"Product Tag IDs.","items":{"type":"string"},"type":"array"},"product_type_id":{"description":"Product Type ID.","type":"string"},"promotion_ids":{"description":"List of promotion IDs applied to this line item.","items":{"type":"string"},"type":"array"},"quantity":{"description":"Quantity of the line item.","type":"integer"},"unit_discount":{"description":"The line item's unit discount","format":"double","type":"number"},"unit_price":{"description":"The unit price for the line item.","format":"double","type":"number"},"unit_tax_discount":{"description":"The line item's unit tax discount","format":"double","type":"number"},"variant_parent_id":{"description":"Product variant parent ID","type":"string"}},"required":["handle","product_brand_id","product_id","product_supplier_id","product_tag_ids","product_type_id","quantity","unit_price","unit_tax_discount"],"title":"Line Item, for use while applying a discount","type":"object"},"DiscountParam":{"properties":{"channel":{"description":"The channel where the sale is coming from","type":"string"},"customer":{"$ref":"#/components/schemas/DiscountCustomerParam"},"is_tax_inclusive":{"description":"Indication whether the sale is tax inclusive or tax exclusive","type":"boolean"},"outlet_id":{"description":"The outlet ID for this sale","type":"string"},"promo_code":{"description":"The promo code to apply to this sale","type":"string"},"sale":{"$ref":"#/components/schemas/DiscountSaleParam"}},"required":["channel","customer","outlet_id","sale"],"title":"DiscountParam consists of a Sale, and related information to check if a promotion applies, and to calculate the discount","type":"object"},"DiscountResponse":{"properties":{"data":{"$ref":"#/components/schemas/DiscountResponseParam"}},"title":"DiscountParam consists of a Sale, and related information to check if a promotion applies, and to calculate the discount","type":"object"},"DiscountResponseParam":{"properties":{"promo_code_validation":{"$ref":"#/components/schemas/PromoCodeValidation"},"promotions":{"items":{"$ref":"#/components/schemas/PromotionDescription"},"type":"array"},"sale":{"$ref":"#/components/schemas/DiscountSaleParam"}},"title":"DiscountParam consists of a Sale, and related information to check if a promotion applies, and to calculate the discount","type":"object"},"DiscountSaleParam":{"properties":{"line_items":{"description":"Collection of line items.","items":{"$ref":"#/components/schemas/DiscountLineItem"},"type":"array"},"sale_date":{"description":"Sale timestamp in UTC.","type":"string"},"total_price":{"description":"Total (tax exclusive) price of the sale","format":"double","type":"number"},"total_tax":{"description":"Total tax.","format":"double","type":"number"}},"required":["line_items","sale_date","total_price","total_tax"],"title":"Sale object for use in a Discount request","type":"object"},"EMV":{"properties":{"aid":{"type":"string"},"application_label":{"type":"string"},"application_preferred_name":{"type":"string"},"cryptogram":{"type":"string"},"cryptogram_type":{"type":"string"},"pin_statement":{"type":"string"},"tags":{"items":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"EcomCustomCharge":{"properties":{"name":{"description":"Display name of eCom custom charge","type":"string"},"source_id":{"description":"Unique identifier of eCom custom charge type","type":"string"},"tax_components":{"description":"Collection of tax components associated with specific eCom custom charge","items":{"$ref":"#/components/schemas/EcomCustomChargeTaxComponent"},"type":"array"},"total":{"description":"Tax exclusive amount for specific eCom custom charge","format":"double","type":"number"},"total_incl":{"description":"Tax exclusive amount for specific eCom custom charge","format":"double","type":"number"},"total_tax":{"description":"Total tax for specific eCom custom charge","format":"double","type":"number"}},"required":["total","total_tax","total_incl","name","tax_components","source_id"],"title":"Ecom Custom Charges","type":"object"},"EcomCustomChargeTaxComponent":{"properties":{"rate_id":{"description":"Tax rate ID.","type":"string"},"total_tax":{"description":"Tax total.","format":"double","type":"number"}},"required":["rate_id","total_tax"],"title":"Ecom Custom Charge Tax Component","type":"object"},"EcomCustomCharges":{"properties":{"charges":{"description":"Collection of eCom custom charges associated with the sale.","items":{"$ref":"#/components/schemas/EcomCustomCharge"},"type":"array"},"total":{"description":"Tax exclusive amount for all eCom custom charges","format":"double","type":"number"},"total_incl":{"description":"Tax exclusive amount for all eCom custom charges","format":"double","type":"number"},"total_tax":{"description":"Total tax for all eCom custom charges","format":"double","type":"number"}},"required":["total","total_tax","total_incl","charges"],"title":"Ecom Custom Charges","type":"object"},"FeatureResolution":{"properties":{"context":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"editable_features":{"items":{"type":"string"},"type":"array"},"features":{"additionalProperties":{"type":"boolean"},"example":{"another_feature":false,"cool_feature":true},"type":"object"}},"required":["features","editable_features"],"type":"object"},"Filter":{"properties":{"field":{"description":"name of the filter field","enum":["brand_id","product_id","supplier_id","tag_id","type_id","variant_parent_id"],"type":"string"},"value":{"description":"value of the filter field","type":"string"}},"required":["field","value"],"title":"Condition Filter","type":"object"},"FulfillLineItemSourceBreakdown":{"description":"Specifies how a fulfillment quantity should be sourced. When provided, all three fields are required and must sum to the parent quantity.","properties":{"quantity_from_not_started":{"description":"Quantity to source from the not-started state.","format":"double","type":"number"},"quantity_from_packed":{"description":"Quantity to source from the packed state.","format":"double","type":"number"},"quantity_from_picked":{"description":"Quantity to source from the picked state.","format":"double","type":"number"}},"required":["quantity_from_picked","quantity_from_packed","quantity_from_not_started"],"type":"object"},"FulfillLineItemsRequest":{"properties":{"line_items":{"description":"The line items to be fulfilled","items":{"$ref":"#/components/schemas/FulfillmentLineItemRequest"},"type":"array"},"version":{"description":"The current version number of the fulfillment.","example":5,"format":"int32","type":"integer"}},"required":["version","line_items"],"type":"object"},"FulfillLineItemsResponse":{"properties":{"data":{"properties":{"id":{"description":"The unique identifier of the fulfillment.","example":"7428951063847291856","type":"string"},"version":{"description":"The new version number of the fulfillment after the update.","example":3,"format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"FulfillSaleRequest":{"properties":{"sale_id":{"description":"The unique identifier of the sale to be fulfilled.","example":"075bbd4b-302a-a27c-11f0-6d3a98056287","format":"uuid","type":"string"}},"required":["sale_id"],"type":"object"},"FulfillSaleResponse":{"properties":{"data":{"description":"A list of the updated fulfillments.","items":{"$ref":"#/components/schemas/FulfillmentResponse"},"type":"array"}},"type":"object"},"Fulfillment":{"properties":{"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"line_items":{"description":"The line items that were fulfilled.","items":{"$ref":"#/components/schemas/FulfillmentLineItem"},"type":"array"},"outlet_id":{"description":"The ID of the outlet that the sale was fulfilled from.","format":"uuid","type":"string"},"sale_id":{"description":"The ID of the sale that was fulfilled.","format":"uuid","type":"string"},"shipping_address_id":{"description":"ID of the shipping address associated with this fulfillment. Only present for SHIPPED fulfillments with a shipping address.","nullable":true,"type":"string"},"status":{"description":"Status of the fulfillment.","enum":["SHIPPED","PICKED_UP"],"type":"string"},"user_id":{"description":"The ID of the user who fulfilled the sale.","format":"uuid","type":"string"}},"title":"Fulfillment","type":"object"},"FulfillmentDetail":{"properties":{"note":{"description":"The fulfillment note for fulfillments of the specified type.","type":"string"},"shipping_address_id":{"description":"The ID of the shipping address to use for DISPATCH fulfillments. Either this or shipping_address_token must be provided for DISPATCH.","nullable":true,"type":"string"},"shipping_address_token":{"description":"The token of a newly created shipping address to use for DISPATCH fulfillments. Either this or shipping_address_id must be provided for DISPATCH.","nullable":true,"type":"string"},"type":{"description":"The fulfillment type to which this fulfillment detail applies.","enum":["DISPATCH","PICKUP"],"type":"string"}},"type":"object"},"FulfillmentLineItem":{"properties":{"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"product_id":{"description":"The ID of a product that was fulfilled.","format":"uuid","type":"string"},"quantity":{"description":"Quantity of product units included in the fulfillment.","type":"string"}},"title":"Fulfillment Line Item","type":"object"},"FulfillmentLineItemRequest":{"properties":{"quantity":{"description":"The quantity to be fulfilled","example":1,"format":"double","type":"number"},"sale_line_item_id":{"description":"The unique identifier of the sale line item to be fulfilled.","example":"f3a8d2c1-9b7e-4f56-8a12-3e4d5c6b7a89","format":"uuid","type":"string"},"source_breakdown":{"$ref":"#/components/schemas/FulfillLineItemSourceBreakdown"}},"required":["sale_line_item_id","quantity"],"type":"object"},"FulfillmentResponse":{"properties":{"id":{"description":"The unique identifier of the fulfillment.","example":"1950523126384443392","type":"string"},"version":{"description":"The new version number of the fulfillment after the update.","example":2,"format":"int32","type":"integer"}},"type":"object"},"FulfillmentSummaryItem":{"properties":{"created_at":{"description":"Timestamp when the item was created","example":"2024-01-15T10:30:00Z","format":"date-time","type":"string"},"id":{"description":"Unique identifier for the fulfillment summary item","example":"1947700198720344064","type":"string"},"line_items":{"items":{"$ref":"#/components/schemas/FulfillmentSummaryLineItem"},"type":"array"},"note":{"description":"Combined notes with newline separators","example":"Customer requested specific pickup time\nHandle with care","type":"string"},"outlet_id":{"description":"Identifier of the outlet","example":"e058ea02-c565-405f-be27-cefaeeca1f92","type":"string"},"sale_id":{"description":"Identifier of the sale","example":"81b37e5f-aa50-4fe3-95d3-a3cec73a7e2c","type":"string"},"shipping_address_id":{"description":"ID of the shipping address associated with this fulfillment. Only present for DISPATCH type fulfillments.","example":"12345678901234567","nullable":true,"type":"string"},"state":{"description":"Current state of the fulfillment","enum":["OPEN","STARTED","PICKED","PACKED","FULFILLED"],"example":"OPEN","type":"string"},"type":{"description":"Type of fulfillment","enum":["PICKUP","DISPATCH","SERVICE"],"example":"PICKUP","type":"string"},"updated_at":{"description":"Timestamp when the item was last updated","example":"2024-01-15T14:20:00Z","format":"date-time","type":"string"},"user_ids":{"description":"List of user IDs associated with this fulfillment","example":["cca2eff2-9d4a-403b-a045-af953b6572b0"],"items":{"type":"string"},"type":"array"},"version":{"description":"Version number for optimistic locking","example":1,"format":"int32","type":"integer"}},"required":["id","outlet_id","sale_id","type","state","user_ids","note","created_at","updated_at","version","line_items"],"type":"object"},"FulfillmentSummaryLineItem":{"properties":{"fulfilled_quantity":{"description":"Quantity that has been fulfilled (decimal as string)","example":"0.00","pattern":"^-?\\d+(\\.\\d+)?$","type":"string"},"packed_quantity":{"description":"Quantity that has been packed (decimal as string)","example":"0.00","pattern":"^-?\\d+(\\.\\d+)?$","type":"string"},"picked_quantity":{"description":"Quantity that has been picked (decimal as string)","example":"0.00","pattern":"^-?\\d+(\\.\\d+)?$","type":"string"},"product_id":{"description":"Identifier of the product","example":"e9d7d1b3-0561-45f5-9e40-c7bfa81db394","type":"string"},"quantity":{"description":"Total quantity (decimal as string)","example":"5.00","pattern":"^-?\\d+(\\.\\d+)?$","type":"string"},"sale_line_item_id":{"description":"Identifier of the sale line item","example":"460e1119-2f41-42a3-bd61-3f9639e2e265","type":"string"}},"required":["sale_line_item_id","product_id","quantity","picked_quantity","packed_quantity","fulfilled_quantity"],"type":"object"},"FulfillmentSummaryResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FulfillmentSummaryItem"},"type":"array"}},"required":["data"],"type":"object"},"FulfillmentsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Fulfillment"},"type":"array"}},"title":"Fulfillments Response","type":"object"},"GenerateTokenResponse":{"properties":{"location":{"description":"The Stripe Terminal location ID associated with the outlet.","type":"string"},"on_behalf_of":{"description":"The Stripe connected account ID the token is issued on behalf of.","type":"string"},"token":{"description":"The Stripe Terminal connection token.","type":"string"}},"required":["location","token"],"type":"object"},"GetUsersByIdsRequest":{"properties":{"user_ids":{"items":{"format":"uuid","type":"string"},"type":"array"}},"required":["user_ids"],"title":"GetUsersByIdsRequest","type":"object"},"GiftCard":{"description":"A gift card with monetary values represented as strings for precision.","properties":{"balance":{"description":"The balance of the gift card, represented as a string for precision.","type":"string"},"created_at":{"description":"The creation timestamp in UTC.","type":"string"},"expires_at":{"description":"The expiry timestamp in UTC.","nullable":true,"type":"string"},"gift_card_transactions":{"description":"An array of Gift Card Transactions.","items":{"$ref":"#/components/schemas/GiftCardTransaction"},"type":"array"},"id":{"description":"Auto-generated object ID.","type":"string"},"number":{"description":"The gift card number.","type":"string"},"sale_id":{"description":"The ID of the sale associated with the gift card creation, if it was created through a register sale. Null if the gift card was created directly via the API.","nullable":true,"type":"string"},"sale_source":{"description":"The source system where the gift card was created (e.g. x-series, e-series).","type":"string"},"status":{"description":"The gift card status.","enum":["ACTIVE","INACTIVE","REDEEMED","VOIDED","EXPIRED"],"type":"string"},"total_redeemed":{"description":"The amount redeemed with this gift card, represented as a string for precision.","type":"string"},"total_sold":{"description":"The amount loaded onto this gift card during activation or reloading, represented as a string for precision.","type":"string"}},"title":"Gift Card","type":"object"},"GiftCardActivationParams":{"description":"The parameters for creating and activating a new gift card.","properties":{"amount":{"description":"The initial balance to be loaded onto the gift card. Represented as a string for precision (e.g. \"100.00\").","type":"string"},"expires_at":{"description":"The expiry date of the gift card in YYYY-MM-DD format. If omitted, the expiry will be calculated based on the validity period configured in the Lightspeed Retail UI, or will be null if expiry is not enabled.","type":"string"},"number":{"description":"The unique number to assign to the gift card.","type":"string"},"time_zone":{"description":"The timezone to use when interpreting the `expires_at` date (e.g. \"Pacific/Auckland\"). See the list of tz database time zones for valid values.","type":"string"},"user_id":{"description":"The ID of the user creating the gift card. If omitted, the authenticated user will be used.","type":"string"}},"required":["amount","number"],"title":"Gift Card Activation Parameters","type":"object"},"GiftCardCollection":{"description":"A paginated list of gift cards.","properties":{"data":{"description":"An array of Gift Cards.","items":{"$ref":"#/components/schemas/GiftCard"},"type":"array"}},"required":["data"],"title":"Gift Card Collection","type":"object"},"GiftCardSingleton":{"description":"A single gift card response.","properties":{"data":{"$ref":"#/components/schemas/GiftCard"}},"required":["data"],"title":"Gift Card Response","type":"object"},"GiftCardTransaction":{"description":"A gift card transaction with the amount represented as a string for precision.","properties":{"amount":{"description":"The transaction amount, represented as a string for precision.","type":"string"},"client_id":{"description":"The client id is a unique transaction identifier. The client must provide this and is normally the transaction id from the client system.","nullable":true,"type":"string"},"created_at":{"description":"The creation timestamp in UTC.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"source":{"description":"The source of the transaction.","type":"string"},"source_id":{"description":"The source id is a unique identifier for the transaction in the source system.","type":"string"},"type":{"description":"The type of transaction.","enum":["ACTIVATION","REDEEMING","IMPORTING","VOIDING","EXPIRING","REVERSING","RELOADING"],"type":"string"},"user_id":{"description":"The user id associated with the transaction.","type":"string"}},"title":"Gift Card Transaction","type":"object"},"GiftCardTransactionParams":{"description":"The parameters for creating a new gift card transaction.","properties":{"amount":{"description":"The transaction amount. Must be negative for REDEEMING transactions and positive for RELOADING transactions.","type":"string"},"client_id":{"description":"A unique transaction identifier for idempotency. The client must provide this and is normally the transaction id from the client system.","type":"string"},"expires_at":{"description":"Optional new expiry date for the gift card in YYYY-MM-DD format. Can be used to extend the gift card's expiry when reloading.","type":"string"},"time_zone":{"description":"The timezone to use when interpreting the `expires_at` date (e.g. \"Pacific/Auckland\"). See the list of tz database time zones for valid values.","type":"string"},"type":{"description":"The type of the transaction.","enum":["REDEEMING","RELOADING"],"type":"string"},"user_id":{"description":"The ID of the user creating the transaction. If omitted, the authenticated user will be used.","type":"string"}},"required":["amount","client_id","type"],"title":"Gift Card Transaction Parameters","type":"object"},"GiftCardTransactionSingleton":{"description":"A single gift card transaction response.","properties":{"data":{"$ref":"#/components/schemas/GiftCardTransaction"}},"required":["data"],"title":"Gift Card Transaction Response","type":"object"},"GlobalPaymentType":{"description":"The global (platform-level) payment type definition associated with a retailer payment type.","properties":{"badge":{"description":"URL of the payment type badge image.","nullable":true,"type":"string"},"category":{"description":"The category of the payment type.","type":"string"},"configuration_url":{"description":"URL for configuring this payment type.","nullable":true,"type":"string"},"description":{"description":"A description of the payment type.","nullable":true,"type":"string"},"header":{"description":"The display header for the payment type.","nullable":true,"type":"string"},"id":{"description":"The global payment type ID.","format":"int64","type":"integer"},"internal":{"description":"Indicates if this is an internal payment type.","type":"boolean"},"logo":{"description":"URL of the payment type logo.","nullable":true,"type":"string"},"name":{"description":"The name of the global payment type.","type":"string"},"online_only":{"description":"Indicates if this payment type is available online only.","type":"boolean"},"platforms":{"description":"The platforms on which this payment type is supported.","items":{"type":"string"},"type":"array"},"referred_inactive":{"description":"Indicates if the payment type was referred but is inactive.","type":"boolean"},"show_banner":{"description":"Indicates if a banner should be shown for this payment type.","type":"boolean"},"subcategory":{"description":"The subcategory of the payment type.","type":"string"},"subtext":{"description":"Additional display text shown below the payment type name.","nullable":true,"type":"string"}},"required":["id","name","internal","platforms","category","subcategory","referred_inactive","show_banner","online_only"],"type":"object"},"Image":{"properties":{"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"position":{"description":"Position of the image in collection of images associated with a product.","format":"double","type":"number"},"product_id":{"description":"The ID of the product this image is associated with.","format":"uuid","type":"string"},"status":{"description":"Status if the image upload processing. Can be `processing`, `uploaded`, `error`.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Image","type":"object"},"ImagePosition":{"properties":{"position":{"description":"New position for the image.","format":"double","type":"number"}},"required":["position"],"title":"Image Position","type":"object"},"ImageResponse":{"properties":{"data":{"$ref":"#/components/schemas/Image"}},"title":"Image Response","type":"object"},"ImageSample":{"properties":{"id":{"description":"Auto-generated object ID.","type":"string"},"url":{"type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Image Sample","type":"object"},"IntegrationSource":{"properties":{"id":{"description":"Integration source ID.","type":"string"},"type":{"description":"Integration source type.","type":"string"}},"title":"Integration Source","type":"object"},"Inventory":{"properties":{"average_cost":{"description":"The average cost of inventory available to sell.","format":"double","nullable":true,"type":"number"},"current_inventory_level":{"description":"Current inventory level.","format":"double","type":"number"},"deleted_at":{"description":"The deletion timestamp in UTC, or null if not deleted.","format":"date-time","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"outlet_id":{"description":"The ID of the outlet associated with this inventory record.","type":"string"},"product_id":{"description":"The ID of the product associated with this inventory record.","type":"string"},"quantity_to_procure":{"description":"Quantity of stock to procure in order to satisfy current fulfilments and service orders.","format":"double","type":"number"},"reorder_amount":{"description":"Amount to be added automatically to a stock order.","format":"double","nullable":true,"type":"number"},"reorder_point":{"description":"The inventory level at which a product should be automatically included in stock orders.","format":"double","nullable":true,"type":"number"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Inventory","type":"object"},"InventoryCollection":{"properties":{"data":{"description":"An array of Inventory records wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Inventory"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Inventory Collection","type":"object"},"InventoryCountItem":{"properties":{"cost":{"description":"The cost of the item.","type":"string"},"count":{"description":"Expected item count.","type":"string"},"created_at":{"description":"The creation timestamp in UTC.","type":"string"},"deleted_at":{"description":"The deletion timestamp in UTC.","type":"string"},"is_included":{"description":"Indicated whether the item was included via a filter. Can be `null`. For full count (no filters) always `true`.","type":"boolean"},"product_id":{"description":"The ID of the product associated with this count item.","format":"uuid","type":"string"},"product_sku":{"type":"string"},"received":{"description":"Observed item count.","type":"string"},"status":{"description":"The status of the item. One of: `PENDING`, `SUCCESS`.","type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["cost","count","created_at","deleted_at","product_id","received","status","updated_at","version"],"title":"Inventory Count Item","type":"object"},"InventoryCountItemResponse":{"properties":{"data":{"$ref":"#/components/schemas/InventoryCountItem"}},"required":["data"],"title":"Inventory Count Item Response","type":"object"},"InventoryLevel":{"properties":{"average_cost":{"description":"The average cost of inventory available to sell.\n\n🔒 Requires: `product:cost:view` scope","format":"double","type":"number"},"brand_id":{"format":"uuid","type":"string"},"current_inventory_level":{"description":"Total inventory available to sell.","format":"double","type":"number"},"location_id":{"format":"uuid","type":"string"},"name":{"type":"string"},"product_id":{"format":"uuid","type":"string"},"product_type_id":{"format":"uuid","type":"string"},"quantity_to_procure":{"description":"Quantity of stock to procure in order to satisfy current fulfilments and service orders.","format":"double","type":"number"},"reorder_amount":{"description":"The quantity of stock to recommend when the reorder point is triggered.","format":"double","type":"number"},"reorder_target":{"description":"The target quantity for reorder point replenishment.","format":"double","type":"number"},"reorder_threshold":{"description":"The inventory level at which the reorder point is triggered.","format":"double","type":"number"},"root_product_id":{"description":"The root product ID of the product's variant family.","format":"uuid","type":"string"},"supplier_id":{"format":"uuid","type":"string"},"total_cost":{"description":"The total cost of inventory available to sell.","format":"double","type":"number"}}},"InventoryLevelsRequest":{"properties":{"group_variants":{"default":false,"description":"If filtering by `root_product_ids` and `group_variants` is true, one aggregated level will be returned\nfor each variant family at each outlet.","type":"boolean"},"include_composites":{"default":false,"description":"Include composite products in the response.","type":"boolean"},"include_inactive":{"default":false,"description":"Include inactive products in the response.","type":"boolean"},"location_ids":{"description":"Optional outlet IDs to filter response by.","items":{"format":"uuid","type":"string"},"maxItems":1000,"type":"array"},"offset":{"default":0,"description":"How many inventory levels to skip.","format":"int64","type":"integer"},"product_ids":{"description":"Optional product IDs to filter response by. Mutually exclusive with `root_product_ids`. When omitted, returns inventory levels for all products.","items":{"format":"uuid","type":"string"},"maxItems":1000,"type":"array"},"root_product_ids":{"description":"Optional root product IDs to filter response by. Mutually exclusive with `product_ids`. When omitted, returns inventory levels for all products.","items":{"format":"uuid","type":"string"},"maxItems":1000,"type":"array"},"size":{"default":100,"description":"How many inventory levels to return.","format":"int64","maximum":10000,"type":"integer"},"sort_direction":{"default":"desc","description":"Whether to sort the response ascending or descending.","enum":["asc","desc"],"type":"string"},"sort_type":{"default":"total_count","description":"Which response field to sort by.","enum":["total_count","total_cost","average_cost","reorder_point","reorder_amount","product_name","created_at"],"type":"string"},"supplier_ids":{"description":"Optional supplier IDs to filter response by.","items":{"format":"uuid","type":"string"},"maxItems":1000,"type":"array"},"to_be_procured_only":{"default":false,"description":"Only include inventory with a positive quantity to procure.","type":"boolean"}}},"InventoryRequest":{"properties":{"after":{"description":"The lower limit for the version numbers to be included in the response.","format":"int64","type":"integer"},"before":{"description":"The upper limit for the version numbers to be included in the response.","format":"int64","type":"integer"},"include_deleted":{"default":false,"description":"Whether to include inventory records for deleted products.","type":"boolean"},"product_id":{"description":"Optional filter to restrict results to the specified product. When combined with variants: true, it's \ntreated as a root product ID and matches all variants of that product; otherwise it matches the exact \nproduct.","format":"uuid","type":"string"},"size":{"default":1000,"description":"The maximum number of inventory records to return.","format":"int64","maximum":5000,"type":"integer"},"sort_direction":{"default":"desc","description":"Whether to sort the response by ascending or descending.","enum":["asc","desc"],"type":"string"},"variants":{"default":false,"description":"When true (and product_id is set), matches all variant products sharing the same root_product_id, rather\nthan just the exact product.","type":"boolean"}}},"InvoiceMetadata":{"properties":{"resolve_number":{"description":"Whether to resolve the invoice number automatically.","type":"boolean"},"sequence":{"description":"Invoice sequence number.","format":"int32","type":"integer"}},"title":"Invoice Metadata","type":"object"},"ItemDetails":{"properties":{"description":{"type":"string"},"initial_condition":{"type":"string"},"item_id":{"type":"string"},"item_name":{"type":"string"},"serial_number":{"type":"string"}},"title":"ItemDetails","type":"object","x-stoplight":{"id":"2fu3rgyr0q1gp"}},"LineItem":{"properties":{"cost":{"description":"Unit cost for the line item.","format":"double","type":"number"},"cost_total":{"description":"Total cost for the line item.","format":"double","type":"number"},"discount":{"description":"Discount value of the line item.","format":"double","type":"number"},"discount_total":{"description":"Total discount for the line item.","format":"double","type":"number"},"id":{"description":"The ID of this line item.","format":"uuid","type":"string"},"is_return":{"description":"Indicates whether this line item is a return from another sale (referenced by `return_for` on the main sale object).","type":"boolean"},"loyalty_value":{"description":"The value that should be added to associated customer's loyalty balance.","format":"double","type":"number"},"note":{"description":"Line item note.","nullable":true,"type":"string"},"price":{"description":"Unit price of the line item.","format":"double","type":"number"},"price_set":{"description":"Indicates whether the price was set manually. Using `true` means that the value will never be refreshed from the Price Book when reloaded (sale retrieved from parked sales).","type":"boolean"},"price_total":{"description":"Total price for the line item.","format":"double","type":"number"},"product_id":{"description":"The ID of the product associated with this line item.","format":"uuid","type":"string"},"quantity":{"description":"Quantity of products for the line item.","format":"double","type":"number"},"salesperson_id":{"description":"The ID of the salesperson associated with this line item. Salesperson IDs can be retrieved from the /api/2.0/users endpoint. Only needed when this line item is not sold by current login user.","format":"uuid","type":"string"},"sequence":{"description":"Order of the line item in the sale.","format":"double","type":"number"},"status":{"description":"Status of the line item.","enum":["SAVED","VOIDED","CONFIRMED"],"type":"string"},"surcharges":{"description":"Collection of surcharges associated with the line item.","items":{"$ref":"#/components/schemas/LineItemSurcharge"},"type":"array"},"tax":{"deprecated":true,"description":"The unit tax value associated with this line item. **deprecated**","format":"double","type":"number"},"tax_components":{"description":"Collection of tax components associated with the line item.","items":{"$ref":"#/components/schemas/LineItemTaxComponent"},"type":"array"},"tax_id":{"description":"The ID of the tax associated with this line item.","format":"uuid","type":"string"},"tax_total":{"description":"Total tax value.","format":"double","type":"number"}},"title":"Line Item","type":"object"},"LineItemAdjustment":{"properties":{"amount":{"$ref":"#/components/schemas/AdjustmentAmount"},"name":{"description":"The name of the adjustment.","type":"string"},"source":{"$ref":"#/components/schemas/AdjustmentSource"},"target":{"$ref":"#/components/schemas/AdjustmentTarget"},"type":{"description":"The type of the adjustment.","enum":["NON_CASH_FEE","DISCOUNT","TIP"],"type":"string"}},"required":["type","target"],"title":"Line Item Adjustment","type":"object"},"LineItemAttribute":{"properties":{"name":{"description":"Attribute name. (`line_note` for a line item note.)","type":"string"},"value":{"description":"Attribute value. (For `line_note`, the string value of the line_item note.)","type":"string"}},"required":["name","value"],"title":"Line Item Attribute","type":"object"},"LineItemMetadata":{"properties":{"fulfillment_method":{"description":"The fulfillment type for this line item. Only used when creating new sales, ignored when updating existing sales.","enum":["DISPATCH","PICKUP"],"type":"string"},"is_price_override":{"default":0,"description":"Indicates whether the price was \"fixed\". If set to `\"1\"` it prevents recalculation of the total price based on the price from the database. One of `\"0\"` or `\"1\"`.","format":"int32","type":"integer"},"sequence":{"description":"Order number of the line item.","format":"int32","type":"integer"}},"title":"Line Item Metadata","type":"object"},"LineItemPricing":{"properties":{"adjustments":{"description":"Adjustments.","items":{"$ref":"#/components/schemas/LineItemAdjustment"},"type":"array"},"cost":{"description":"Unit cost of the line item","format":"double","type":"number"},"discount":{"description":"Discount value of the line item.","format":"double","type":"number"},"loyalty_amount":{"description":"The value of loyalty that will be incurred by the customer for this line item.","format":"double","type":"number"},"price":{"description":"Unit price of the line item.","format":"double","type":"number"}},"required":["price"],"title":"Line Item Pricing","type":"object"},"LineItemProduct":{"properties":{"id":{"description":"The ID of the product associated with this line item.","format":"uuid","type":"string"}},"required":["id"],"title":"Line Item Product","type":"object"},"LineItemProductDetails":{"properties":{"handle":{"description":"The handle of the product associated with this line item.","type":"string"},"id":{"description":"The ID of the product associated with this line item.","format":"uuid","type":"string"},"name":{"description":"The name of the product associated with this line item.","type":"string"},"sku":{"description":"The SKU of the product associated with this line item.","type":"string"}},"title":"Line Item Product Details","type":"object"},"LineItemPromotion":{"properties":{"amount":{"description":"Promotion discount amount.","format":"double","type":"number"},"id":{"description":"Promotion ID.","type":"string"},"name":{"description":"Promotion name.","type":"string"},"promo_code":{"description":"Promo code used.","type":"string"},"promo_code_id":{"description":"Promo code ID.","type":"string"}},"title":"Line Item Promotion","type":"object"},"LineItemResponseMetadata":{"properties":{"is_price_override":{"description":"Indicates whether the price was overridden, preventing recalculation of the total price based on the price from the database.","type":"boolean"},"is_retail_price_tax_inclusive":{"description":"Indicates whether the retail price is tax inclusive.","type":"boolean"},"sequence":{"description":"Order of the line item in the sale.","type":"string"},"tax_components":{"description":"Tax components for this line item.","items":{"$ref":"#/components/schemas/LineItemTaxComponent"},"type":"array"}},"title":"Line Item Response Metadata","type":"object"},"LineItemResponsePricing":{"properties":{"cost":{"description":"Unit cost for the line item.","format":"double","type":"number"},"discount":{"description":"Discount value of the line item.","format":"double","type":"number"},"loyalty_amount":{"description":"The value that should be added to associated customer's loyalty balance.","format":"double","type":"number"},"price":{"description":"Unit price of the line item.","format":"double","type":"number"},"total":{"description":"Total price for the line item.","format":"double","type":"number"}},"title":"Line Item Response Pricing","type":"object"},"LineItemResponseSource":{"properties":{"register_id":{"description":"The ID of the register which was used to add this line item to the sale.","format":"uuid","type":"string"}},"title":"Line Item Response Source","type":"object"},"LineItemResponseTax":{"properties":{"amount":{"description":"The unit tax value associated with this line item.","format":"double","type":"number"},"id":{"description":"The ID of the tax associated with this line item.","format":"uuid","type":"string"},"name":{"description":"The name of the tax associated with this line item.","type":"string"},"rate":{"description":"The rate of the tax associated with this line item.","format":"double","type":"number"},"total":{"description":"Total tax value.","format":"double","type":"number"}},"title":"Line Item Response Tax","type":"object"},"LineItemReturn":{"properties":{"is_return":{"description":"Indicates whether this line item is a return.","type":"boolean"},"reason":{"description":"Return reason.","type":"string"}},"title":"Line Item Return","type":"object"},"LineItemSource":{"properties":{"author_id":{"description":"The ID of the salesperson associated with this line item. Salesperson IDs can be retrieved from the /api/2.0/users endpoint. Only needed when this line item is not sold by current login user.","format":"uuid","type":"string"},"register_id":{"description":"The ID of the register which was used to add this line item to the sale.","format":"uuid","type":"string"}},"title":"Line Item Source","type":"object"},"LineItemSurcharge":{"properties":{"tax_components":{"description":"Collection of tax components associated with the surcharge.","items":{"$ref":"#/components/schemas/LineItemTaxComponent"},"type":"array"},"value":{"description":"Tax exclusive surcharge amount for a specific payment.","format":"double","type":"number"}},"required":["value","tax_components"],"title":"Line Item Surcharge","type":"object"},"LineItemTax":{"properties":{"amount":{"description":"The unit tax value associated with this line item.","format":"double","type":"number"},"id":{"description":"The ID of the tax associated with this line item. Tax IDs can be retrieved from the /api/2.0/taxes endpoint; for tax-free items, please use the ID of the tax named 'No Tax'","format":"uuid","type":"string"}},"required":["id","amount"],"title":"Line Item Tax","type":"object"},"LineItemTaxComponent":{"properties":{"rate_id":{"description":"Tax rate ID.","type":"string"},"total_tax":{"description":"Tax total.","format":"double","type":"number"}},"required":["rate_id","total_tax"],"title":"Line Item Tax Component","type":"object"},"LspayCNPConfigResponse":{"properties":{"client_key":{"description":"The client key for card-not-present payment processing.","type":"string"},"currency":{"description":"The currency configured for card-not-present payments.","type":"string"}},"required":["currency","client_key"],"title":"LspayCNPConfigResponse","type":"object"},"LspayNewTransactionRequest":{"properties":{"amount":{"description":"The transaction amount as a decimal string.","type":"string"},"currency":{"description":"The ISO 4217 currency code.","type":"string"},"metadata":{"$ref":"#/components/schemas/LspayTransactionMetadata"},"payment_start_time_ms":{"description":"The Unix timestamp in milliseconds when payment was initiated.","format":"int64","type":"integer"},"register_sale_payment_id":{"description":"The register sale payment ID to associate with this transaction.","type":"string"},"retailer_payment_type_id":{"description":"The retailer payment type ID configured for LSPay.","type":"string"},"tip_eligible_amount":{"description":"The tip-eligible portion of the amount as a decimal string.","type":"string"},"with_surcharge":{"description":"Whether to apply a surcharge to this transaction.","type":"boolean"}},"required":["amount","currency","register_sale_payment_id","retailer_payment_type_id","metadata"],"title":"LspayNewTransactionRequest","type":"object"},"LspayPairingAttemptRequest":{"properties":{"source":{"description":"The source of the pairing attempt.","type":"string"}},"title":"LspayPairingAttemptRequest","type":"object"},"LspayPaymentIntentRequest":{"properties":{"payment_intent_id":{"description":"The Stripe payment intent ID.","type":"string"}},"required":["payment_intent_id"],"title":"LspayPaymentIntentRequest","type":"object"},"LspayReprocessTransactionRequest":{"properties":{"currency":{"description":"The ISO 4217 currency code. Required when with_surcharge is true.","type":"string"},"payment_intent_id":{"description":"The Stripe payment intent ID.","type":"string"},"payment_start_time_ms":{"description":"The Unix timestamp in milliseconds when payment was initiated.","format":"int64","type":"integer"},"tip_eligible_amount":{"description":"The tip-eligible portion of the amount as a decimal string.","type":"string"},"with_surcharge":{"description":"Whether to apply a surcharge to the reprocessed transaction.","type":"boolean"}},"required":["payment_intent_id"],"title":"LspayReprocessTransactionRequest","type":"object"},"LspayRetailerFeaturesResponse":{"additionalProperties":{"type":"string"},"description":"A map of LSPay feature flag keys to their string values (e.g. \"pmof_enabled\" → \"true\").","title":"LspayRetailerFeaturesResponse","type":"object"},"LspaySetupIntentResponse":{"properties":{"client_secret":{"description":"The Stripe setup intent client secret.","type":"string"}},"required":["client_secret"],"title":"LspaySetupIntentResponse","type":"object"},"LspayTender":{"properties":{"amount":{"description":"The tender amount.","type":"number"},"card_details":{"additionalProperties":true,"description":"Card-specific details returned by the provider.","type":"object"},"created_at":{"description":"The time the tender was created.","format":"date-time","type":"string"},"currency":{"description":"The ISO 4217 currency code.","type":"string"},"emv":{"additionalProperties":true,"description":"EMV chip data returned by the provider.","type":"object"},"external_transaction_id":{"description":"The external (provider) transaction ID.","type":"string"},"id":{"description":"The tender ID.","type":"string"},"provider_fields":{"additionalProperties":true,"description":"Provider-specific fields.","type":"object"},"status":{"description":"The tender status.","enum":["APPROVED","APPROVED_PIN","APPROVED_SIGNATURE","CANCELLED","DECLINED","REFUNDED","REVERSED","UNKNOWN"],"type":"string"},"transaction_id":{"description":"The transaction ID this tender belongs to.","type":"string"},"type":{"description":"The tender type.","enum":["SALE","REFUND","REVERSAL","TIP","SURCHARGE"],"type":"string"}},"required":["id","transaction_id","created_at","currency","amount","type","status"],"title":"LspayTender","type":"object"},"LspayTokenResponse":{"properties":{"location":{"description":"The Stripe Terminal location ID.","type":"string"},"on_behalf_of":{"description":"The Stripe account ID on behalf of which the token is issued.","type":"string"},"serial_number":{"description":"The terminal serial number. Only present when pairingData=true.","type":"string"},"token":{"description":"The Stripe Terminal connection token.","type":"string"}},"required":["token","location"],"title":"LspayTokenResponse","type":"object"},"LspayTransaction":{"properties":{"created_at":{"description":"The time the transaction was created.","format":"date-time","type":"string"},"id":{"description":"The transaction ID.","type":"string"},"payment_type_id":{"description":"The payment type ID.","type":"string"},"provider_fields":{"additionalProperties":true,"description":"Provider-specific fields.","type":"object"},"register_id":{"description":"The register ID.","type":"string"},"register_sale_payment_id":{"description":"The register sale payment ID.","type":"string"},"retailer_id":{"description":"The retailer ID.","type":"string"},"retailer_payment_type_id":{"description":"The retailer payment type ID.","type":"string"},"status":{"description":"The transaction status.","enum":["CANCELLED","CANCELLED_BAD_CARD","CANCELLED_BUSY","COMPLETED","DECLINED","REFUNDED","REVERSED","TIMEOUT","UNKNOWN","PROCESSING"],"type":"string"},"tenders":{"description":"The tenders associated with this transaction.","items":{"$ref":"#/components/schemas/LspayTender"},"type":"array"},"updated_at":{"description":"The time the transaction was last updated.","format":"date-time","type":"string"}},"required":["id","register_sale_payment_id","retailer_id","created_at","updated_at","status","tenders","register_id","retailer_payment_type_id","provider_fields"],"title":"LspayTransaction","type":"object"},"LspayTransactionMetadata":{"properties":{"product_version":{"description":"The version of the POS product initiating the transaction.","type":"string"},"register_sale_id":{"description":"The register sale ID associated with this transaction.","type":"string"}},"required":["register_sale_id","product_version"],"title":"LspayTransactionMetadata","type":"object"},"LspayTransactionResponse":{"properties":{"payment_intent_id":{"description":"The Stripe payment intent ID.","type":"string"},"reason":{"description":"The reason for the transaction status.","enum":["TERMINAL_BUSY","TERMINAL_TIMEOUT","TERMINAL_UNAVAILABLE","TERMINAL_ERROR","UNKNOWN","CARD_DECLINED","EXPIRED_CARD","INSUFFICIENT_FUNDS","INVALID_AMOUNT","INVALID_ACCOUNT","STRIPE_INVALID_REQUEST_ERROR","STRIPE_API_ERROR","TRANSACTION_NOT_ALLOWED","INCORRECT_PIN","PIN_TRY_EXCEEDED","INTENT_CANCELLED","OVERRIDE_CANCELLED","CUSTOMER_CANCELED","PAYMENT_INTENT_NOT_FOUND","PAYMENT_METHOD_NOT_AVAILABLE","MOBILE_DEVICE_AUTHENTICATION_REQUIRED","MISMATCH_INTENT","MISSING_PAYMENT_METHOD","WRONG_RSPI","SETUP_INTENT_NOT_FOUND","SETUP_INTENT_NOT_FAILED","TERMINAL_ACTION_FAILED","CARD_PRESENTED_MISMATCH_ORIGINAL_CARD"],"type":"string"},"register_sale_payment_id":{"description":"The register sale payment ID.","type":"string"},"status":{"description":"The cached transaction status.","enum":["CANCELLED","COMPLETED","DECLINED","PROCESSING","AUTHORISED","UNKNOWN","CARD_PRESENTED"],"type":"string"},"transaction":{"$ref":"#/components/schemas/LspayTransaction"}},"required":["register_sale_payment_id","payment_intent_id","status"],"title":"LspayTransactionResponse","type":"object"},"Outlet":{"properties":{"attributes":{"description":"The outlet attributes such as `low_stock_warning`, `order_reference`, `order_reference_prefix`, `return_reference`, `return_reference_prefix`.","items":{"$ref":"#/components/schemas/Attribute"},"type":"array"},"currency":{"description":"Currency name.","type":"string"},"currency_symbol":{"description":"Currency symbol.","type":"string"},"default_tax_id":{"deprecated":true,"description":"Default tax id used for sales in this outlet. **deprecated**","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"display_prices":{"description":"Indicates whether prices in this outlet should be displayed as tax-inclusive.","type":"string"},"email":{"description":"Specified email for the outlet.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"latitude":{"description":"Geographical latitude of the outlet.","nullable":true,"type":"string"},"longitude":{"description":"Geographical longitude of the outlet.","nullable":true,"type":"string"},"name":{"description":"The outlet name.","type":"string"},"phone":{"description":"Contact phone number for the outlet.","nullable":true,"type":"string"},"physical_address_1":{"description":"Physical address, line 1.","type":"string"},"physical_address_2":{"description":"Physical address, line 2.","type":"string"},"physical_city":{"description":"Physical address, city.","type":"string"},"physical_country_id":{"description":"Physical address, country code.","type":"string"},"physical_postcode":{"description":"Physical address, post code.","type":"string"},"physical_state":{"description":"Physical address, state.","type":"string"},"physical_suburb":{"description":"Physical address, suburb.","type":"string"},"time_zone":{"description":"Outlet timezone. **read only**","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Outlet","type":"object"},"OutletCollection":{"properties":{"data":{"description":"An array of Outlet objects  wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Outlet"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Outlet Collection","type":"object"},"OutletResponse":{"properties":{"data":{"$ref":"#/components/schemas/Outlet"}},"title":"Outlet Response","type":"object"},"OutletTax":{"properties":{"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"outlet_id":{"description":"The ID of the outlet this record is associated with.","format":"uuid","type":"string"},"product_id":{"description":"The ID of the product this record is associated with.","format":"uuid","type":"string"},"tax_id":{"description":"The ID of the tax this record is associated with.","format":"uuid","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["outlet_id","product_id","tax_id","version"],"title":"Outlet Product Tax","type":"object"},"OutletTaxCollection":{"properties":{"data":{"description":"An array of outlet-product-tax records.","items":{"$ref":"#/components/schemas/OutletTax"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"type":"object"},"PackLineItemRequest":{"properties":{"quantity":{"description":"The quantity to be packed","example":1,"format":"double","type":"number"},"sale_line_item_id":{"description":"The unique identifier of the sale line item to be packed.","example":"f3a8d2c1-9b7e-4f56-8a12-3e4d5c6b7a89","format":"uuid","type":"string"},"source_breakdown":{"$ref":"#/components/schemas/PackLineItemSourceBreakdown"}},"required":["sale_line_item_id","quantity"],"type":"object"},"PackLineItemSourceBreakdown":{"description":"Specifies how a packing quantity should be sourced. When provided, both fields are required and must sum to the parent quantity. Source breakdown is not allowed when the parent quantity is negative (unpacking).","properties":{"quantity_from_not_started":{"description":"Quantity to source from the not-started state.","format":"double","type":"number"},"quantity_from_picked":{"description":"Quantity to source from the picked state.","format":"double","type":"number"}},"required":["quantity_from_picked","quantity_from_not_started"],"type":"object"},"PackLineItemsRequest":{"properties":{"line_items":{"description":"The line items to be packed","items":{"$ref":"#/components/schemas/PackLineItemRequest"},"type":"array"},"version":{"description":"The current version number of the fulfillment.","example":5,"format":"int32","type":"integer"}},"required":["version","line_items"],"type":"object"},"PackLineItemsResponse":{"properties":{"data":{"properties":{"id":{"description":"The unique identifier of the fulfillment.","example":"7428951063847291856","type":"string"},"version":{"description":"The new version number of the fulfillment after the update.","example":3,"format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"PaginationMetadata":{"properties":{"page":{"type":"integer"},"pageSize":{"type":"integer"},"results":{"type":"integer"}},"type":"object"},"Pairing":{"description":"A terminal pairing record associating a register with a payment terminal.","properties":{"created_at":{"description":"When the pairing was created.","format":"date-time","type":"string"},"pairing_key":{"description":"The pairing key identifying the terminal.","type":"string"},"pairing_value":{"description":"The pairing value (e.g. serial number or location).","type":"string"},"register_id":{"description":"The register ID associated with this pairing.","type":"string"},"retailer_id":{"description":"The retailer ID associated with this pairing.","type":"string"},"updated_at":{"description":"When the pairing was last updated.","format":"date-time","type":"string"}},"required":["register_id","retailer_id","pairing_key","pairing_value","created_at","updated_at"],"title":"Pairing","type":"object"},"PartnerSubscription":{"description":"PartnerSubscription contains all the subscription under one partner application","properties":{"application_id":{"type":"string"},"application_name":{"example":"Partner Application","type":"string"},"partner_subscription_info":{"items":{"$ref":"#/components/schemas/PartnerSubscriptionInfo"},"type":"array"}},"type":"object"},"PartnerSubscriptionInfo":{"properties":{"charge_interval":{"example":1,"format":"int64","type":"integer"},"charge_interval_unit":{"example":"month","type":"string"},"components":{"items":{"$ref":"#/components/schemas/ProductInfoComponent"},"type":"array"},"currency":{"example":"nzd","type":"string"},"id":{"example":"1348730086846538752","type":"string"},"next_assessment_at":{"example":"2021-02-11T20:34:42Z","type":"string"},"price_in_cents":{"example":"5000","type":"string"},"product_family_name":{"example":"Marshmallow Production Subscription","type":"string"},"product_name":{"example":"Marshmallow Lite Subscription","type":"string"},"product_price_point_name":{"example":"marshmallow-product-price-point","type":"string"},"state":{"example":"canceled","type":"string"}},"type":"object"},"PartnerSubscriptionToken":{"description":"PartnerSubscriptionToken repreasent a partner subscription token","properties":{"components":{"example":"{components: [{\"component_handle\": \"additional_registers\", \"component_price_point_handle\": \"basic\", \"quantity\": 2}]}","type":"string"},"created_at":{"example":"2020-10-06T05:07:26Z","format":"date-time","type":"string"},"is_used":{"example":true,"type":"boolean"},"product_handle":{"example":"lite","type":"string"},"product_price_point_handle":{"example":"marshmallow-lite","type":"string"},"retailer_id":{"example":"0242ac12-001c-11eb-fa07-0f585c3d42ee","type":"string"},"return_url":{"example":"https://example.com/redirect","type":"string"},"subscription_id":{"example":1316881562803438000,"format":"int64","type":"integer"},"token":{"description":"Token is a randomly generated string that is a required parameter for consent page","example":"0a7e36eb05a94bf1a4d3daeff0f561f9","maxLength":32,"minLength":32,"type":"string"},"used_at":{"example":"2020-10-06T07:00:38Z","format":"date-time","type":"string"},"vend_application_id":{"example":"iYsePmZaddtZRNYQrr7g3Eg2ItSkTiFx","type":"string"}},"type":"object"},"PartnerSubscriptionTokenComponent":{"description":"PartnerSubscriptionTokenComponent represents a component to be added to a subscription","properties":{"component_handle":{"description":"Unique reference to the component to be included in the new subscription","example":"additional_registers","type":"string"},"component_price_handle":{"description":"Unique reference to the component price point","example":"lite","type":"string"},"quantity":{"description":"How many components should be added","example":1,"format":"int64","type":"integer"}},"required":["component_handle","component_price_handle","quantity"],"type":"object"},"PartnerSubscriptionTokenRequest":{"description":"PartnerSubscriptionTokenRequest represents the request's body for subscription token API","properties":{"components":{"description":"Components is a list of components to add on to the plan","items":{"$ref":"#/components/schemas/PartnerSubscriptionTokenComponent"},"type":"array"},"coupon_code":{"description":"CouponCode is the coupon code to be attached to the activation","example":"TEST10POFFFORLIFE","type":"string"},"price_handle":{"description":"ProductPricePointHandle is the product price point handle","example":"small-v1","type":"string"},"product_handle":{"description":"ProductHandle is the product handle","example":"small-v1","type":"string"},"return_url":{"description":"ReturnURL is the URL to which the user is redirected to after giving his/her consent","example":"https://www.example.com/return","type":"string"}},"required":["price_handle","product_handle","return_url"],"type":"object"},"PartnerSubscriptionTokenResponse":{"description":"PartnerSubscriptionTokenResponse contains the token and its expiration time","properties":{"expires_at":{"description":"ExpiresAt is the exact time of token expiry in UTC timezone and displayed in RFC3339 format","example":"2020-10-06T05:07:26Z","type":"string"},"expires_in":{"description":"ExpiresIn is the number of seconds till the token is expired","example":"86400","type":"string"},"token":{"description":"Token is a randomly generated string that is a required parameter for consent page","example":"0a7e36eb05a94bf1a4d3daeff0f561f9","maxLength":32,"minLength":32,"type":"string"}},"type":"object"},"PartnerSubscriptions":{"description":"PartnerSubscriptions contains all the subscriptions of the retailer from all the partners","items":{"$ref":"#/components/schemas/PartnerSubscription"},"type":"array"},"PartnerUpdateSubscriptionTokenComponent":{"description":"PartnerUpdateSubscriptionTokenComponent represents a component to be added to an updated subscription","properties":{"component_handle":{"description":"Unique reference for the component to be updated","example":"additional_registers","type":"string"},"component_price_handle":{"description":"Unique reference for the component price point to be updated to","example":"lite","type":"string"},"quantity":{"description":"How many components should be there after the update","example":1,"format":"int64","type":"integer"}},"required":["component_handle","quantity"],"type":"object"},"PartnerUpdateSubscriptionTokenRequest":{"description":"PartnerUpdateSubscriptionTokenRequest represents the request's body for updating a subscription via token API","properties":{"components":{"description":"Components is a list of components to add on to the plan","items":{"$ref":"#/components/schemas/PartnerUpdateSubscriptionTokenComponent"},"type":"array"},"price_handle":{"description":"ProductPricePointHandle is the product price point handle, required if `product_handle` is specified","example":"small-v1","type":"string"},"product_handle":{"description":"ProductHandle is the product handle to update","example":"small-v1","type":"string"},"return_url":{"description":"ReturnURL is the URL to which the user is redirected to after giving his/her consent","example":"https://www.example.com/return","type":"string"}},"required":["return_url"],"type":"object"},"Payment":{"properties":{"amount":{"description":"Payment amount.","format":"double","type":"number"},"id":{"description":"Auto-generated payment ID.","format":"uuid","type":"string"},"name":{"description":"Payment type name.","type":"string"},"outlet_id":{"description":"A valid outlet ID.","format":"uuid","type":"string"},"payment_date":{"description":"Payment date in UTC.","type":"string"},"payment_type_id":{"deprecated":true,"description":"A payment type associated with the retailer payment type. **deprecated**","type":"string"},"register_id":{"description":"A valid register ID.","format":"uuid","type":"string"},"retailer_payment_type_id":{"description":"A valid retailer payment type ID.","format":"uuid","type":"string"},"surcharge":{"$ref":"#/components/schemas/SaleSurcharge"}},"title":"Payment","type":"object"},"PaymentErrorResponse":{"properties":{"error":{"properties":{"code":{"type":"integer"},"message":{"description":"Human-readable error description.","type":"string"}},"required":["code","message"],"type":"object"}},"required":["error"],"type":"object"},"PaymentIntegration":{"properties":{"card_last4":{"description":"Last 4 digits of the card.","type":"string"},"is_authorized":{"description":"Whether the payment is authorized.","type":"boolean"},"receipt_number":{"description":"Receipt number from the payment integration.","type":"string"},"source":{"$ref":"#/components/schemas/IntegrationSource"},"transaction_id":{"description":"Transaction ID from the payment integration.","type":"string"}},"title":"Payment Integration","type":"object"},"PaymentIntentMetadata":{"properties":{"order_id":{"description":"Payment ID / register_sale_payment_id.","type":"string"},"product_version":{"description":"Version of the POS product.","type":"string"},"register_name":{"description":"Name of the register. If omitted, swiper will resolve it via the Vend API using register_id.\n","type":"string"},"register_sale_id":{"description":"The register sale ID associated with this payment.","type":"string"},"terminal_label":{"description":"Device name / terminal label.","type":"string"},"terminal_serial_number":{"description":"Device serial number / ID.","type":"string"}},"type":"object"},"PaymentIntentRequest":{"properties":{"amount":{"description":"Payment amount in the store's currency units.","example":10.5,"format":"double","type":"number"},"currency":{"description":"ISO 4217 currency code.","example":"AUD","type":"string"},"metadata":{"$ref":"#/components/schemas/PaymentIntentMetadata"},"outlet_id":{"description":"The outlet identifier. Required to derive the Stripe connected account (PLI).","type":"string"},"support_interac":{"default":false,"description":"When true and currency is CAD, adds Interac as a supported payment method.\n","type":"boolean"}},"required":["amount","currency","outlet_id"],"type":"object"},"PaymentIntentResponse":{"properties":{"capture_method":{"description":"Stripe capture method. Determined by currency: - `automatic` for AUD - `manual` for all other currencies\n","enum":["automatic","manual"],"type":"string"},"client_secret":{"description":"Client secret for completing the payment on the client side.","example":"pi_3Abc123_secret_xyz","type":"string"},"id":{"description":"Stripe payment intent ID.","example":"pi_3Abc123","type":"string"},"on_behalf_of":{"description":"Stripe connected account ID. Present when the payment is on behalf of a connected account.","type":"string"},"status":{"description":"Stripe payment intent status.","example":"requires_payment_method","type":"string"}},"required":["id","client_secret","capture_method","status"],"type":"object"},"PaymentResponseMetadata":{"properties":{"register_open_sequence_id":{"description":"Register open sequence ID.","format":"uuid","type":"string"}},"title":"Payment Response Metadata","type":"object"},"PaymentResponseSource":{"properties":{"outlet_id":{"description":"A valid outlet ID.","format":"uuid","type":"string"},"register_id":{"description":"The ID of the register used to add this payment to the sale.","format":"uuid","type":"string"}},"title":"Payment Response Source","type":"object"},"PaymentSource":{"properties":{"register_id":{"description":"The ID of the register used to add this payment to the sale.","format":"uuid","type":"string"}},"title":"Payment Source","type":"object"},"PaymentType":{"properties":{"config":{"additionalProperties":true,"description":"Payment type configuration. Shape varies by payment type.","nullable":true,"type":"object"},"created_at":{"description":"The creation timestamp.","format":"date-time","nullable":true,"type":"string"},"deleted_at":{"description":"The deletion timestamp.","format":"date-time","nullable":true,"type":"string"},"disabled":{"description":"Indicates if the payment type is disabled.","type":"boolean"},"gateway":{"description":"Indicates if the payment type is a gateway type.","type":"boolean"},"id":{"description":"Auto-generated object ID.","type":"string"},"internal":{"description":"Indicates if the payment type is for internal use only.","type":"boolean"},"is_editable":{"description":"Indicates if the payment type can be edited. Omitted when not applicable.","nullable":true,"type":"boolean"},"name":{"description":"The name of the payment type.","type":"string"},"name_changed_by_user":{"description":"Indicates if the name was customised by the retailer.","type":"boolean"},"outlet_ids":{"description":"The list of outlet IDs this payment type is associated with.","items":{"type":"string"},"type":"array"},"payment_type":{"$ref":"#/components/schemas/GlobalPaymentType"},"type_id":{"description":"The ID of the global payment type. It shouldn't be used to identify the payment type - there may be multiple payment types with the same `type_id`.","type":"integer"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["id","name","type_id","version"],"type":"object"},"PaymentTypeCollection":{"properties":{"data":{"description":"An array of payment types.","items":{"$ref":"#/components/schemas/PaymentType"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"type":"object"},"PaymentTypeConfig":{"properties":{"config_id":{"description":"Payment type id to be used for the payment.","format":"uuid","type":"string"}},"required":["config_id"],"title":"Payment Type Config","type":"object"},"PaymentTypeDetails":{"properties":{"config_id":{"description":"Payment type id to be used for the payment.","format":"uuid","type":"string"},"id":{"description":"**internal** Global payment type ID. Irrelevant for external use.","type":"string"},"label":{"description":"The label of the payment type.","type":"string"},"name":{"description":"The name of the payment type.","type":"string"}},"title":"Payment Type Details","type":"object"},"PickLineItemRequest":{"properties":{"quantity":{"description":"The quantity to be picked","example":1,"format":"double","type":"number"},"sale_line_item_id":{"description":"The unique identifier of the sale line item to be picked.","example":"f3a8d2c1-9b7e-4f56-8a12-3e4d5c6b7a89","format":"uuid","type":"string"}},"required":["sale_line_item_id","quantity"],"type":"object"},"PickLineItemsRequest":{"properties":{"line_items":{"description":"The line items to be picked","items":{"$ref":"#/components/schemas/PickLineItemRequest"},"type":"array"},"version":{"description":"The current version number of the fulfillment.","example":5,"format":"int32","type":"integer"}},"required":["version","line_items"],"type":"object"},"PickLineItemsResponse":{"properties":{"data":{"properties":{"id":{"description":"The unique identifier of the fulfillment.","example":"7428951063847291856","type":"string"},"version":{"description":"The new version number of the fulfillment after the update.","example":3,"format":"int32","type":"integer"}},"type":"object"}},"type":"object"},"PickList":{"properties":{"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"line_items":{"description":"The line items that are awaiting fulfillment.","items":{"$ref":"#/components/schemas/PickListLineItem"},"type":"array"},"note":{"description":"The fulfillment note associated with the pick list.","type":"string"},"outlet_id":{"description":"The ID of the outlet that the sale originates from.","format":"uuid","type":"string"},"sale_id":{"description":"The ID of the sale that is awaiting fulfillment.","format":"uuid","type":"string"},"status":{"description":"Status of the pick list.","type":"string"},"type":{"description":"Fulfillment Type of the pick list.","enum":["SHIPPED","PICKED_UP"],"nullable":true,"type":"string"},"user_id":{"description":"The ID of the user who started the sale.","format":"uuid","type":"string"}},"title":"PickList","type":"object"},"PickListLineItem":{"properties":{"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"note":{"description":"Line item note.","nullable":true,"type":"string"},"picked_quantity":{"description":"Number of units that are picked so far for this line item in the pick list.","format":"double","type":"number"},"product_id":{"description":"The ID of a product in the pick list.","format":"uuid","type":"string"},"quantity":{"description":"Number of units that need to be picked for this line item before satisfying the pick list.","format":"double","type":"number"},"sale_line_item_id":{"description":"The ID of the line item associated to the sale","format":"uuid","type":"string"}},"title":"Pick List Line Item","type":"object"},"PickListsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PickList"},"type":"array"}},"title":"Pick Lists Response","type":"object"},"PriceBook":{"properties":{"created_at":{"description":"Created timestamp in UTC.","type":"string"},"customer_groups":{"items":{"$ref":"#/components/schemas/CustomerGroup"},"type":"array"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"description":"Price Book name.","type":"string"},"outlets":{"items":{"$ref":"#/components/schemas/Outlet"},"nullable":true,"type":"array"},"restrict_to_platform_key":{"description":"`\"0\"` - all platforms, `\"1\"` - in store, `\"2\"` - ecommerce.","nullable":true,"type":"string"},"restrict_to_platform_label":{"description":"One of `In Store`, `Ecommerce`, `All Platforms`.","nullable":true,"type":"string"},"type":{"description":"Type of price book","type":"string"},"updated_at":{"description":"Updated timestamp in UTC.","type":"string"},"valid_from":{"description":"The date when the Price Book becomes valid (active).","nullable":true,"type":"string"},"valid_to":{"description":"The date when the Price Book becomes invalid (inactive).","nullable":true,"type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["customer_group_ids","name"],"title":"Price Book","type":"object"},"PriceBookCollection":{"properties":{"data":{"description":"An array of Price Book objects wrapped in a top level `data` object.","items":{"$ref":"#/components/schemas/PriceBook"},"type":"array"}},"title":"Price Book Collection","type":"object"},"PriceBookCreateRequest":{"properties":{"customer_group_ids":{"items":{"description":"The ID of the customer group.","type":"string"},"type":"array"},"name":{"description":"Price Book name.","type":"string"},"outlet_ids":{"items":{"description":"The ID of an outlet for which the Price Book should be used.","type":"string"},"type":"array"},"restrict_to_platform":{"description":"`\"0\"` - all platforms, `\"1\"` - in store, `\"2\"` - ecommerce.","nullable":true,"type":"string"},"valid_from":{"description":"The date when the Price Book becomes valid (active).","nullable":true,"type":"string"},"valid_to":{"description":"The date when the Price Book becomes invalid (inactive).","nullable":true,"type":"string"}},"required":["customer_group_ids","outlet_ids","name"],"title":"Price Book Create Request","type":"object"},"PriceBookCreateResponse":{"properties":{"data":{"$ref":"#/components/schemas/PriceBookCreateResponseData"}},"title":"Price Book Create Response","type":"object"},"PriceBookCreateResponseData":{"properties":{"customer_groups":{"items":{"$ref":"#/components/schemas/CustomerGroup"},"type":"array"},"id":{"type":"string"},"name":{"type":"string"},"outlets":{"items":{"$ref":"#/components/schemas/Outlet"},"nullable":true,"type":"array"},"restrict_to_platform":{"type":"string"},"retailer_id":{"type":"string"},"type":{"type":"string"},"valid_from":{"type":"string"},"valid_to":{"type":"string"}},"title":"Price Book Create Response Data"},"PriceBookProduct":{"properties":{"adjustment":{"description":"The adjustment amount","format":"double","type":"number"},"adjustment_type":{"description":"The adjustment type","type":"string"},"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"default_display_price":{"description":"The default display price","format":"double","type":"number"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"discount":{"description":"The discount amount","format":"double","type":"number"},"id":{"description":"Auto-generated object ID.","type":"string"},"loyalty_value":{"description":"Price Book defined loyalty value.","format":"double","nullable":true,"type":"number"},"max_units":{"description":"The maximum number of items for which this price will be used.","format":"double","nullable":true,"type":"number"},"min_units":{"description":"The minimum number of items for which this price will be used.","format":"double","nullable":true,"type":"number"},"price":{"description":"The Retail price of the product.","format":"double","type":"number"},"price_book_id":{"description":"The ID of the Price Book this product belongs to.","type":"string"},"product_id":{"description":"The ID of the associated product.","type":"string"},"retail_tax":{"description":"The retail tax","format":"double","type":"number"},"rounding":{"description":"The format for the rounding","type":"string"},"tax_id":{"description":"The id for the tax rate","type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"version":{"format":"int64","type":"integer"}},"required":["price","product_id","tax_id"],"title":"Price Book Product","type":"object","x-examples":{"example-1":{"adjustment":-1.7976931348623157e+308,"adjustment_type":"string","created_at":"string","default_display_price":-1.7976931348623157e+308,"deleted_at":"string","discount":-1.7976931348623157e+308,"id":"string","loyalty_value":-1.7976931348623157e+308,"max_units":-1.7976931348623157e+308,"min_units":-1.7976931348623157e+308,"price":-1.7976931348623157e+308,"price_book_id":"string","product_id":"string","retail_tax":-1.7976931348623157e+308,"rounding":"string","tax_id":"string","updated_at":"string","version":123}}},"PriceBookProductCollection":{"properties":{"data":{"description":"An array of Price Book objects wrapped in a top level `data` object.","items":{"$ref":"#/components/schemas/PriceBookProduct"},"type":"array"}},"title":"Price Book Product Collection","type":"object"},"PriceBookProductIdCollection":{"properties":{"data":{"description":"An array of Price Book ids","properties":{"price_book_product_ids":{"description":"An array of price book product ids to be deleted from the given Price Book.","items":{"type":"string"},"type":"array"}},"required":["price_book_product_ids"],"type":"object"}},"title":"Price Book Product ID Collection","type":"object"},"PriceBookProductsUpdateResponse":{"properties":{"data":{"properties":{"message":{"description":"Confirmation message that the request to add/update/delete PriceBookProducts was successful.","type":"string"}},"type":"object"}},"title":"Price Book Products Update Response","type":"object"},"PriceBookResponse":{"properties":{"data":{"$ref":"#/components/schemas/PriceBook"}},"title":"Price Book Response","type":"object"},"PriceBookUpdateRequest":{"properties":{"customer_group_ids":{"items":{"description":"The ID of the customer group.","type":"string"},"type":"array"},"name":{"description":"Price Book name.","type":"string"},"outlet_ids":{"items":{"description":"The ID of an outlet for which the Price Book should be used.","type":"string"},"type":"array"},"restrict_to_platform":{"description":"`\"0\"` - all platforms, `\"1\"` - in store, `\"2\"` - ecommerce.","nullable":true,"type":"string"},"valid_from":{"description":"The date when the Price Book becomes valid (active).","nullable":true,"type":"string"},"valid_to":{"description":"The date when the Price Book becomes invalid (inactive).","nullable":true,"type":"string"}},"required":["customer_group_ids","name"],"title":"Price Book Update Request","type":"object"},"Product":{"properties":{"account_code":{"description":"???","nullable":true,"type":"string"},"account_code_purchase":{"description":"???","nullable":true,"type":"string"},"active":{"description":"Indicated whether the Product is active.","type":"boolean"},"attributes":{"description":"A list of attributes","items":{"$ref":"#/components/schemas/Attribute"},"type":"array"},"brand":{"$ref":"#/components/schemas/BrandSample"},"brand_id":{"description":"The brand ID.","format":"UUID","nullable":true,"type":"string"},"button_order":{"description":"???","type":"integer"},"categories":{"description":"A list of tag objects.","items":{"$ref":"#/components/schemas/Tag"},"type":"array"},"composite_bom":{"description":"A bill of materials object. This field is only relevant for composite products. It is a map of product ids to the quantity of each product that is needed to make up the composite product.","type":"object"},"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"description":{"description":"A detailed description of the Product. **Note** Can contain HTML.","nullable":true,"type":"string"},"dimensions_unit":{"description":"Unit of measurement for product dimensions. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","enum":["IN","CM","MM","YD"],"type":"string"},"family_id":{"description":"This is a family identifier. All members of a product family will have the same identifier. In the future, this will replace the variant_parent_id as the family group identifier. This field is currently read-only.","format":"UUID","type":"string"},"handle":{"description":"Product handle. **Note:** Variants share the same handle.","type":"string"},"has_inventory":{"description":"Indicates whether inventory is being tracked for the Product.","type":"boolean"},"has_variants":{"description":"Indicated whether product has variants.","type":"boolean"},"height":{"description":"Product height. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"id":{"description":"Auto-generated object ID.","format":"UUID","type":"string"},"image_thumbnail_url":{"type":"string"},"image_url":{"type":"string"},"images":{"description":"A list of image objects.","items":{"$ref":"#/components/schemas/ImageSample"},"type":"array"},"is_composite":{"description":"Indicates whether the Product is a composite one.","type":"boolean"},"length":{"description":"Product length. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"loyalty_amount":{"description":"The amount of loyalty the customer receives buying this item.","nullable":true,"type":"number"},"name":{"description":"Product name.","type":"string"},"price_excluding_tax":{"description":"The price before tax is added.","type":"number"},"price_including_tax":{"description":"The price including all the relevant taxes.","type":"number"},"product_codes":{"description":"A list of product code objects.","items":{"$ref":"#/components/schemas/ProductCode"},"type":"array"},"product_suppliers":{"description":"A list of product supplier objects.","items":{"$ref":"#/components/schemas/ProductSupplier"},"type":"array"},"product_type_id":{"description":"The product type.","format":"UUID","nullable":true,"type":"string"},"sku":{"description":"Product sku. **Note:** Should be unique.","nullable":true,"type":"string"},"source":{"description":"Indicates the origin of the product. Can be USER, SHOPIFY.","type":"string"},"source_id":{"description":"External reference ID.","nullable":true,"type":"string"},"source_variant_id":{"description":"Secondary external reference ID.","nullable":true,"type":"string"},"supplier":{"$ref":"#/components/schemas/SupplierSample"},"supplier_code":{"description":"Supplier code.","nullable":true,"type":"string"},"supplier_id":{"description":"The supplier ID.","format":"UUID","nullable":true,"type":"string"},"supply_price":{"description":"Default supply price,","format":"double","type":"number"},"tag_ids":{"description":"An array of tag IDs associated with this product.","items":{"description":"A tag ID.","format":"UUID","type":"string"},"type":"array"},"type":{"$ref":"#/components/schemas/ProductTypeSample"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"variant_count":{"description":"The number of variants for this product.","type":"integer"},"variant_name":{"description":"The name of the variant product.","nullable":true,"type":"string"},"variant_options":{"description":"A list of variant option objects.","items":{"$ref":"#/components/schemas/VariantOption"},"type":"array"},"variant_parent_id":{"description":"This value is set if a Product is a variant of another Product.","format":"UUID","nullable":true,"type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"},"weight":{"description":"Product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"weight_unit":{"description":"Unit of measurement for product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","enum":["CT","G","OZ","LB","KG"],"type":"string"},"width":{"description":"Product width. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"}},"required":["handle","name","sku"],"title":"Product","type":"object","x-examples":{"Example":{"data":[{"active":true,"attributes":[],"button_order":0,"categories":[{"id":"0242ac11-0002-11ea-e346-ec1fed46e828","name":"Tag1","version":150517}],"created_at":"2020-09-01T06:54:03+00:00","description":"Variant Product","dimensions_unit":"CM","handle":"Variant8","has_inventory":true,"has_variants":false,"height":4,"id":"0242ac12-0002-11e9-e8c4-659494e33101","image_thumbnail_url":"https://local-demo.dev.vendhq.works/images/placeholder/product/no-image-white-thumb.png","image_url":"https://local-demo.dev.vendhq.works/images/placeholder/product/no-image-white-standard.png","images":[],"is_active":true,"is_composite":false,"length":2,"name":"Variant + Tag","price_excluding_tax":34.78261,"price_including_tax":40,"sku":"1000033","source":"USER","supply_price":10,"tag_ids":["0242ac11-0002-11ea-e346-ec1fed46e828"],"updated_at":"2020-09-01T06:54:23+00:00","variant_name":"Variant + Tag / L / Green / Silk","variant_options":[{"id":"0242ac11-0002-11ea-e346-ec1feb758875","name":"Size","value":"L"},{"id":"0242ac11-0002-11ea-e346-ec1feb761422","name":"Colour","value":"Green"},{"id":"0242ac11-0002-11ea-e346-ec1feb7696a4","name":"Fabric","value":"Silk"}],"variant_parent_id":"0242ac12-0002-11e9-e8c4-659494e33138","version":150578,"weight":1,"weight_unit":"KG","width":3}]}}},"ProductAddImage":{"properties":{"index":{"description":"The position of the image in the list of images.","format":"int64","type":"integer"},"location":{"description":"The location of the given file. Depending on the image provider type. s3 - The s3 key for s3 transfers. url - A full URL for url based images. product-image - the image id from an existing product image. sku-image - the image id from an existing variant image.\n","type":"string"},"type":{"description":"The image provider type.","enum":["s3","url","product-image","sku-image"],"type":"string"}},"required":["type","location"],"title":"Add Image","type":"object"},"ProductAddInventoryPayload":{"properties":{"current_amount":{"description":"Current inventory at a given outlet.","format":"double","type":"number"},"outlet_id":{"description":"The outlet the inventory is for.","format":"UUID","type":"string"},"reorder_amount":{"description":"The default of the quantity for auto-filled inventory orders.","type":"number"},"reorder_point":{"description":"Quantity below which the product should be included in the auto-filled inventory orders. use -1 to clear the reorder point.","type":"number"}},"required":["outlet_id","current_amount"],"title":"Product Add Inventory Payload","type":"object"},"ProductAddOutletTax":{"properties":{"outlet_id":{"description":"The outlet the tax is for.","format":"UUID","type":"string"},"tax_id":{"description":"The tax id associated with this outlet.","format":"UUID","type":"string"}},"required":["outlet_id","tax_id"],"title":"Product Add Outlet Tax","type":"object"},"ProductAddVariantPayload":{"properties":{"all_outlets_tax":{"description":"Only used for tax inclusive stores.","properties":{"is_default":{"description":"Is this the default tax.","type":"boolean"},"tax_id":{"description":"The tax id associated with this product.","format":"UUID","type":"string"}},"type":"object"},"dimensions_unit":{"description":"Unit of measurement for product dimensions. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","enum":["IN","CM","MM","YD"],"type":"string"},"height":{"description":"Product height. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"images":{"description":"A list of image objects.","items":{"$ref":"#/components/schemas/ProductAddImage"},"type":"array"},"inventory":{"items":{"$ref":"#/components/schemas/ProductAddInventoryPayload"},"type":"array"},"length":{"description":"Product length. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"outlet_taxes":{"description":"Only used for tax exclusive stores.","items":{"$ref":"#/components/schemas/ProductAddOutletTax"},"type":"array"},"price_excluding_tax":{"description":"The price before tax is added.","type":"number"},"price_including_tax":{"description":"The price including all the relevant taxes.","type":"number"},"product_codes":{"items":{"$ref":"#/components/schemas/ProductCode"},"type":"array"},"product_suppliers":{"items":{"$ref":"#/components/schemas/ProductSupplier"},"type":"array"},"sku":{"description":"Product sku. This value should be included in the `product_codes` array. If it's not, it will be added automatically.","type":"string"},"supplier_code":{"description":"Supplier code.","type":"string"},"supply_price":{"description":"Default supply price.","format":"double","type":"number"},"variant_definitions":{"description":"The attributes associated with this variant. e.g. Size.","items":{"$ref":"#/components/schemas/VariantAttribute"},"type":"array"},"weight":{"description":"Product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"weight_unit":{"description":"Unit of measurement for product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","enum":["CT","G","OZ","LB","KG"],"type":"string"},"width":{"description":"Product width. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"}},"title":"Add Product Variant Payload","type":"object"},"ProductCategory":{"properties":{"category_path":{"items":{"$ref":"#/components/schemas/ProductCategoryPath"},"type":"array"},"id":{"description":"The category id","format":"uuid","type":"string"},"leaf_category":{"description":"True if the category does not have any more children (i.e. leaf).","type":"boolean"},"name":{"description":"The name of the category","type":"string"},"parent_category_id":{"description":"The parent category id, or null if its root category.","format":"uuid","type":"string"},"root_category_id":{"description":"The category id of the root of the category tree. If category is a root, this will be itself.","format":"uuid","type":"string"}},"type":"object"},"ProductCategoryPath":{"properties":{"id":{"description":"Object id of the Product Type in the path.","type":"string"},"name":{"description":"The Product Type name.","type":"string"}},"title":"Product Category Path","type":"object"},"ProductCode":{"properties":{"code":{"description":"The sku code being added.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"type":{"description":"The type of code being added.","enum":["CUSTOM","EAN","ISBN","ITF","JAN","UPC"],"type":"string"}},"title":"ProductCode","type":"object"},"ProductCollection":{"properties":{"data":{"description":"An array of Product objects wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Product"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Product Collection","type":"object"},"ProductCreateBody":{"properties":{"account_code_purchase":{"description":"The code used to attribute the purchase of the product to a specific account for the Xero integration.","type":"string"},"account_code_sale":{"description":"The code used to attribute the sales of the product to a specific account for the Xero integration.","type":"string"},"all_outlets_tax":{"description":"Only used for tax inclusive stores.","properties":{"is_default":{"description":"Is this the default tax.","type":"boolean"},"tax_id":{"description":"The tax id associated with this product.","format":"UUID","type":"string"}},"type":"object"},"attributes":{"$ref":"#/components/schemas/Attribute"},"brand_id":{"description":"The brand ID.","format":"UUID","type":"string"},"composite":{"description":"A list of composite components.","items":{"$ref":"#/components/schemas/Composite"},"type":"array"},"description":{"description":"A detailed description of the Product. **Note** Can contain HTML.","type":"string"},"dimensions_unit":{"description":"Unit of measurement for product dimensions. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","enum":["IN","CM","MM","YD"],"type":"string"},"handle":{"description":"Product handle.","type":"string"},"height":{"description":"Product height. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"images":{"description":"A list of image objects.","items":{"$ref":"#/components/schemas/ProductAddImage"},"type":"array"},"inventory":{"items":{"$ref":"#/components/schemas/ProductAddInventoryPayload"},"type":"array"},"is_active":{"description":"Indicated whether the Product is active.","type":"boolean"},"length":{"description":"Product length. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"loyalty_amount":{"description":"The amount of loyalty the customer receives buying this item.","type":"number"},"name":{"description":"Product name. **Note:** Variants share the same name.","type":"string"},"outlet_taxes":{"description":"Only used for tax exclusive stores.","items":{"$ref":"#/components/schemas/ProductAddOutletTax"},"type":"array"},"price_excluding_tax":{"description":"The price before tax is added.","type":"number"},"price_including_tax":{"description":"The price including all the relevant taxes.","type":"number"},"product_category_id":{"description":"The product category.","format":"UUID","type":"string"},"product_codes":{"items":{"$ref":"#/components/schemas/ProductCode"},"type":"array"},"product_suppliers":{"items":{"$ref":"#/components/schemas/ProductSupplier"},"type":"array"},"product_type_id":{"description":"The product category. **Note** Product types are now product categories.","format":"UUID","type":"string"},"sku":{"description":"Product sku. **Note:** Should be unique.","type":"string"},"source":{"description":"Indicates the origin of the product. Can be USER, SHOPIFY.","type":"string"},"source_id":{"description":"External reference ID.","type":"string"},"source_variant_id":{"description":"Secondary external reference ID.","type":"string"},"supplier_code":{"description":"Supplier code.","type":"string"},"supplier_id":{"description":"The supplier ID.","format":"UUID","type":"string"},"supply_price":{"description":"Default supply price.","format":"double","type":"number"},"tag_ids":{"description":"An array of tag IDs associated with this product.","items":{"description":"A tag ID.","format":"UUID","type":"string"},"type":"array"},"variants":{"items":{"$ref":"#/components/schemas/ProductAddVariantPayload"},"type":"array"},"weight":{"description":"Product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"},"weight_unit":{"description":"Unit of measurement for product weight. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","enum":["CT","G","OZ","LB","KG"],"type":"string"},"width":{"description":"Product width. These are used to calculate variable shipping rates for stores using Lightspeed eCom.","type":"number"}},"required":["name"],"title":"Product","type":"object"},"ProductInfoComponent":{"properties":{"charge_interval_unit":{"example":"month","type":"string"},"component_name":{"example":"Additional Register(s) Support","type":"string"},"quantity":{"example":2,"format":"int64","type":"integer"},"unit_price":{"example":20,"format":"double","type":"number"}},"title":"ProductInfoComponent contain partner product component info.","type":"object"},"ProductResponse":{"properties":{"data":{"$ref":"#/components/schemas/Product"}},"title":"Product Response","type":"object"},"ProductSupplier":{"properties":{"code":{"description":"The code associated with this supplier.","type":"string"},"price":{"description":"The price associated with this supplier.","format":"double","type":"number"},"supplier_id":{"description":"The ID of the supplier.","format":"UUID","type":"string"}},"title":"Product Supplier","type":"object"},"ProductType":{"properties":{"category_path":{"description":"The path of this product type (now product category) in the hierarchy.","items":{"$ref":"#/components/schemas/ProductCategoryPath"},"type":"array"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"leaf_category":{"description":"Is this product type (now product category) at the bottom of the hierarchy.","type":"boolean"},"name":{"description":"The Product Type name.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["name"],"title":"Product Type","type":"object"},"ProductTypeCollection":{"properties":{"data":{"description":"An array of Product Type objects wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/ProductType"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Product Type Collection","type":"object"},"ProductTypeResponse":{"properties":{"data":{"$ref":"#/components/schemas/ProductType"}},"title":"Product Type Response","type":"object"},"ProductTypeSample":{"properties":{"category_path":{"description":"The path of this product type (now product category) in the hierarchy.","items":{"$ref":"#/components/schemas/ProductCategoryPath"},"type":"array"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"leaf_category":{"description":"Is this product type (now product category) at the bottom of the hierarchy.","type":"boolean"},"name":{"type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Product Type Sample","type":"object"},"ProductUpdate21Request":{"properties":{"common":{"description":"Information to update to the product family. For variants, this will update the fields to all variants in the family.","properties":{"account_code_purchase":{"description":"The code used to attribute the purchase (cost) of the product to a specific account for the Xero integration.","type":"string"},"account_code_sale":{"description":"The code used to attribute the sales of the product to a specific account for the Xero integration.","type":"string"},"brand_id":{"description":"The brand ID that the product is associated to. To remove the brand from the product, please provide empty value \"\".","type":"string"},"description":{"description":"Product description.","type":"string"},"name":{"description":"Product name","type":"string"},"product_category_id":{"description":"The product category ID tha the product is associated to. A product can only be associated to the last level (leaf) category.\nTo remove the product category from the product, please provide empty value \"\".\nProduct category was previously known as product types.\n","type":"string"},"product_suppliers":{"description":"A full list of suppliers and its details that are associated to the product family.\nThe order of the supplier listed in this list will reflect the supplier's order in the product.\nThe first supplier is the default supplier.\nIf do not wish to override the code and price that may be custom per variant, just provide the id.\n","items":{"$ref":"#/components/schemas/ProductUpdate21Supplier"},"type":"array"},"tag_ids":{"description":"The full list of tag ids that the product is associated to. To remove all tags, please provide empty list.","items":{"type":"string"},"type":"array"},"track_inventory":{"description":"True to enable inventory tracking for product. This will updating of inventory details such as manual adjustments and reorder details.","type":"boolean"},"variant_attributes":{"description":"A full list of the variant attributes for the product family.\nThe order of the variant attributes in this list will reflect the order of the attribute on the variant. Maximum three attributes.\n","items":{"properties":{"attribute_id":{"description":"The ID of attribute represented at the specified position in the list.","type":"string"}},"type":"object"},"type":"array"}},"type":"object"},"details":{"description":"Information to update to the product. For variants, this will update the fields for the individual variant product of this request only.","properties":{"all_outlets_tax":{"description":"Set the tax on a product for tax inclusive store.","properties":{"tax_id":{"description":"The selected custom tax ID. Leave blank (\"\") to use the default tax.","type":"string"}},"type":"object"},"composite_components":{"description":"A full list of composite components.","items":{"properties":{"product_id":{"description":"The ID of the component product.","format":"uuid","type":"string"},"quantity":{"description":"The quantity of the component product.","type":"number"}},"required":["product_id","quantity"],"type":"object"},"type":"array"},"dimensions_unit":{"description":"The unit for any height, width, or length provided.","enum":["IN","CM","MM","YD"],"type":"string"},"height":{"description":"The height of the product. If provided, dimensions_unit for this value must also be provided.","type":"number"},"inventory":{"description":"A list of inventory outlet information to update.","items":{"properties":{"current_amount":{"description":"Current inventory quantity of the product at the given outlet.","type":"number"},"outlet_id":{"description":"The outlet ID.","type":"string"},"reorder_amount":{"description":"The default of the quantity for auto-filled inventory orders.","type":"number"},"reorder_point":{"description":"Quantity below which the product should be included in the auto-filled inventory orders. use -1 to clear the reorder point.","type":"number"}},"required":["outlet_id"],"type":"object"},"type":"array"},"is_active":{"description":"True to enable Sell on POS, false to disable.","type":"boolean"},"length":{"description":"The length of the product. If provided, dimensions_unit for this value must also be provided.","type":"number"},"loyalty_amount":{"description":"The custom loyalty amount. -1 to use the default loyalty amount.","type":"number"},"outlet_taxes":{"description":"A list of outlet taxes to update on a product for tax exclusive store.","items":{"properties":{"outlet_id":{"description":"The outlet ID to apply the tax.","type":"string"},"tax_id":{"description":"The selected custom tax ID. Leave blank (\"\") to use the default tax.","type":"string"}},"type":"object"},"type":"array"},"packaging":{"description":"Packaging this product belongs to.","items":{"properties":{"amount":{"type":"number"},"destination_product_id":{"format":"uuid","type":"string"},"source_product_id":{"format":"uuid","type":"string"}},"type":"object"},"type":"array"},"price_excluding_tax":{"description":"Price exclusive of tax. For tax exclusive store.","type":"number"},"price_including_tax":{"description":"Price inclusive of tax. For tax inclusive store.","type":"number"},"product_codes":{"description":"A full list of product codes for the product. The first product code is used as the default product code.","items":{"properties":{"code":{"description":"The product code value.","type":"string"},"type":{"enum":["CUSTOM","EAN","ISBN","ITF","JAN","UPC"],"type":"string"}},"required":["code"],"type":"object"},"type":"array"},"product_suppliers":{"description":"A list of suppliers and its details if the supplier needs updating. The supplier referenced by this subset must be a supplier associated to the product family.\n","items":{"$ref":"#/components/schemas/ProductUpdate21Supplier"},"type":"array"},"variant_attribute_values":{"description":"A list of values for the variant attributes defined for the product. The attributes used here must match the product family.","items":{"properties":{"attribute_id":{"description":"The variant attribute id. This variant attribute must be an attribute on the product family.","type":"string"},"attribute_value":{"description":"The value for the variant attribute.","type":"string"}},"required":["attribute_id","attribute_value"],"type":"object"},"type":"array"},"weight":{"description":"The weight of the product. If provided, weight_unit for this value must also be provided.","type":"number"},"weight_unit":{"description":"The unit for the weight provided.","enum":["CT","G","OZ","LB","KG"],"type":"string"},"width":{"description":"The width of the product. If provided, dimensions_unit for this value must also be provided.","type":"number"}},"type":"object"}},"title":"Product Update 2.1 Request","type":"object"},"ProductUpdate21Supplier":{"properties":{"code":{"description":"The supplier's code or reference for the product. To remove the code, please provide empty value \"\".","type":"string"},"price":{"description":"The cost of supply for the product. -1 price will delete the price.","type":"number"},"supplier_id":{"description":"The supplier ID.","type":"string"}},"title":"Product Update 2.1 Product Supplier Request","type":"object"},"PromoCode":{"properties":{"code":{"description":"Code for use in the promotion.","type":"string"},"created_at":{"description":"Time the code was created.","type":"string"},"created_user":{"$ref":"#/components/schemas/User"},"created_user_id":{"description":"Created User ID.","type":"string"},"group_name":{"description":"Name of the group.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"limit":{"description":"Redemption limit for this promotion.","type":"integer"},"promotion_id":{"description":"Promotion ID.","type":"string"},"redeemed":{"description":"Number of times this code has been redeemed.","type":"integer"}},"required":["code"],"title":"Promotion Code","type":"object","x-examples":{"example-1":{"code":"string","created_at":"string","created_user":{"account_type":"cashier","created_at":"string","deleted_at":"string","display_name":"string","email":"user@example.com","email_verified_at":"string","id":"497f6eca-6276-4993-bfeb-53cbbbba6f08","image_source":"string","images":{"original":"string","sl":"string","sm":"string","ss":"string","st":"string","standard":"string","thumb":"string"},"is_primary_user":true,"permissions":["string"],"restricted_outlet_id":"string","restricted_outlet_ids":["497f6eca-6276-4993-bfeb-53cbbbba6f08"],"seen_at":"string","target_daily":0,"target_monthly":0,"target_weekly":0,"updated_at":"string","username":"string","version":0},"created_user_id":"string","group_name":"string","id":"string","limit":0,"promotion_id":"string","redeemed":0}}},"PromoCodeValidation":{"properties":{"promo_code":{"description":"The promo code itself.","type":"string"},"promo_code_id":{"description":"ID for the promo code.","nullable":true,"type":"string"},"promotion_id":{"description":"ID for the promotion.","nullable":true,"type":"string"},"status":{"description":"Status field for the promo code.","type":"string"}},"required":["promo_code","status"],"title":"Promo Code validation result","type":"object"},"PromoCodesMap":{"additionalProperties":{"description":"A map of promo codes to booleans.","type":"boolean"},"title":"Map of Promo Codes to booleans","type":"object"},"Promotion":{"description":"A Promotion defines rules and actions for discounting products as part of a sales promotion.","properties":{"action":{"$ref":"#/components/schemas/Action"},"add_promo_code":{"description":"A list of promo codes to associate with this promotion.","items":{"$ref":"#/components/schemas/PromoCode"},"type":"array"},"channels":{"description":"A list of channels for the promotion. Can be `Register`, `Ecommerce`.","items":{"type":"string"},"type":"array"},"condition":{"$ref":"#/components/schemas/Condition"},"customer_group_ids":{"description":"A list of customer group IDs for the promotion.","items":{"type":"string"},"type":"array"},"description":{"description":"A short description for the promotion.","type":"string"},"end_time":{"description":"The time the promotion ends, in UTC, e.g. `2006-01-02T15:04:05`.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"loyalty_multiplier":{"description":"The loyalty multiplier for the promotion.","format":"double","type":"number"},"name":{"description":"The name of the promotion.","type":"string"},"outlet_ids":{"description":"A list of outlet IDs for the promotion.","items":{"type":"string"},"type":"array"},"promo_code_summary":{"$ref":"#/components/schemas/PromotionPromoCodeSummary"},"start_time":{"description":"The time the promotion begins, in UTC, e.g. `2006-01-02T15:04:05`.","type":"string"},"status":{"description":"The status of the promotion.","type":"string"},"use_promo_code":{"description":"Whether or not this promotion uses promo codes.","type":"boolean"}},"required":["action","condition","name","start_time","use_promo_code"],"title":"Promotion","type":"object"},"PromotionActivePromoCodesResponse":{"properties":{"data":{"$ref":"#/components/schemas/PromoCodesMap"}},"title":"Promotion Promo Codes response","type":"object"},"PromotionCollection":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PromotionResponse"},"type":"array"}},"title":"Promotion Collection","type":"object"},"PromotionDeletePromoCodesResponse":{"description":"An array of codes which were not deleted.","items":{"type":"string"},"title":"Promotion Promo Codes response","type":"array"},"PromotionDescription":{"description":"Basic description for a Promotion.","properties":{"description":{"description":"A short description for the promotion.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"description":"The name of the promotion.","type":"string"}},"title":"PromotionDescription","type":"object"},"PromotionProductsResponse":{"properties":{"data":{"properties":{"action_products":{"description":"A list of product IDs that are required to fulfill the promotion action.","items":{"$ref":"#/components/schemas/Product"},"type":"array"},"condition_products":{"description":"A list of product IDs that meet the promotion condition.","items":{"$ref":"#/components/schemas/Product"},"type":"array"}},"type":"object"}},"title":"Promotion Products response","type":"object"},"PromotionPromoCodeSummary":{"properties":{"redeemed_amount":{"description":"The redeemed amount","type":"number"},"total_promo_code":{"description":"The total for the promo code","type":"number"}},"title":"Promotion Promo Code Summary","type":"object"},"PromotionPromoCodesResponse":{"properties":{"data":{"description":"An array of promotion promo codes.","items":{"properties":{"code":{"type":"string"},"created_at":{"format":"date-time","type":"string"},"created_user_id":{"type":"string"},"group_name":{"nullable":true,"type":"string"},"id":{"type":"string"},"limit":{"type":"integer"},"promotion_id":{"type":"string"},"redeemed":{"type":"integer"}},"type":"object"},"type":"array"}},"title":"Promotion Promo Codes response"},"PromotionResponse":{"description":"A Promotion defines rules and actions for discounting products as part of a sales promotion.","properties":{"action":{"$ref":"#/components/schemas/Action"},"add_promo_code":{"description":"A list of promo codes to associate with this promotion.","items":{"$ref":"#/components/schemas/PromoCode"},"type":"array"},"channels":{"description":"A list of channels for the promotion. Can be `Register`, `Ecommerce`.","items":{"type":"string"},"type":"array"},"condition":{"$ref":"#/components/schemas/Condition"},"customer_group_ids":{"description":"A list of customer group IDs for the promotion.","items":{"type":"string"},"type":"array"},"description":{"description":"A short description for the promotion.","type":"string"},"end_time":{"description":"The time the promotion ends, in UTC, e.g. `2006-01-02T15:04:05`.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"loyalty_multiplier":{"description":"The loyalty multiplier for the promotion.","format":"double","type":"number"},"name":{"description":"The name of the promotion.","type":"string"},"outlet_ids":{"description":"A list of outlet IDs for the promotion.","items":{"type":"string"},"type":"array"},"promo_code_summary":{"description":"A summary of the added promo codes added.","items":{"$ref":"#/components/schemas/PromotionPromoCodeSummary"},"type":"array"},"recurring_promotion":{"$ref":"#/components/schemas/RecurringPromotion"},"start_time":{"description":"The time the promotion begins, in UTC, e.g. `2006-01-02T15:04:05`.","type":"string"},"status":{"description":"The status of the promotion.","type":"string"},"use_promo_code":{"description":"Whether or not this promotion uses promo codes.","type":"boolean"}},"title":"Promotion response","type":"object"},"Quote":{"properties":{"created_at":{"type":"string"},"customer_id":{"type":"string"},"deleted_at":{"nullable":true,"type":"string"},"expired_at":{"type":"string"},"grand_total":{"type":"number"},"id":{"type":"string"},"loyalty":{"nullable":true,"type":"number"},"note":{"nullable":true,"type":"string"},"outlet_id":{"type":"string"},"products":{"items":{"$ref":"#/components/schemas/QuoteProduct"},"type":"array"},"register_id":{"type":"string"},"retailer_id":{"type":"string"},"sales_ids":{"items":{"nullable":true,"type":"string"},"nullable":true,"type":"array"},"short_code":{"type":"string"},"status":{"type":"string"},"total_price":{"type":"number"},"total_tax":{"type":"number"},"updated_at":{"type":"string"},"user_id":{"type":"string"}},"type":"object","x-examples":{"example-1":{"created_at":"2022-10-18T10:50:32.11075Z","customer_id":"0242ac11-0002-11ea-eb21-8ab06c5364f5","deleted_at":null,"expired_at":"2022-11-17T10:50:32.110752Z","grand_total":40,"id":"1582323235375263744","loyalty":0.1,"note":"","outlet_id":"0242ac12-0002-11e9-e8c4-659494e196e3","products":[],"register_id":"0242ac12-0002-11e9-e8c4-659494e17cee","retailer_id":"00000000-0001-0001-0001-000000000001","sales_ids":["3bb73da7-100e-b22d-11ed-3e4f2ef71242","3bb73da7-100e-b9fb-11ed-3e524bc97ad5"],"short_code":"1","status":"CREATED","total_price":34.78261,"total_tax":5.21739,"updated_at":"2022-10-18T10:50:32.255336Z","user_id":"08002782-0c90-11e6-e3ed-117ec127b1ca"}}},"QuoteProduct":{"properties":{"discount":{"type":"number"},"id":{"type":"string"},"note":{"type":"string"},"price":{"type":"number"},"product_id":{"type":"string"},"product_tax_components":{"items":{"$ref":"#/components/schemas/QuotesProductsTaxComponents"},"type":"array"},"quantity":{"type":"integer"},"quote_id":{"type":"string"},"salesperson_id":{"type":"string"},"sequence":{"type":"integer"},"tax":{"type":"number"},"tax_id":{"type":"string"}},"type":"object","x-examples":{"example-1":{"discount":20,"id":"1582323235375263747","note":"","price":17.3913,"product_id":"0242ac12-0002-11e9-e8c4-659494e33153","product_tax_components":[{"id":"1582323235375263748","quote_product_id":"1582323235375263747","rate_id":"06b96260-3efa-11ed-a218-0242ac110002","total_tax":2.6087}],"quantity":1,"quote_id":"1582323235375263744","salesperson_id":"08002782-0c90-11e6-e3ed-117ec127b1ca","sequence":1,"tax":2.6087,"tax_id":"00000000-0002-0002-0002-000000000003"}}},"QuotesCollection":{"properties":{"HasNext":{"type":"boolean"},"Quotes":{"items":{"$ref":"#/components/schemas/Quote"},"type":"array"},"TotalCount":{"type":"integer"}},"type":"object","x-examples":{"example-1":{"HasNext":false,"Quotes":[{"created_at":"2022-10-18T10:50:32.11075Z","customer_id":"0242ac11-0002-11ea-eb21-8ab06c5364f5","deleted_at":null,"expired_at":"2022-11-17T10:50:32.110752Z","grand_total":20,"id":"1582323235375263744","loyalty":0.1,"note":"","outlet_id":"0242ac12-0002-11e9-e8c4-659494e196e3","products":[{"discount":20,"id":"1582323235375263745","note":"","price":17.3913,"product_id":"0242ac12-0002-11e9-e8c4-659494e33153","product_tax_components":[{"id":"1582323235375263748","quote_product_id":"1582323235375263747","rate_id":"06b96260-3efa-11ed-a218-0242ac110002","total_tax":2.6087}],"quantity":1,"quote_id":"1582323235375263744","salesperson_id":"08002782-0c90-11e6-e3ed-117ec127b1ca","sequence":0,"tax":2.6087,"tax_id":"00000000-0002-0002-0002-000000000003"}],"register_id":"0242ac12-0002-11e9-e8c4-659494e17cee","retailer_id":"00000000-0001-0001-0001-000000000001","sales_ids":null,"short_code":"1","status":"CREATED","total_price":34.78261,"total_tax":5.21739,"updated_at":"2022-10-18T10:50:32.255336Z","user_id":"08002782-0c90-11e6-e3ed-117ec127b1ca"}],"TotalCount":1}}},"QuotesProductsTaxComponents":{"properties":{"id":{"type":"string"},"quote_product_id":{"type":"string"},"rate_id":{"type":"string"},"total_tax":{"type":"number"}},"type":"object","x-examples":{"example-1":{"id":"1582323235375263746","quote_product_id":"1582323235375263745","rate_id":"06b96260-3efa-11ed-a218-0242ac110002","total_tax":2.6087}}},"RateRule":{"description":"Rule that applies to a rate.\nE.g.: Tax rate that applies for clothing and footwear costing $90 or more.","properties":{"tax_code":{"description":"Label assigned to a product which indicates the tax obligation.","enum":["vend_clothing_footwear"],"example":"vend_clothing_footwear","type":"string"},"type":{"description":"Type of rule to apply.","enum":["threshold"],"example":"threshold","type":"string"},"value":{"description":"An optional value that can be used for the rule.","example":90,"type":"number"}},"required":["tax_code","type"],"title":"Rate Rule","type":"object"},"ReceiptSettings":{"properties":{"created_at":{"format":"date-time","type":"string"},"default_type":{"description":"Derived from the internal type field. \"Standard Invoice\" maps to \"a4\"; all other types (80-90mm thermal, Standard Thermal Receipt, etc.) map to \"thermal\".\n","enum":["thermal","a4"],"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"id":{"type":"string"},"locale":{"description":"BCP 47 language tag (e.g. \"en-NZ\")","type":"string"},"name":{"type":"string"},"settings":{"$ref":"#/components/schemas/ReceiptSettingsData"},"style_id":{"type":"integer"},"updated_at":{"format":"date-time","type":"string"},"version":{"format":"int64","type":"integer"}},"required":["id","name","default_type","version","created_at","updated_at"],"type":"object"},"ReceiptSettingsCollection":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ReceiptSettings"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"required":["data","version"],"type":"object"},"ReceiptSettingsData":{"additionalProperties":true,"description":"Additional boolean display attributes (e.g. DisplayCustomerCode, DisplayProductName, DisplayCustomerDetails, etc.) may appear as extra fields sourced from the displayAttributes map stored per receipt template.\n","properties":{"DisplayLineDiscount":{"default":true,"type":"boolean"},"DisplayLoyaltyEarned":{"default":true,"description":"Only present when loyalty is enabled","type":"boolean"},"DisplayLoyaltyLink":{"default":true,"description":"Only present when loyalty is enabled","type":"boolean"},"DisplayServedBy":{"default":true,"type":"boolean"},"DisplayTax":{"default":true,"type":"boolean"},"EmailSubject":{"type":"string"},"Footer":{"type":"string"},"Header":{"type":"string"},"LabelChange":{"default":"Change","type":"string"},"LabelInvoiceTitle":{"default":"Receipt / Tax Invoice","type":"string"},"LabelLineDiscount":{"default":"Less discount ","type":"string"},"LabelLoyalty":{"description":"Only present when loyalty is enabled","type":"string"},"LabelLoyaltyEarned":{"default":"Loyalty earned","description":"Only present when loyalty is enabled","type":"string"},"LabelLoyaltyLink":{"description":"Only present when loyalty is enabled. Value includes retailer name.","type":"string"},"LabelLoyaltyTotal":{"default":"Loyalty","description":"Only present when loyalty is enabled","type":"string"},"LabelServedBy":{"default":"Served by:","type":"string"},"LabelSubTotal":{"default":"Subtotal","type":"string"},"LabelTax":{"default":"Total Tax","type":"string"},"LabelTipAmount":{"default":"Tip","type":"string"},"LabelToPay":{"default":"TO PAY","type":"string"},"LabelTotal":{"default":"TOTAL","type":"string"},"LogoURL":{"type":"string"}},"type":"object"},"RecurringPromotion":{"properties":{"end_time":{"description":"The time the recurring promotion ends.","type":"string"},"id":{"description":"Recurring Promotion ID.","type":"string"},"occurrence_type":{"description":"The occurrence type of the recurring promotion.","type":"string"},"recurring_promotion_occurrences":{"description":"A list of the promotion occurrences.","items":{"$ref":"#/components/schemas/RecurringPromotionOccurrence"},"type":"array"},"start_time":{"description":"The time the recurring promotion begins.","type":"string"}},"title":"Recurring Promotion","type":"object"},"RecurringPromotionOccurrence":{"properties":{"day_of_week":{"description":"The day of week of the recurring promotion.","type":"string"},"id":{"description":"Recurring Promotion occurrence ID.","type":"string"}},"title":"Recurring Promotion occurrence","type":"object"},"Register":{"properties":{"ask_for_note_on_save":{"description":"`0` for **Never**, `1` for **On Save/Layby/Account/Return**, `2` for **Always**.","format":"double","type":"number"},"ask_for_user_on_sale":{"type":"boolean"},"button_layout_id":{"description":"Register ID.","nullable":true,"type":"string"},"cash_managed_payment_type_id":{"description":"**internal** The ID of the payment type used for cash management transactions in this regsiter.","nullable":true,"type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"email_receipt":{"description":"Indicates whether a receipt should be emailed after a sale.","type":"boolean"},"id":{"description":"Auto-generated object ID.","type":"string"},"invoice_prefix":{"description":"Invoice number prefix.","type":"string"},"invoice_sequence":{"description":"The numeric part of the last issued invoice.","format":"double","type":"number"},"invoice_suffix":{"description":"Invoice number suffix.","type":"string"},"is_open":{"description":"Indicates if the Register is currently open.","type":"boolean"},"name":{"description":"The Register name.","type":"string"},"outlet_id":{"description":"A valid ID of an Outlet that this register is associated with.","type":"string"},"print_note_on_receipt":{"type":"boolean"},"print_receipt":{"description":"Indicates whether a receipt should be printed after a sale.","type":"boolean"},"receipt_template_id":{"description":"Default receipt template ID used for this register.","type":"string"},"register_close_time":{"description":"Date/time when the register was closed. Null if currently open.","nullable":true,"type":"string"},"register_open_sequence_id":{"description":"**internal** The ID of the current register closure object.","nullable":true,"type":"string"},"register_open_time":{"description":"Date/time when the register was open. Always in UTC.","nullable":true,"type":"string"},"show_discounts_on_receipts":{"type":"boolean"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"Register","type":"object"},"RegisterClosePaymentType":{"properties":{"payment_type_id":{"description":"The ID of the Payment Type.","type":"string"},"total":{"description":"The Total amount for this Payment Type.","type":"string"}},"title":"Register Close Payment Type","type":"object"},"RegisterCloseRequest":{"properties":{"payments":{"description":"An array Register objects wrapped in a top level `data` object.","items":{"$ref":"#/components/schemas/RegisterClosePaymentType"},"type":"array"}},"title":"Register Close Request","type":"object"},"RegisterCollection":{"properties":{"data":{"description":"An array Register objects wrapped in a top level `data` object.","items":{"$ref":"#/components/schemas/Register"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Register Collection","type":"object"},"RegisterOpenRequest":{"properties":{"register_open_time":{"description":"Date/time when the register was open. Always in UTC.","type":"string"}},"title":"Register Open Request","type":"object"},"RegisterPaymentSummaryPaymentType":{"properties":{"payment_type_id":{"description":"The ID of the Payment Type.","format":"uuid","type":"string"},"payment_type_name":{"description":"The name of the Payment Type.","type":"string"},"total":{"description":"The Total amount for this Payment Type.","type":"string"}},"title":"Register Payments Summary Payment Type","type":"object"},"RegisterPaymentsSummary":{"properties":{"payments":{"items":{"$ref":"#/components/schemas/RegisterPaymentSummaryPaymentType"},"type":"array"}},"title":"Register Payments Summary","type":"object"},"RegisterPaymentsSummaryResponse":{"properties":{"data":{"$ref":"#/components/schemas/RegisterPaymentsSummary"}},"title":"Register Payments Summary Response","type":"object"},"RegisterResponse":{"properties":{"data":{"$ref":"#/components/schemas/Register"}},"title":"Register Response","type":"object"},"RemoteBusinessRule":{"description":"The configuration of a remote business rule.","properties":{"created_at":{"description":"The creation timestamp in UTC.","format":"date-time","readOnly":true,"type":"string"},"id":{"example":"1239349157873029120","readOnly":true,"type":"string"},"oauth_application_id":{"description":"The ID of the application the created the remote business rule.","example":"043eec148ae192a2d88b1d658e8084a3","readOnly":true,"type":"string"},"url":{"example":"https://retailer.com/vend-business-rule","format":"uri","type":"string"}},"required":["url"],"title":"Remote Business Rules","type":"object"},"RemoteBusinessRuleParams":{"description":"The parameters that can be passed to the create remote rule API.","properties":{"url":{"example":"https://retailer.com/vend-business-rule","format":"uri","type":"string"}},"required":["url"],"title":"Remote Rule Parameters","type":"object"},"RequestCollectionResponse":{"description":"A collection of request log records wrapped in the top-level data object.","properties":{"data":{"items":{"$ref":"#/components/schemas/RequestLog"},"type":"array"}},"title":"Request Logs response","type":"object"},"RequestLog":{"description":"An object representing a single request and response made to a channel.","properties":{"error":{"description":"f an error occurred with the request, such as an inability to resolve a hostname, connect or TLS errors, this will be recorded here. Only errors with the ability to make the request are logged here, rather than errors when interpreting a response.","nullable":true,"type":"string"},"grouping_id":{"description":"An identifier used to group together requests that occurred together as part of the same job or Lightspeed Retail (X-Series) API request.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"occurred_at":{"description":"An RFC3339 representation of the time at which the request was logged.","format":"date-time","type":"string"},"request":{"description":"A dump of the full request information in HTTP format, including headers and any request body.","type":"string"},"request_method":{"description":"The HTTP method used to make the request.","enum":["GET","POST","PUT","DELETE"],"type":"string"},"response":{"description":"A dump of the full response information in HTTP format, including headers and any response body.","type":"string"},"status_code":{"description":"The HTTP status code received in the response.","type":"number"}},"required":["grouping_id","id","occurred_at","request","request_method","response"],"title":"Request Log","type":"object"},"RequestSingleResponse":{"description":"A single request log record wrapped in the top-level data object.","properties":{"data":{"$ref":"#/components/schemas/RequestLog"}},"title":"Request Log response","type":"object"},"Retailer":{"description":"A Retailer record.","properties":{"account_status":{"description":"Status of this account.","type":"string"},"account_type":{"description":"Type of this account.","type":"string"},"activated_at":{"description":"Activation timestamp, e.g. '2019-08-15T23:05:28Z'. This field can be null, e.g. for 'demo' retailers.","type":"string"},"country":{"description":"2-letter country code for this Retailer.","type":"string"},"created_at":{"description":"Creation timestamp, e.g. '2019-08-15T23:05:28Z'","type":"string"},"culture":{"description":"Culture (language name) for this Retailer.","type":"string"},"currency":{"$ref":"#/components/schemas/RetailerCurrency"},"discount_product_id":{"description":"A reference to the default discount product used for sale-level discounts.","format":"uuid","type":"string"},"domain_prefix":{"description":"The subdomain of vendhq.com for this retailer.","type":"string"},"gift_cards":{"properties":{"enabled":{"description":"Whether the Retailer has enabled Gift Cards.","type":"boolean"},"never_enabled":{"description":"Whether the Retailer has _never_ had Gift Cards enabled. Can be used to indicate whether historical Gift Card data exists.","type":"boolean"}},"type":"object"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"loyalty":{"properties":{"claim_url":{"description":"URL for this Retailer's Loyalty plan.","type":"string"},"enabled":{"description":"Whether Loyalty has been enabled.","type":"boolean"},"ratio":{"description":"Ratio of Loyalty Points.","type":"number"},"send_welcome_email":{"description":"Denotes Whether the Retailer's Loyalty plan is configured to send Welcome emails.","type":"boolean"}},"type":"object"},"name":{"description":"Unique name for this Retailer.","type":"string"},"no_tax_group_id":{"description":"A reference to the default 0% rate tax used for tax-free line items.","format":"uuid","type":"string"},"sku_sequence":{"properties":{"enabled":{"description":"Whether the Retailer has enabled auto-generation of SKUs, in a numeric sequence.","type":"boolean"},"value":{"description":"The current value of the auto-generated SKU.","type":"integer"}},"type":"object"},"store_credit":{"description":"Whether the Retailer has enabled Store Credit.","type":"boolean"},"store_url":{"description":"URL for the store itself.","type":"string"},"tax_exclusive":{"description":"Whether Prices should be interpreted as Tax-Exclusive.","type":"boolean"},"timezone":{"description":"Default Timezone for retailer - e.g. Pacific/Auckland. NOTE: timezones can vary between Outlets.","type":"string"},"version":{"description":"Auto-incrementing object version number.","type":"string"}},"title":"Retailer","type":"object"},"RetailerCurrency":{"properties":{"code":{"description":"3-letter Currency Code for this Retailer.","type":"string"},"symbol":{"description":"Currency Symbol for this Retailer.","type":"string"}},"title":"Retailer Currency","type":"object"},"RetailerResponse":{"description":"A Retailer record wrapped in the top-level data object.","properties":{"data":{"$ref":"#/components/schemas/Retailer"}},"title":"Retailer response","type":"object"},"Role":{"properties":{"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"description":"The Role name.","type":"string"},"system_role_id":{"description":"A system role id of the Role. Will be either '100', '200', or '300'.","type":"string"}},"title":"Role","type":"object"},"Sale":{"description":"Sale object","properties":{"_metadata":{"$ref":"#/components/schemas/SaleResponseMetadata"},"adjustments":{"description":"Collection of aggregated adjustments.","items":{"$ref":"#/components/schemas/SaleAdjustment"},"type":"array"},"attributes":{"description":"Attributes for this sale.","items":{"type":"string"},"type":"array"},"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"customer_id":{"description":"The ID of the customer associated with this sale.","format":"uuid","type":"string"},"date":{"description":"Sale timestamp in UTC.","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","type":"string"},"ecom_custom_charges":{"$ref":"#/components/schemas/EcomCustomCharges"},"external_applications":{"description":"External applications associated with the sale.","items":{"type":"object"},"type":"array"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"invoice_number":{"description":"Invoice number which if provided, should use the prefix and suffix defined for the register.","type":"string"},"line_items":{"description":"Collection of line items.","items":{"$ref":"#/components/schemas/SaleResponseLineItem"},"type":"array"},"note":{"description":"Sale Note.","type":"string"},"payments":{"description":"Collection of payments.","items":{"$ref":"#/components/schemas/SaleResponsePayment"},"type":"array"},"receipt_number":{"description":"The receipt number for the sale.","type":"string"},"return":{"$ref":"#/components/schemas/SaleReturn"},"short_code":{"description":"Short, unique code used for loyalty tracking purposes.","type":"string"},"source":{"$ref":"#/components/schemas/SaleResponseSource"},"state":{"description":"State of the sale.","enum":["parked","pending","voided","closed"],"type":"string"},"taxes":{"description":"Collection of taxes.","items":{"$ref":"#/components/schemas/SaleResponseTax"},"type":"array"},"totals":{"$ref":"#/components/schemas/SaleTotals"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"}},"title":"Sale","type":"object"},"SaleAdjustment":{"properties":{"amount":{"$ref":"#/components/schemas/AdjustmentAmount"},"name":{"description":"The name of the adjustment.","type":"string"},"source":{"$ref":"#/components/schemas/AdjustmentSource"},"type":{"description":"The type of the adjustment.","enum":["NON_CASH_FEE","DISCOUNT","TIP"],"type":"string"}},"required":["type"],"title":"Sale Adjustment","type":"object"},"SaleAuthor":{"properties":{"id":{"description":"The ID of the user (cashier) who created the sale.","format":"uuid","type":"string"},"name":{"description":"The username of the user who created the sale.","type":"string"}},"title":"Sale Author","type":"object"},"SaleCollection":{"properties":{"data":{"description":"An array of Sales wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Sale"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Sale Collection","type":"object"},"SaleCreateResponse":{"properties":{"data":{"properties":{"id":{"description":"The ID of the created sale.","format":"uuid","type":"string"}},"type":"object"}},"title":"Sale Create Response","type":"object"},"SaleLineItem":{"properties":{"_metadata":{"$ref":"#/components/schemas/LineItemMetadata"},"attributes":{"description":"Additional line item attributes.","items":{"$ref":"#/components/schemas/LineItemAttribute"},"type":"array"},"id":{"description":"Existing line item ID. If included in the POST request it will cause an update instead of a creating a new object.","format":"uuid","type":"string"},"pricing":{"$ref":"#/components/schemas/LineItemPricing"},"product":{"$ref":"#/components/schemas/LineItemProduct"},"quantity":{"description":"Quantity of products for the line item.","format":"double","type":"number"},"source":{"$ref":"#/components/schemas/LineItemSource"},"status":{"description":"If defined as `CONFIRMED` for pending sales, the line item will be added as **read-only**.","type":"string"},"tax":{"$ref":"#/components/schemas/LineItemTax"}},"required":["product","quantity","pricing","tax"],"title":"Sale Line Item","type":"object"},"SaleMetadata":{"properties":{"invoice":{"$ref":"#/components/schemas/InvoiceMetadata"},"xero_reference":{"description":"Xero invoice reference ID. Only editable for `ONACCOUNT` sales.","type":"string"}},"title":"Sale Metadata","type":"object"},"SalePayment":{"properties":{"amount":{"description":"Payment amount.","format":"double","type":"number"},"date":{"description":"The date and time of the payment.","type":"string"},"id":{"description":"Existing payment ID. If included in the POST request it will cause an update instead of a creating a new supplier.","format":"uuid","type":"string"},"source":{"$ref":"#/components/schemas/PaymentSource"},"type":{"$ref":"#/components/schemas/PaymentTypeConfig"}},"required":["amount","type"],"title":"Sale Payment","type":"object"},"SalePricing":{"properties":{"adjustments":{"description":"Adjustments.","items":{"$ref":"#/components/schemas/SaleAdjustment"},"type":"array"}},"title":"Sale Pricing","type":"object"},"SaleRequest":{"allOf":[{"$ref":"#/components/schemas/SaleRequestBase"},{"properties":{"id":{"description":"Existing sale ID. If included in the POST request it will cause an update instead of creating a new object.","format":"uuid","type":"string"}},"type":"object"}],"description":"Editable attributes of the sale.","title":"Sale Request"},"SaleRequestBase":{"description":"Editable attributes of the sale.","properties":{"_metadata":{"$ref":"#/components/schemas/SaleMetadata"},"attributes":{"description":"An array of attributes","example":["onaccount"],"items":{"description":"Attributes for this sale","type":"string"},"type":"array"},"customer_id":{"description":"The ID of the customer associated with this sale.","format":"uuid","type":"string"},"date":{"description":"The date of the sale in RFC3339 format. If not provided will be added as the time the sale reached the server.","example":"2009-11-10T23:00:00Z","type":"string"},"fulfillment_details":{"description":"Fulfillment details for DISPATCH or PICKUP fulfillments.","items":{"$ref":"#/components/schemas/FulfillmentDetail"},"type":"array"},"invoice_number":{"description":"The invoice number for the sale. If left null it will be populated by Lightspeed with the next available invoice number.","type":"string"},"line_items":{"description":"Line items.","items":{"$ref":"#/components/schemas/SaleLineItem"},"type":"array"},"note":{"description":"A note on the sale entered by the cashier.","type":"string"},"payments":{"description":"Payments.","items":{"$ref":"#/components/schemas/SalePayment"},"type":"array"},"pricing":{"$ref":"#/components/schemas/SalePricing"},"short_code":{"description":"Short, unique code to be printed on the receipt for loyalty tracking purposes.","type":"string"},"source":{"$ref":"#/components/schemas/SaleRequestSource"},"state":{"description":"State of the sale.","enum":["parked","pending","voided","closed"],"example":"closed","type":"string"}},"required":["source","state"],"title":"Sale Request Base","type":"object"},"SaleRequestSource":{"properties":{"author_id":{"description":"The ID of the user (cashier) who created the sale.","format":"uuid","type":"string"},"id":{"description":"The ID of the sale on the client side or another system where the sale was originally created.","type":"string"},"register_id":{"description":"The ID of the register where the sale was created.","format":"uuid","type":"string"},"type":{"description":"This is the identifier of the 3rd party system that the `source_id` is associated with. 'Xero' or 'Magento' would be examples.","type":"string"}},"required":["author_id"],"title":"Sale Request Source","type":"object"},"SaleResponse":{"properties":{"data":{"$ref":"#/components/schemas/Sale"}},"title":"Sale Response","type":"object"},"SaleResponseLineItem":{"properties":{"_metadata":{"$ref":"#/components/schemas/LineItemResponseMetadata"},"attributes":{"description":"Additional line item attributes.","items":{"$ref":"#/components/schemas/LineItemAttribute"},"type":"array"},"customizations":{"description":"Product customizations for this line item.","items":{"type":"object"},"type":"array"},"gift_card_number":{"description":"Gift card number if this line item is a gift card.","type":"string"},"id":{"description":"The ID of this line item.","format":"uuid","type":"string"},"note":{"description":"Line item note.","type":"string"},"pricing":{"$ref":"#/components/schemas/LineItemResponsePricing"},"product":{"$ref":"#/components/schemas/LineItemProductDetails"},"promotions":{"description":"Promotions applied to this line item.","items":{"$ref":"#/components/schemas/LineItemPromotion"},"type":"array"},"quantity":{"description":"Quantity of products for the line item.","format":"double","type":"number"},"return":{"$ref":"#/components/schemas/LineItemReturn"},"salesperson_id":{"description":"The ID of the salesperson associated with this line item. Salesperson IDs can be retrieved from the /api/2.0/users endpoint. Only needed when this line item is not sold by current login user.","format":"uuid","type":"string"},"source":{"$ref":"#/components/schemas/LineItemResponseSource"},"status":{"description":"If defined as `CONFIRMED` for pending sales, the line item will be added as **read-only**.","type":"string"},"surcharges":{"description":"Collection of surcharges associated with the line item.","items":{"type":"object"},"type":"array"},"tax":{"$ref":"#/components/schemas/LineItemResponseTax"}},"title":"Sale Response Line Item","type":"object"},"SaleResponseMetadata":{"properties":{"market_id":{"description":"Market ID.","type":"string"},"revenue_recognised":{"description":"Whether revenue has been recognised.","type":"boolean"},"revenue_recognition_feature":{"description":"Whether revenue recognition feature is enabled.","type":"boolean"},"version":{"description":"Monotonically increasing version number of the sale.","type":"integer"},"xero_reference":{"description":"Xero invoice reference ID. Only editable for `ONACCOUNT` sales.","type":"string"}},"title":"Sale Response Metadata","type":"object"},"SaleResponsePayment":{"properties":{"_metadata":{"$ref":"#/components/schemas/PaymentResponseMetadata"},"amount":{"description":"Payment amount.","format":"double","type":"number"},"billing_address_id":{"description":"The ID of the billing address associated with this payment.","format":"uuid","type":"string"},"date":{"description":"Payment date in UTC.","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","type":"string"},"external_applications":{"description":"External applications associated with the payment.","items":{"type":"object"},"type":"array"},"external_attributes":{"description":"External attributes for the payment.","items":{"type":"object"},"type":"array"},"id":{"description":"Auto-generated payment ID.","format":"uuid","type":"string"},"integrations":{"description":"Payment integration details.","items":{"$ref":"#/components/schemas/PaymentIntegration"},"type":"array"},"source":{"$ref":"#/components/schemas/PaymentResponseSource"},"surcharge":{"description":"Surcharge amount for the payment.","format":"double","type":"number"},"type":{"$ref":"#/components/schemas/PaymentTypeDetails"}},"title":"Sale Response Payment","type":"object"},"SaleResponseSource":{"properties":{"author":{"$ref":"#/components/schemas/SaleAuthor"},"id":{"description":"The ID of the sale on the client side or another system where the sale was originally created.","type":"string"},"register_id":{"description":"The ID of the register where the sale was created.","format":"uuid","type":"string"},"type":{"description":"This is the identifier of the 3rd party system that the `source_id` is associated with. 'Xero' or 'Magento' would be examples.","type":"string"}},"title":"Sale Response Source","type":"object"},"SaleResponseTax":{"properties":{"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"name":{"description":"The name of the tax.","type":"string"},"rate":{"description":"The rate of the tax. `0.1 = 10%`.","format":"double","type":"number"},"tax":{"description":"The total tax value for this tax.","format":"double","type":"number"}},"title":"Sale Response Tax","type":"object"},"SaleReturn":{"properties":{"is_return":{"description":"Indicates whether this sale is a return.","type":"boolean"},"original_sale_id":{"description":"Reference ID to a different sale if this sale was created as a return.","type":"string"}},"title":"Sale Return","type":"object"},"SaleSurcharge":{"properties":{"amount":{"description":"Surcharge amount.","format":"double","type":"number"},"rule":{"description":"Specifies the rule of the surcharge to be applied. Multiple rules will be consolidated under \"n rates\".","type":"string"}},"title":"Sale Surcharge","type":"object"},"SaleTotals":{"properties":{"cost":{"description":"Total cost of the sale.","format":"double","type":"number"},"payment":{"description":"Total payment value for the sale.","format":"double","type":"number"},"price":{"description":"Total price for this sale.","format":"int32","type":"integer"},"tax":{"description":"Total tax value for this sale.","format":"double","type":"number"},"to_pay":{"description":"Total outstanding payment value.","format":"double","type":"number"}},"title":"Sale Totals","type":"object"},"SaleUpdateRequest":{"allOf":[{"$ref":"#/components/schemas/SaleRequestBase"}],"description":"Editable attributes of the sale for an update operation. The sale ID is provided in the URL.","title":"Sale Update Request"},"SearchResponse":{"properties":{"data":{"description":"A collection of objects of one of the supported types: sales, products or customers.","items":{"type":"object"},"type":"array"}},"title":"Search Response","type":"object"},"SerialNumber":{"properties":{"code":{"description":"The actual serial number value.","type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"line_item_id":{"description":"The ID of the sale line item where this serial number was sold, or null.","format":"uuid","type":"string"},"outlet_id":{"description":"The ID of the outlet where the serial number is located.","format":"uuid","type":"string"},"product_id":{"description":"The ID of the product associated with the serial number.","format":"uuid","type":"string"},"sale_id":{"description":"The ID of the sale where this serial number was sold, or null.","format":"uuid","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"title":"SerialNumber","type":"object"},"SerialNumberCollection":{"properties":{"data":{"description":"An array of Serial Numbers wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/SerialNumber"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Serial Number Collection","type":"object"},"SerialNumberRequest":{"properties":{"code":{"description":"The actual serial number value.","type":"string"},"outlet_id":{"description":"The ID of the outlet where the serial number is located.","format":"uuid","type":"string"},"product_id":{"description":"The ID of the product associated with the serial number.","format":"uuid","type":"string"}},"required":["code","outlet_id","product_id"],"title":"Request to create a sale","type":"object"},"SerialNumberResponse":{"properties":{"data":{"$ref":"#/components/schemas/SerialNumber"}},"title":"Serial Number Response","type":"object"},"ServiceItems":{"properties":{"item_details":{"$ref":"#/components/schemas/ItemDetails"},"location":{"type":"string"}},"title":"ServiceItems","type":"object","x-stoplight":{"id":"2fu3rgyr0q1gp"}},"ServiceNote":{"properties":{"body":{"type":"string"},"createdAt":{"type":"string"},"id":{"type":"string"},"is_visible_to_customer":{"description":"Whether the note should be printed in the service receipt or not","type":"boolean"},"location":{"deprecated":true,"description":"Deprecated: Use top-level location field on ServiceOrder instead. Location where the service will be performed","type":"string"},"serviceId":{"type":"string"},"serviceStatus":{"deprecated":true,"type":"number"},"user":{"$ref":"#/components/schemas/User"},"userId":{"type":"string"}},"title":"ServiceNote","type":"object","x-stoplight":{"id":"2fu3rgyr0q1gp"}},"ServiceOrder":{"properties":{"agenda":{"$ref":"#/components/schemas/DailyAgenda"},"assigned_user_id":{"type":"string"},"created_at":{"type":"string"},"id":{"type":"string"},"line_items":{"description":"Collection of line items associated with this service order.","items":{"properties":{"fulfillment_type":{"description":"Type of fulfillment for this line item.","type":"string"},"gift_card":{"description":"Gift card information if applicable.","nullable":true,"type":"object"},"id":{"description":"The ID of this line item.","type":"string"},"is_picklist_pickable":{"description":"Indicates if this line item can be picked from a picklist.","type":"boolean"},"note":{"description":"Line item note.","type":"string"},"price_set":{"description":"Indicates whether the price was set manually.","type":"boolean"},"product_id":{"description":"The ID of the product associated with this line item.","type":"string"},"promotions":{"description":"Array of promotions applied to this line item.","items":{"$ref":"#/components/schemas/PromotionDescription"},"type":"array"},"quantity":{"description":"Quantity of products for the line item.","type":"string"},"register_id":{"description":"The register ID associated with this line item.","type":"string"},"register_sequence_id":{"description":"The register sequence ID for this line item.","type":"string"},"sales_person_id":{"description":"The ID of the salesperson associated with this line item.","type":"string"},"sequence":{"description":"Order of the line item in the service order.","type":"integer"},"sku":{"description":"The SKU of the product.","type":"string"},"state":{"description":"State of the line item.","type":"string"},"tax_components":{"description":"Collection of tax components associated with the line item.","items":{"$ref":"#/components/schemas/LineItemTaxComponent"},"type":"array"},"unit_discount":{"description":"Unit discount value for the line item.","type":"string"},"unit_loyalty":{"description":"Unit loyalty value for the line item.","type":"string"},"unit_price":{"description":"Unit price of the line item.","type":"string"}},"type":"object"},"type":"array"},"location":{"type":"string"},"retailer_id":{"type":"string"},"sale_id":{"type":"string"},"status":{"type":"string"},"status_details":{"$ref":"#/components/schemas/ServiceStatusDetails"},"totals":{"description":"Financial totals for the service order.","properties":{"is_sale_level_discount_percentage":{"description":"Indicates if the sale level discount is a percentage.","type":"boolean"},"sale_level_discount_value":{"description":"Total discount value applied at the sale level.","type":"string"},"sub_total":{"description":"Subtotal amount before taxes and discounts.","type":"string"},"total_amount":{"description":"Final total amount including all taxes and discounts.","type":"string"},"total_promotion":{"description":"Total promotion value applied.","type":"string"},"total_tax":{"description":"Total tax amount.","type":"string"}},"type":"object"},"updated_at":{"nullable":true,"type":"string"},"updated_by":{"type":"string"}},"type":"object","x-examples":{"agenda":{"date":"2025-08-27T04:00:00Z","minutes_scheduled":120},"assigned_user_id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","created_at":"2025-08-25T16:26:29.56854Z","id":"1960015938019700736","line_items":[{"fulfillment_type":"UNSPECIFIED","id":"dc8fcea9-e4eb-47b1-9994-fa7fa8d10f53","is_picklist_pickable":false,"note":"","price_set":false,"product_id":"ced180dd-1234-47ae-b16e-149897b26681","quantity":1,"register_id":"06e94082-ed4f-11ed-fd41-fef5ad8737fa","register_sequence_id":"0698ab21-5f72-11f0-f6d9-785ab008ba49","sequence":0,"sku":"10026","state":"CONFIRMED","tax_components":[],"unit_discount":0,"unit_loyalty":0,"unit_price":15}],"location":"Service Bay 2","retailer_id":"06e94082-ed4f-11ed-fd41-fef5ad4ffc39","sale_id":"6872a358-0089-89ae-11f0-81cfbf9b0ca1","status":"NEW","status_details":{"created_at":"2025-08-25T16:26:29.56854Z","display_name":"New","display_order":1,"id":"2038696150067306496","retailer_id":"06e94082-ed4f-11ed-fd41-fef5ad4ffc39","status_key":"NEW","system_default":true,"updated_at":"2025-08-25T16:26:29.56854Z"},"totals":{"is_sale_level_discount_percentage":false,"sale_level_discount_value":"0","sub_total":"15","total_amount":"16.95","total_promotion":"0","total_tax":"1.95"},"updated_at":"2025-08-25T16:26:29.732308Z","updated_by":"06e94082-ed4f-11ed-fd41-fef5ad8054af"}},"ServiceOrderLineItem":{"allOf":[{"$ref":"#/components/schemas/SaleLineItem"},{"properties":{"promotions":{"items":{"$ref":"#/components/schemas/PromotionDescription"},"type":"array"},"tax_component":{"items":{"$ref":"#/components/schemas/LineItemTaxComponent"},"type":"array"}},"type":"object"}],"title":"Service Order Line Item"},"ServiceOrderRequest":{"description":"Request payload for creating a service order","example":{"assigned_user_id":"b1ed6158-f019-11e3-a0f5-b8ca3a64f8f4","customer_id":"06e35f89-3783-11e6-ec7e-13193f7bd2ed","item":{"description":"Red mountain bike requiring brake service","initial_condition":"Brakes not functioning properly","item_id":"06e35f89-3783-11e6-ec7e-13193f7bd2ed","item_name":"Mountain Bike","serial_number":"MB2025-001"},"location":"Service Bay 2","notes":[{"body":"Customer requested bike before the weekend","created_at":"2026-01-27T10:00:00Z","is_visible_to_customer":true},{"body":"Internal note: Check brake fluid levels"}],"outlet_id":"348fff91-8c43-4599-812b-13636760895a","register_id":"b1e198a9-f019-11e3-a0f5-b8ca3a64f8f4","status":"NEW"},"properties":{"assigned_user_id":{"description":"The user assigned to work on the service order","format":"uuid","type":"string"},"customer_id":{"description":"The customer associated with the service","format":"uuid","type":"string"},"extra_fields":{"deprecated":true,"description":"Deprecated. Additional custom fields for the service order","properties":{"location":{"deprecated":true,"description":"Deprecated: Use top-level location field instead. Location where the service will be performed","type":"string"},"note":{"deprecated":true,"description":"Deprecated: Use top-level Notes field instead. Additional note for the service order","type":"string"}},"type":"object"},"item":{"description":"Service item and its details","properties":{"description":{"description":"Item description","type":"string"},"initial_condition":{"description":"Item's initial condition","type":"string"},"item_id":{"description":"ID of an already existing item","format":"uuid","type":"string"},"item_name":{"description":"Item name","type":"string"},"serial_number":{"description":"Item serial number","type":"string"}},"type":"object"},"job_status_id":{"description":"The ID of a custom service status to assign to this order. When provided, overrides the `status` field.","nullable":true,"type":"string"},"location":{"description":"Location where the service will be performed","type":"string"},"notes":{"description":"Notes associated with the service order","items":{"properties":{"body":{"description":"The body of the note","type":"string"},"created_at":{"description":"The date and time when the note was created (possible to pre-date the note)","format":"date-time","type":"string"},"is_visible_to_customer":{"default":false,"description":"Whether the note is visible to customer (printed on the service receipt or not)","type":"boolean"}},"type":"object"},"type":"array"},"outlet_id":{"description":"The outlet of the service order","format":"uuid","type":"string"},"register_id":{"description":"The register of the service order","format":"uuid","type":"string"},"status":{"default":"NEW","description":"The status of the service order","type":"string"}},"required":["outlet_id","register_id","customer_id"],"type":"object"},"ServiceStatusDetails":{"description":"Details of a custom service status assigned to a service order.","properties":{"created_at":{"description":"The date and time the status was created.","format":"date-time","type":"string"},"display_name":{"description":"Human-readable name of the status.","type":"string"},"display_order":{"description":"The order in which this status appears in the UI. Null if not set.","nullable":true,"type":"integer"},"id":{"description":"The unique ID of the status.","type":"string"},"retailer_id":{"description":"The retailer this status belongs to.","type":"string"},"status_key":{"description":"The underlying key mapping this status to a system status (e.g. NEW, IN_PROGRESS).","type":"string"},"system_default":{"description":"Whether this is a system-managed default status.","type":"boolean"},"updated_at":{"description":"The date and time the status was last updated.","format":"date-time","type":"string"}},"type":"object"},"Shift":{"properties":{"created_at":{"description":"Creation timestamp in UTC.","format":"date-time","type":"string"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"retailer_id":{"description":"The ID of the retailer where the shift was started.","format":"uuid","type":"string"},"time_in":{"description":"The time the shift started.","format":"date-time","type":"string"},"time_out":{"description":"The time the shift ended.","format":"date-time","type":"string"},"updated_at":{"description":"Updated at timestamp in UTC.","format":"date-time","type":"string"},"updated_by":{"description":"The ID of the user that updated the shift.","format":"uuid","type":"string"},"user_id":{"description":"The ID of the user who started the shift.","format":"uuid","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"type":"object"},"ShiftCollection":{"properties":{"data":{"description":"An array of Shifts wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Shift"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Shift Collection","type":"object"},"StoreCreditBulkResponse":{"description":"The fields returned by the gift card list API.","properties":{"data":{"description":"An array of Store Credit Customers","items":{"$ref":"#/components/schemas/StoreCreditCustomer"},"type":"array"}},"required":["data"],"title":"Store Credit Bulk Response","type":"object","x-examples":{"example-1":{"data":[{"balance":0,"customer_id":"160c0c4b-9966-4dc1-a916-8407eb10d74e","store_credit_transactions":[{"amount":0,"client_id":"string","created_at":"string","notes":"string","sale_id":"7e9bee0e-09d3-495f-848b-5926aa2ded33","type":"ISSUE","user_id":"a169451c-8525-4352-b8ca-070dd449a1a5"}],"total_credit_issued":0}]}}},"StoreCreditCustomer":{"description":"The store credit information for a customer.","properties":{"balance":{"description":"The customers store credit balance.","format":"double","type":"number"},"customer_id":{"description":"The customer id.","format":"uuid","type":"string"},"store_credit_transactions":{"description":"The transactions associated with this customer.","items":{"$ref":"#/components/schemas/StoreCreditTransaction"},"type":"array"},"total_credit_issued":{"description":"The total credit issued to this customer.","format":"double","type":"number"}},"title":"Store Credit Customer","type":"object","x-examples":{"example-1":{"balance":-1.7976931348623157e+308,"customer_id":"160c0c4b-9966-4dc1-a916-8407eb10d74e","store_credit_transactions":[{"amount":0,"client_id":"string","created_at":"string","notes":"string","sale_id":"7e9bee0e-09d3-495f-848b-5926aa2ded33","type":"ISSUE","user_id":"a169451c-8525-4352-b8ca-070dd449a1a5"}],"total_credit_issued":-1.7976931348623157e+308}}},"StoreCreditReport":{"description":"The store credit report for a retailer.","properties":{"outstanding_balance":{"description":"The outstanding balance.","format":"double","type":"number"},"total_value_issued":{"description":"The total credit issued.","format":"double","type":"number"},"total_value_redeemed":{"description":"The total value redeemed.","format":"double","type":"number"}},"title":"Store Credit Report","type":"object"},"StoreCreditTransaction":{"description":"The store credit information for a customer transaction.","properties":{"amount":{"description":"The amount of the transaction.","format":"double","type":"number"},"client_id":{"description":"The client id is a unique transaction identifier. The client must provide this and is normally the transaction id from the client system.\n","type":"string"},"created_at":{"description":"The date time the transaction was created and/or modified.","type":"string"},"notes":{"description":"The notes associated with the transaction.","type":"string"},"sale_id":{"description":"The sale id the transaction is associated with. This should be null for transactions initiated outside of Lightspeed Retail. If it is a sale id, it will be in UUID format.","format":"uuid","type":"string"},"type":{"description":"The type of the transaction","enum":["ISSUE","REDEMPTION","REVERSE"],"type":"string"},"user_id":{"description":"The user id of the person who handled the transaction.","format":"uuid","type":"string"}},"title":"Store Credit Transaction for Customer","type":"object"},"StoreCreditTransactionParams":{"description":"The store credit transaction parameters for a customer transaction.","properties":{"amount":{"description":"The amount of the transaction.","format":"double","type":"number"},"client_id":{"description":"The client id is a unique transaction identifier. The client must provide this and is normally the transaction id from the client system.\n","type":"string"},"notes":{"description":"The notes associated with the transaction.","type":"string"},"store_credit_customer_id":{"description":"The store credit customer id","type":"string"},"type":{"description":"The type of the transaction","enum":["ISSUE","REDEMPTION","REVERSE"],"type":"string"},"user_id":{"description":"The user id of the person who handled the transaction.","format":"uuid","type":"string"}},"required":["amount","client_id","store_credit_customer_id","type"],"title":"Store Credit Transaction Parameters for Customer","type":"object"},"Supplier":{"allOf":[{"$ref":"#/components/schemas/BaseSupplier"}],"properties":{"deleted_at":{"nullable":true,"type":"string"},"id":{"type":"string"},"source":{"description":"Origin of the supplier record (e.g. USER, SHOPIFY).","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["name"],"title":"Supplier","type":"object"},"SupplierCollection":{"properties":{"data":{"description":"An array of Suppliers wrapped in top level `data` object.","items":{"$ref":"#/components/schemas/Supplier"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Supplier Collection","type":"object"},"SupplierResponse":{"properties":{"data":{"$ref":"#/components/schemas/Supplier"}},"title":"Supplier Response","type":"object"},"SupplierSample":{"properties":{"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"type":"string"}},"title":"Supplier Sample","type":"object"},"Tag":{"properties":{"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"id":{"description":"Auto-generated object ID.","type":"string"},"name":{"description":"The Tag name.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["name"],"title":"Tag","type":"object"},"TagCollection":{"properties":{"data":{"description":"An array of Tag objects.","items":{"$ref":"#/components/schemas/Tag"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"title":"Tag Collection","type":"object"},"TagResponse":{"properties":{"data":{"$ref":"#/components/schemas/Tag"}},"title":"Tag Response","type":"object"},"Tax":{"properties":{"deleted_at":{"description":"The deletion timestamp.","nullable":true,"type":"string"},"display_name":{"description":"The name of the tax used for display.","type":"string"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"is_default":{"description":"Indicates whether the tax is used as the default one.","type":"boolean"},"name":{"description":"The name of the tax.","type":"string"},"rates":{"items":{"$ref":"#/components/schemas/TaxRate"},"type":"array"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["deleted_at","display_name","id","is_default","version"],"title":"Tax","type":"object"},"TaxCollection":{"properties":{"data":{"description":"An array of tax objects.","items":{"$ref":"#/components/schemas/Tax"},"type":"array"}},"required":["data"],"title":"Tax Collection","type":"object"},"TaxRate":{"properties":{"display_name":{"description":"The name of the tax rate used for display.","type":"string"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"name":{"description":"The name of the tax rate.","type":"string"},"rate":{"description":"Tax rate value. `0.1 = 10%`.","format":"double","type":"number"},"rules":{"description":"Rules that apply to the rate for tax exclusive outlets.","items":{"$ref":"#/components/schemas/RateRule"},"type":"array"}},"required":["display_name","id","name","rate"],"title":"Tax rate","type":"object"},"TaxResponse":{"description":"A response for a single tax GET request.","properties":{"data":{"$ref":"#/components/schemas/Tax"}},"title":"Tax Response","type":"object"},"Tender":{"properties":{"amount":{"format":"double","type":"number"},"card_details":{"$ref":"#/components/schemas/CardDetails"},"created_at":{"format":"date-time","type":"string"},"currency":{"type":"string"},"emv":{"$ref":"#/components/schemas/EMV"},"external_transaction_id":{"type":"string"},"id":{"type":"string"},"provider_fields":{"additionalProperties":true,"type":"object"},"status":{"enum":["APPROVED","APPROVED_PIN","APPROVED_SIGNATURE","CANCELLED","DECLINED","REFUNDED","REVERSED","UNKNOWN"],"type":"string"},"transaction_id":{"type":"string"},"type":{"enum":["SALE","REFUND","REVERSAL","TIP","SURCHARGE"],"type":"string"}},"required":["id","transaction_id","created_at","currency","amount","type","status","provider_fields"],"type":"object"},"Transaction":{"properties":{"created_at":{"format":"date-time","type":"string"},"id":{"type":"string"},"payment_type_id":{"type":"string"},"provider_fields":{"additionalProperties":true,"type":"object"},"register_id":{"type":"string"},"register_sale_payment_id":{"type":"string"},"retailer_id":{"type":"string"},"retailer_payment_type_id":{"type":"string"},"status":{"enum":["CANCELLED","CANCELLED_BAD_CARD","CANCELLED_BUSY","COMPLETED","DECLINED","REFUNDED","REVERSED","TIMEOUT","UNKNOWN","PROCESSING"],"type":"string"},"tenders":{"items":{"$ref":"#/components/schemas/Tender"},"type":"array"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","register_sale_payment_id","retailer_id","created_at","updated_at","register_id","retailer_payment_type_id","status","tenders","provider_fields"],"type":"object"},"TransactionRequest":{"properties":{"amount":{"description":"Payment amount. Must be non-zero. Negative values are only valid for refund requests\n","format":"double","type":"number"},"currency":{"description":"ISO 4217 currency code. Uppercased internally.","example":"NZD","type":"string"},"discount":{"description":"Discount details. Klarna only.","properties":{"price":{"format":"double","type":"number"},"tax":{"format":"double","type":"number"}},"type":"object"},"idempotency_key":{"description":"Idempotency key. Square only.","type":"string"},"lspay_intent_id":{"description":"LSPay Stripe payment intent ID. When set on a non-refund request, triggers the LSPay-specific payment path.\n","type":"string"},"lspay_payment_id":{"description":"LSPay payment ID. LSPay only.","type":"string"},"lspay_payment_method":{"description":"Payment method used. LSPay only.","type":"string"},"lspay_refund_method":{"description":"Refund method. LSPay refunds only.","type":"string"},"lspay_unreferenced_payment_method_id":{"description":"Unreferenced payment method ID for LSPay.","type":"string"},"original_register_sale_payment_id":{"description":"For refunds — the register sale payment ID of the original sale.","type":"string"},"outlet_id":{"description":"Outlet ID. LSPay only.","type":"string"},"pre_approval_code":{"description":"Pre-approval code. Afterpay only (deprecated).","type":"string"},"product_version":{"description":"POS product version. LSPay only.","type":"string"},"products":{"description":"Line items for providers that require product details (e.g. Klarna).","items":{"properties":{"discount":{"format":"double","type":"number"},"image_url":{"type":"string"},"name":{"type":"string"},"price":{"format":"double","type":"number"},"quantity":{"format":"double","type":"number"},"sku":{"type":"string"},"tax_rate":{"format":"double","type":"number"},"unit_tax":{"format":"double","type":"number"}},"type":"object"},"type":"array"},"register_name":{"description":"Name of the register. LSPay only.","type":"string"},"wepay_payment_data":{"additionalProperties":true,"description":"WePay-specific payment data fields.","type":"object"}},"required":["amount"],"type":"object"},"UpdateCustomFieldParams":{"properties":{"editable_in_ui":{"description":"Should this custom field be editable in the UI.","type":"boolean"},"print_on_receipt":{"description":"Should this custom field be printed on receipts.","type":"boolean"},"title":{"example":"My Custom Field","type":"string"},"visible_in_ui":{"description":"Should this custom field be visible in the UI.","type":"boolean"}},"title":"Parameters for updating a custom field","type":"object"},"User":{"properties":{"account_type":{"description":"User's account type.","enum":["cashier","manager","admin"],"type":"string"},"created_at":{"description":"Creation timestamp in UTC.","type":"string"},"deleted_at":{"description":"Deletion timestamp in UTC.","nullable":true,"type":"string"},"display_name":{"description":"Full user's name to be used for display in the UI.","type":"string"},"email":{"description":"User's email address.","format":"email","type":"string"},"email_verified_at":{"description":"The timestamp of users email verification.","nullable":true,"type":"string"},"enabled":{"description":"Indicates whether the user is enabled.","type":"boolean"},"enabled_mfa":{"description":"Indicates whether the user has enabled MFA.","nullable":true,"type":"boolean"},"id":{"description":"Auto-generated object ID.","format":"uuid","type":"string"},"image_source":{"description":"URL of the default-sized user's avatar.","type":"string"},"images":{"$ref":"#/components/schemas/UserImages"},"is_primary_user":{"description":"Indicated whether this user is the primary user for the account.","type":"boolean"},"permissions":{"description":"The permissions assigned to the user.","items":{"type":"string"},"type":"array"},"require_password_change":{"description":"Indicates whether the user is required to change their password.","type":"boolean"},"restricted_outlet_id":{"deprecated":true,"description":"**deprecated** Use the `restricted_outlet_ids` instead.","nullable":true,"type":"string"},"restricted_outlet_ids":{"description":"A list of outlet IDs the user is associated with","items":{"format":"uuid","type":"string"},"type":"array"},"roles":{"description":"The roles assigned to the user.","items":{"$ref":"#/components/schemas/Role"},"type":"array"},"rules":{"description":"The rules assigned to the user.","type":"object"},"seen_at":{"description":"The timestamp of the user's last activity in the system.","type":"string"},"switch_id":{"description":"The switch id for the user.","type":"string"},"target_daily":{"description":"Daily sales target for the user.","type":"number"},"target_monthly":{"description":"Monthly sales target for the user.","type":"number"},"target_weekly":{"description":"Weekly sales target for the user.","type":"number"},"time_until_deletion":{"description":"The time until the user is deleted.","nullable":true,"type":"string"},"updated_at":{"description":"Last update timestamp in UTC.","type":"string"},"username":{"description":"User's username used for login.","type":"string"},"version":{"description":"Auto-incrementing object version number.","format":"int64","type":"integer"}},"required":["account_type","created_at","id","is_primary_user","updated_at","username","version"],"title":"User","type":"object"},"UserCollection":{"properties":{"data":{"description":"An array of users.","items":{"$ref":"#/components/schemas/User"},"type":"array"},"version":{"$ref":"#/components/schemas/Version"}},"required":["data","version"],"title":"User Collection","type":"object"},"UserImages":{"description":"On object containing URLs for different sizes of the user’s avatar.","properties":{"original":{"type":"string"},"sl":{"type":"string"},"sm":{"type":"string"},"ss":{"type":"string"},"st":{"type":"string"},"standard":{"type":"string"},"thumb":{"type":"string"}},"title":"User Image","type":"object"},"UserResponse":{"description":"A response for a single user GET request.","properties":{"data":{"$ref":"#/components/schemas/User"}},"title":"User Response","type":"object"},"UserSaleTotalCollection":{"properties":{"cost":{"description":"The cost total of sales for the user.","format":"double","type":"number"},"date_from":{"description":"From timestamp in UTC.","type":"string"},"date_to":{"description":"To timestamp in UTC.","type":"string"},"discounts":{"description":"The discounts total of sales for the user.","format":"double","type":"number"},"label":{"description":"The label for what the total represents.","type":"string"},"loyalty":{"description":"The loyalty total of sales for the user.","format":"double","type":"number"},"revenue":{"description":"The revenue total of sales for the user.","format":"double","type":"number"},"sale_count":{"description":"The total number of sales for the user.","format":"integer","type":"number"},"tax":{"description":"The tax total of sales for the user.","format":"double","type":"number"},"total":{"description":"The total sales for the user.","format":"double","type":"number"}},"title":"User Sale Total Collection","type":"object"},"UserSaleTotalResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/UserSaleTotalCollection"},"type":"array"}},"title":"User Sale Total Response","type":"object"},"VariantAttribute":{"properties":{"attribute_id":{"description":"The ID of the variant attribute.","format":"uuid","type":"string"},"value":{"description":"The value associated with the given attribute_id. e.g. Green.","type":"string"}},"title":"Variant Attribute","type":"object"},"VariantAttributeCreateResponse":{"properties":{"data":{"properties":{"created_at":{"description":"Timestamp in UTC.","type":"string"},"id":{"type":"string"},"name":{"type":"string"},"updated_at":{"description":"Timestamp in UTC.","type":"string"}},"type":"object"}},"title":"VariantAttributeCreateResponse","type":"object"},"VariantAttributeCreateUpdateBody":{"properties":{"name":{"example":"Size","type":"string"}},"required":["name"],"title":"VariantAttributeCreateUpdateBody","type":"object"},"VariantAttributeDeleteResponse":{"properties":{"data":{"properties":{"id":{"type":"string"}},"type":"object"}},"title":"VariantAttributeDeleteResponse","type":"object"},"VariantAttributeResponse":{"properties":{"deleted_at":{"description":"Timestamp in UTC.","format":"date-time","nullable":true,"type":"string"},"id":{"example":"06564c2b-6841-11eb-f2da-d2fb9abb0c90","format":"uuid","type":"string"},"name":{"example":"Size","type":"string"}},"title":"VariantAttributeResponse","type":"object"},"VariantAttributeUpdateResponse":{"properties":{"data":{"properties":{"id":{"type":"string"},"name":{"type":"string"}},"type":"object"}},"title":"VariantAttributeUpdateResponse","type":"object"},"VariantAttributesListResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/VariantAttributeResponse"},"type":"array"}},"title":"VariantAttributesListResponse","type":"object"},"VariantOption":{"properties":{"name":{"description":"The Variant Option name.","type":"string"},"value":{"description":"The value of a Variant Option.","type":"string"}},"title":"Variant Option","type":"object"},"Version":{"description":"An object containing the highest and lowest version numbers for all items of the returned collection.","properties":{"max":{"description":"Highest version number of the payload.","format":"int64","type":"integer"},"min":{"description":"Lowest version number of the payload.","format":"int64","type":"integer"}},"required":["max","min"],"type":"object"},"VersionsData":{"description":"Map of resource names to their current version numbers.","properties":{"brands":{"format":"int64","type":"integer"},"button_layouts":{"format":"int64","type":"integer"},"channels":{"format":"int64","type":"integer"},"consignment_products":{"format":"int64","type":"integer"},"consignments":{"format":"int64","type":"integer"},"custom_stock_adjustment_reason":{"format":"int64","type":"integer"},"customer_groups":{"format":"int64","type":"integer"},"customer_taxes":{"format":"int64","type":"integer"},"customers":{"format":"int64","type":"integer"},"outlet_taxes":{"format":"int64","type":"integer"},"outlets":{"format":"int64","type":"integer"},"payment_types":{"format":"int64","type":"integer"},"price_book_products":{"format":"int64","type":"integer"},"price_books":{"format":"int64","type":"integer"},"product_images":{"format":"int64","type":"integer"},"product_types":{"format":"int64","type":"integer"},"products":{"format":"int64","type":"integer"},"receipt_settings":{"format":"int64","type":"integer"},"receipt_template_types":{"format":"int64","type":"integer"},"receipt_templates":{"format":"int64","type":"integer"},"registers":{"format":"int64","type":"integer"},"retailer":{"format":"int64","type":"integer"},"sales":{"format":"int64","type":"integer"},"serial_numbers":{"format":"int64","type":"integer"},"shifts":{"format":"int64","type":"integer"},"stock_adjustment":{"format":"int64","type":"integer"},"suppliers":{"format":"int64","type":"integer"},"tags":{"format":"int64","type":"integer"},"taxes":{"format":"int64","type":"integer"},"users":{"format":"int64","type":"integer"}},"type":"object"},"Webhook":{"description":"The configuration for a webhook.","properties":{"active":{"description":"Whether this webhook is enabled or not","type":"boolean"},"id":{"description":"The ID of this webhook","type":"string"},"retailer_id":{"description":"The ID of the retailer this webhook belongs to","type":"string"},"type":{"$ref":"#/components/schemas/WebhookType"},"url":{"description":"The URL to send this webhook to","type":"string"}},"title":"Webhook","type":"object","x-examples":{}},"WebhookRequest":{"description":"Webhook create/update request data.","properties":{"active":{"description":"Whether this webhook is enabled or not","type":"boolean"},"type":{"$ref":"#/components/schemas/WebhookType"},"url":{"description":"The URL to send webhooks to","minLength":3,"type":"string"}},"required":["active","type","url"],"title":"WebhookRequest","type":"object","x-examples":{"example-1":{"active":true,"type":"sale.update","url":"string"}}},"WebhookType":{"description":"The webhook type. These can be one of:\n- sale.update\n- product.update\n- customer.update\n- inventory.update\n- register_closure.create\n- consignment.send\n- consignment.receive\n","title":"WebhookType","type":"string","x-examples":{"example-1":"sale.update"}}},"securitySchemes":{"bearerAuth":{"description":"Bearer Token for API authentication.","scheme":"bearer","type":"http"}}}}