# Products

Products object

## Get products

> This operation returns a list of products.\
> \
> \*\*Note:\*\* This operation needs \[Authentication]\(../guidelines/authentication.md) and supports the following JSON:API features:\
> \
> \- \[Relationships]\(../guidelines/relationships.md) - \`productType\`, \`modifierSets\`, \`productVariants\` using \`include\` query parameter.\
> \- \[Sparse fieldsets]\(../guidelines/sparse-fieldsets.md) - supports all fields of \`product\` and related resources with \`fields\` query parameter.<br>

```json
{"openapi":"3.1.0","info":{"title":"POS API","version":"1.0.0"},"tags":[{"name":"Products","description":"Products object"}],"servers":[{"url":"https://api.mews.com/pos","description":"Production"},{"url":"https://api.mews-demo.com/pos","description":"Staging"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"auth-scheme","description":"Bearer HTTP authentication. Allowed headers-- Authorization: Bearer <api_key>"}},"parameters":{"page_size":{"in":"query","name":"page[size]","schema":{"type":"integer","format":"int32","minimum":1,"maximum":1000},"description":"The number of resources to return in a single response.","required":false},"page_before":{"in":"query","name":"page[before]","schema":{"type":"string","title":"Resource identifier","description":"Unique identifier.","pattern":"^[a-zA-Z0-9-]+$","minLength":1,"maxLength":36},"description":"The cursor for the previous page of resources.","required":false},"page_after":{"in":"query","name":"page[after]","schema":{"type":"string","title":"Resource identifier","description":"Unique identifier.","pattern":"^[a-zA-Z0-9-]+$","minLength":1,"maxLength":36},"description":"The cursor for the next page of resources.","required":false},"filter_updated_at_gt":{"in":"query","name":"filter[updatedAtGt]","description":"Filters the objects that were updated after a specified datetime.","required":false,"schema":{"anyOf":[{"type":"string","description":"Timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},{"type":"string","description":"Date in RFC 3339 format.","maxLength":10,"format":"date"}]}},"filter_updated_at_gteq":{"in":"query","name":"filter[updatedAtGteq]","description":"Filters the objects that were updated after or on a specified datetime.","required":false,"schema":{"anyOf":[{"type":"string","description":"Timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},{"type":"string","description":"Date in RFC 3339 format.","maxLength":10,"format":"date"}]}},"fields_products":{"in":"query","name":"fields[products]","schema":{"type":"array","maxItems":15,"items":{"type":"string","enum":["name","description","sku","status","barcode","createdAt","updatedAt","isAvailable","tax","retailPriceInclTax","retailPriceExclTax","productType","modifierSets","productVariants","taxes"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","explode":false,"required":false},"fields_taxes":{"in":"query","name":"fields[taxes]","schema":{"type":"array","maxItems":8,"items":{"type":"string","enum":["name","rate","taxType","isActive","createdAt","updatedAt","ratePercent","label"]}},"description":"Fields query parameter to allow the client to customize which tax fields should be returned.","explode":false,"required":false},"fields_dietary_restrictions":{"in":"query","name":"fields[dietaryRestrictions]","schema":{"type":"array","maxItems":4,"items":{"type":"string","enum":["name","description","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","explode":false,"required":false}},"headers":{"x_rate_limit_limit":{"description":"The number of allowed requests in the current period.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":1000}},"x_rate_limit_remaining":{"description":"The number of remaining requests in the current period.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":1000}},"x_rate_limit_reset":{"description":"The time at which the rate limit resets, in UTC epoch seconds.","schema":{"type":"integer","format":"int64","minimum":1633036800,"maximum":2147483647}},"access_control_allow_origin":{"description":"Specifies which origins are allowed to access the resource.","schema":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[A-Za-z /*]+$"}},"retry_after":{"description":"The time the client should wait before making a new request.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":3600}}},"schemas":{"products":{"products_response":{"type":"object","properties":{"data":{"type":"array","description":"The document's \"primary data\".","maxItems":1000,"items":{"$ref":"#/components/schemas/products/product"}},"included":{"type":["array","null"],"maxItems":1000,"description":"Details of the objects to which the product is related.","items":{"anyOf":[{"$ref":"#/components/schemas/product_types/product_type"},{"$ref":"#/components/schemas/modifier_sets/modifier_set"},{"$ref":"#/components/schemas/modifiers/modifier"},{"$ref":"#/components/schemas/product_variants/product_variant"},{"$ref":"#/components/schemas/taxes/tax"},{"$ref":"#/components/schemas/dietary_restrictions/dietary_restriction"},{"$ref":"#/components/schemas/allergens/allergen"}]}},"links":{"type":"object","description":"A [links object](https://jsonapi.org/profiles/ethanresnick/cursor-pagination/#auto-id-links) describing cursor pagination links.","properties":{"prev":{"type":["string","null"],"format":"uri","maxLength":1024,"description":"The link to the previous page of results."},"next":{"type":["string","null"],"format":"uri","maxLength":1024,"description":"The link to the next page of results."}},"required":["next","prev"]}},"required":["data","links"]},"product":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"products"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the product.","minLength":0,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"description":{"type":["string","null"],"description":"Description of the product.","minLength":0,"maxLength":10000,"pattern":"^[A-Za-z0-9,-_. ]+$"},"sku":{"type":["string","null"],"description":"SKU of the product.","minLength":0,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"isAvailable":{"type":"boolean","description":"Whether the product is available.","default":true},"barcode":{"type":["string","null"],"description":"Barcode of the product.","minLength":0,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"status":{"type":"string","description":"Status of the product. Possible values are \"active\" and \"inactive\".","enum":["active","inactive"]},"tax":{"type":["string","null"],"description":"Tax of the product.","minLength":0,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"retailPriceExclTax":{"type":["string","null"],"description":"Product price excluding tax.","minLength":0,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"retailPriceInclTax":{"type":["string","null"],"description":"Product price including applicable taxes.","minLength":0,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","status","createdAt","updatedAt"]},"relationships":{"type":"object","description":"A [relationships object](https://jsonapi.org/format/#document-resource-object-relationships) describing relationships between the resource and other JSON:API resources.","properties":{"productType":{"type":"object","description":"Details of the product type associated with the product.","properties":{"data":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productTypes"}},"required":["id","type"]}}},"modifierSets":{"type":"object","description":"Details of the modifier sets associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifierSets"}},"required":["id","type"]}}},"required":["data"]},"modifiers":{"type":"object","description":"Details of the modifiers associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifiers"}},"required":["id","type"]}}},"required":["data"]},"productVariants":{"type":"object","description":"Details of the product variants associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productVariants"}},"required":["id","type"]}}}},"taxes":{"type":"object","description":"Details of the taxes associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"taxes"}},"required":["id","type"]}}},"required":["data"]},"dietaryRestrictions":{"type":"object","description":"Details of the dietary restrictions associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"dietaryRestrictions"}},"required":["id","type"]}}},"required":["data"]},"allergens":{"type":"object","description":"Details of the allergens associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"allergens"}},"required":["id","type"]}}},"required":["data"]}}}},"required":["id","type","attributes"]}},"product_types":{"product_type":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productTypes"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the product type.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"modifier_sets":{"modifier_set":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","title":"Resource type name","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifierSets"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the modifier set.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"selection":{"type":"string","description":"Modifier set selection type. Possible values are \"single\" and \"multiple\".","enum":["single","multiple"]},"maximumCount":{"type":"integer","description":"Maximum number of modifiers that can be selected.","format":"int32","minimum":0,"maximum":1000},"minimumCount":{"type":"integer","description":"Minimum number of modifiers that must be selected.","format":"int32","minimum":0,"maximum":1000},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","selection","maximumCount","minimumCount","createdAt","updatedAt"]},"links":{"type":"object","description":"A [links object](https://jsonapi.org/format/#document-resource-object-links) containing links related to the resource.","properties":{"self":{"type":"string","format":"uri","description":"A link to the resource itself.","minLength":1,"maxLength":255}},"required":["self"]},"relationships":{"type":"object","description":"A [relationships object](https://jsonapi.org/format/#document-resource-object-relationships) describing relationships between the resource and other JSON:API resources.","properties":{"modifiers":{"type":"object","description":"Details of the modifiers associated with the modifier set.","properties":{"data":{"type":"array","description":"The modifiers associated with the modifier set.","maxItems":100,"items":{"type":"object","description":"Details of the modifier.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the modifier.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The type of the modifier.","enum":["modifiers"]}},"required":["id","type"]}}},"required":["data"]}}}},"required":["id","type","attributes"]}},"modifiers":{"modifier":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifiers"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the modifier.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"price":{"type":"string","description":"Price of the modifier.","maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","price","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"product_variants":{"product_variant":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productVariants","maxLength":255},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"retailPriceExclTax":{"type":"string","description":"Product price excluding tax.","minLength":1,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"retailPriceInclTax":{"type":"string","description":"Product price including applicable taxes.","minLength":1,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"sku":{"type":"string","description":"SKU of the variant.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"selector":{"type":"object","description":"Arbitrary key/value JSON object for product variant selector.","additionalProperties":true},"barcode":{"type":"string","description":"Barcode of the variant.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["retailPriceExclTax","retailPriceInclTax","sku","barcode","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"taxes":{"tax":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"taxes"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the tax.","minLength":1,"maxLength":255,"pattern":"^.*\\S.*$"},"rate":{"type":"string","description":"Tax rate as a decimal.","minLength":3,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{1,6}$"},"taxType":{"type":"string","description":"Type of the tax.","enum":["vat","other","fixed","consumption","sales","state","city","liquor","food","entertainment"]},"isActive":{"type":"boolean","description":"Whether the tax is active."},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"label":{"type":["string","null"],"description":"Label of the tax.","maxLength":255,"pattern":"^.*\\S.*$"},"ratePercent":{"type":"string","description":"Tax rate as a percentage.","minLength":1,"maxLength":7,"pattern":"^[0-9]+(\\.[0-9]{1,2})?$"}},"required":["name","rate","taxType","isActive","createdAt","updatedAt","ratePercent","label"]}},"required":["id","type","attributes"]}},"dietary_restrictions":{"dietary_restriction":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"dietaryRestrictions"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Localized name of the dietary restriction.","minLength":1,"maxLength":255,"pattern":".*"},"description":{"type":["string","null"],"description":"Localized description of the dietary restriction.","minLength":0,"maxLength":10000,"pattern":".*"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"allergens":{"allergen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"allergens"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Localized name of the allergen.","minLength":1,"maxLength":255,"pattern":".*"},"description":{"type":["string","null"],"description":"Localized description of the allergen.","minLength":0,"maxLength":10000,"pattern":".*"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"error":{"type":"object","description":"A JSON:API error object.\n\nAdditional properties specific to the problem type may be present.    \n","properties":{"errors":{"type":"array","description":"An array of error details to accompany a problem details response.","maxItems":1000,"items":{"type":"object","description":"An object to provide explicit details on a problem towards an API consumer.","properties":{"id":{"type":"string","maxLength":16,"description":"A unique identifier for this particular occurrence of the problem.","pattern":"^[A-Za-z0-9_-]+$"},"status":{"type":"string","maxLength":3,"description":"The HTTP status code applicable to this problem, expressed as a string value.","pattern":"^[1-5][0-9]{2}$"},"code":{"type":"string","maxLength":50,"description":"An application-specific error code, expressed as a string value.","pattern":"^[A-Za-z0-9_-]+$"},"title":{"type":"string","description":"A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.","maxLength":256,"pattern":"^.{1,255}$"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem. Like title, this field's value can be localized.","maxLength":1024,"pattern":"^.{1,1023}$"},"source":{"type":"object","properties":{"pointer":{"type":"string","description":"A JSON Pointer to a specific request body property that is the source of error.","maxLength":1024,"pattern":"^$|^/([A-Za-z0-9_-]+/)*[A-Za-z0-9_-]+$"},"parameter":{"type":"string","description":"A string indicating which URI query parameter caused the error.","maxLength":1024,"pattern":"^[A-Za-z0-9_]+$"},"header":{"type":"string","description":"The name of the header that is the source of error.","maxLength":1024,"pattern":"^[A-Za-z-]+$"}}},"meta":{"type":"object","description":"Additional information about the error.","additionalProperties":true}},"required":["title"]}}},"required":["errors"]}},"responses":{"bad_request":{"description":"Bad request.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"unauthorized":{"description":"Unauthorized.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"too_many_requests":{"description":"Too many requests.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Retry-After":{"$ref":"#/components/headers/retry_after"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"internal_server_error":{"description":"Internal Server Error.","content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"service_unavailable":{"description":"Service is unavailable.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}}}},"paths":{"/v1/products":{"get":{"summary":"Get products","description":"This operation returns a list of products.\n\n**Note:** This operation needs [Authentication](../guidelines/authentication.md) and supports the following JSON:API features:\n\n- [Relationships](../guidelines/relationships.md) - `productType`, `modifierSets`, `productVariants` using `include` query parameter.\n- [Sparse fieldsets](../guidelines/sparse-fieldsets.md) - supports all fields of `product` and related resources with `fields` query parameter.\n","operationId":"getProducts","parameters":[{"$ref":"#/components/parameters/page_size"},{"$ref":"#/components/parameters/page_before"},{"$ref":"#/components/parameters/page_after"},{"$ref":"#/components/parameters/filter_updated_at_gt"},{"$ref":"#/components/parameters/filter_updated_at_gteq"},{"$ref":"#/components/parameters/fields_products"},{"$ref":"#/components/parameters/fields_taxes"},{"in":"query","name":"include","schema":{"type":"array","maxItems":7,"items":{"type":"string","enum":["productType","modifierSets","productVariants","modifiers","taxes","dietaryRestrictions","allergens"]}},"description":"Include query parameter to allow the client to customize which related resource should be returned.","required":false},{"in":"query","name":"fields[productTypes]","schema":{"type":"array","maxItems":3,"items":{"type":"string","enum":["name","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"in":"query","name":"fields[modifierSets]","schema":{"type":"array","maxItems":6,"items":{"type":"string","enum":["name","selection","maximumCount","minimumCount","createdAt","updatedAt"]}}},{"in":"query","name":"fields[modifiers]","schema":{"type":"array","maxItems":2,"items":{"type":"string","enum":["name","price","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"in":"query","name":"fields[productVariants]","schema":{"type":"array","maxItems":10,"items":{"type":"string","enum":["sku","barcode","selector","tax","retailPriceInclTax","retailPriceExclTax","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"$ref":"#/components/parameters/fields_dietary_restrictions"}],"tags":["Products"],"responses":{"200":{"description":"Successful response with products data in JSON:API format.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/products/products_response"}}}},"400":{"$ref":"#/components/responses/bad_request"},"401":{"$ref":"#/components/responses/unauthorized"},"429":{"$ref":"#/components/responses/too_many_requests"},"500":{"$ref":"#/components/responses/internal_server_error"},"503":{"$ref":"#/components/responses/service_unavailable"}}}}}}
```

## Get product

> This operation returns a single product by its unique identifier.\
> \
> \*\*Note:\*\* This operation needs \[Authentication]\(../guidelines/authentication.md) and supports the following JSON:API features:\
> \
> \- \[Relationships]\(../guidelines/relationships.md) - \`productType\`, \`modifierSets\`, \`modifiers\`, \`productVariants\`, \`taxes\`, \`dietaryRestrictions\`, \`allergens\` using \`include\` query parameter.\
> \- \[Sparse fieldsets]\(../guidelines/sparse-fieldsets.md) - supports all fields of \`product\` and related resources with \`fields\` query parameter.<br>

```json
{"openapi":"3.1.0","info":{"title":"POS API","version":"1.0.0"},"tags":[{"name":"Products","description":"Products object"}],"servers":[{"url":"https://api.mews.com/pos","description":"Production"},{"url":"https://api.mews-demo.com/pos","description":"Staging"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"auth-scheme","description":"Bearer HTTP authentication. Allowed headers-- Authorization: Bearer <api_key>"}},"parameters":{"fields_products":{"in":"query","name":"fields[products]","schema":{"type":"array","maxItems":15,"items":{"type":"string","enum":["name","description","sku","status","barcode","createdAt","updatedAt","isAvailable","tax","retailPriceInclTax","retailPriceExclTax","productType","modifierSets","productVariants","taxes"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","explode":false,"required":false},"fields_taxes":{"in":"query","name":"fields[taxes]","schema":{"type":"array","maxItems":8,"items":{"type":"string","enum":["name","rate","taxType","isActive","createdAt","updatedAt","ratePercent","label"]}},"description":"Fields query parameter to allow the client to customize which tax fields should be returned.","explode":false,"required":false},"fields_dietary_restrictions":{"in":"query","name":"fields[dietaryRestrictions]","schema":{"type":"array","maxItems":4,"items":{"type":"string","enum":["name","description","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","explode":false,"required":false},"fields_allergens":{"in":"query","name":"fields[allergens]","schema":{"type":"array","maxItems":4,"items":{"type":"string","enum":["name","description","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","explode":false,"required":false}},"headers":{"x_rate_limit_limit":{"description":"The number of allowed requests in the current period.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":1000}},"x_rate_limit_remaining":{"description":"The number of remaining requests in the current period.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":1000}},"x_rate_limit_reset":{"description":"The time at which the rate limit resets, in UTC epoch seconds.","schema":{"type":"integer","format":"int64","minimum":1633036800,"maximum":2147483647}},"access_control_allow_origin":{"description":"Specifies which origins are allowed to access the resource.","schema":{"type":"string","minLength":1,"maxLength":1024,"pattern":"^[A-Za-z /*]+$"}},"retry_after":{"description":"The time the client should wait before making a new request.","schema":{"type":"integer","format":"int32","minimum":1,"maximum":3600}}},"schemas":{"products":{"product_response":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/products/product","description":"The document's \"primary data\"."},"included":{"type":["array","null"],"maxItems":1000,"description":"Details of the objects to which the product is related.","items":{"anyOf":[{"$ref":"#/components/schemas/product_types/product_type"},{"$ref":"#/components/schemas/modifier_sets/modifier_set"},{"$ref":"#/components/schemas/modifiers/modifier"},{"$ref":"#/components/schemas/product_variants/product_variant"},{"$ref":"#/components/schemas/taxes/tax"},{"$ref":"#/components/schemas/dietary_restrictions/dietary_restriction"},{"$ref":"#/components/schemas/allergens/allergen"}]}}},"required":["data"]},"product":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"products"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the product.","minLength":0,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"description":{"type":["string","null"],"description":"Description of the product.","minLength":0,"maxLength":10000,"pattern":"^[A-Za-z0-9,-_. ]+$"},"sku":{"type":["string","null"],"description":"SKU of the product.","minLength":0,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"isAvailable":{"type":"boolean","description":"Whether the product is available.","default":true},"barcode":{"type":["string","null"],"description":"Barcode of the product.","minLength":0,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"status":{"type":"string","description":"Status of the product. Possible values are \"active\" and \"inactive\".","enum":["active","inactive"]},"tax":{"type":["string","null"],"description":"Tax of the product.","minLength":0,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"retailPriceExclTax":{"type":["string","null"],"description":"Product price excluding tax.","minLength":0,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"retailPriceInclTax":{"type":["string","null"],"description":"Product price including applicable taxes.","minLength":0,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","status","createdAt","updatedAt"]},"relationships":{"type":"object","description":"A [relationships object](https://jsonapi.org/format/#document-resource-object-relationships) describing relationships between the resource and other JSON:API resources.","properties":{"productType":{"type":"object","description":"Details of the product type associated with the product.","properties":{"data":{"type":["object","null"],"properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productTypes"}},"required":["id","type"]}}},"modifierSets":{"type":"object","description":"Details of the modifier sets associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifierSets"}},"required":["id","type"]}}},"required":["data"]},"modifiers":{"type":"object","description":"Details of the modifiers associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifiers"}},"required":["id","type"]}}},"required":["data"]},"productVariants":{"type":"object","description":"Details of the product variants associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productVariants"}},"required":["id","type"]}}}},"taxes":{"type":"object","description":"Details of the taxes associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"taxes"}},"required":["id","type"]}}},"required":["data"]},"dietaryRestrictions":{"type":"object","description":"Details of the dietary restrictions associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"dietaryRestrictions"}},"required":["id","type"]}}},"required":["data"]},"allergens":{"type":"object","description":"Details of the allergens associated with the product.","properties":{"data":{"type":"array","maxItems":1000,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"allergens"}},"required":["id","type"]}}},"required":["data"]}}}},"required":["id","type","attributes"]}},"product_types":{"product_type":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productTypes"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the product type.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"modifier_sets":{"modifier_set":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","title":"Resource type name","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifierSets"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the modifier set.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"selection":{"type":"string","description":"Modifier set selection type. Possible values are \"single\" and \"multiple\".","enum":["single","multiple"]},"maximumCount":{"type":"integer","description":"Maximum number of modifiers that can be selected.","format":"int32","minimum":0,"maximum":1000},"minimumCount":{"type":"integer","description":"Minimum number of modifiers that must be selected.","format":"int32","minimum":0,"maximum":1000},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","selection","maximumCount","minimumCount","createdAt","updatedAt"]},"links":{"type":"object","description":"A [links object](https://jsonapi.org/format/#document-resource-object-links) containing links related to the resource.","properties":{"self":{"type":"string","format":"uri","description":"A link to the resource itself.","minLength":1,"maxLength":255}},"required":["self"]},"relationships":{"type":"object","description":"A [relationships object](https://jsonapi.org/format/#document-resource-object-relationships) describing relationships between the resource and other JSON:API resources.","properties":{"modifiers":{"type":"object","description":"Details of the modifiers associated with the modifier set.","properties":{"data":{"type":"array","description":"The modifiers associated with the modifier set.","maxItems":100,"items":{"type":"object","description":"Details of the modifier.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the modifier.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The type of the modifier.","enum":["modifiers"]}},"required":["id","type"]}}},"required":["data"]}}}},"required":["id","type","attributes"]}},"modifiers":{"modifier":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"modifiers"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the modifier.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"price":{"type":"string","description":"Price of the modifier.","maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","price","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"product_variants":{"product_variant":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"productVariants","maxLength":255},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"retailPriceExclTax":{"type":"string","description":"Product price excluding tax.","minLength":1,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"retailPriceInclTax":{"type":"string","description":"Product price including applicable taxes.","minLength":1,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{2}$"},"sku":{"type":"string","description":"SKU of the variant.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"selector":{"type":"object","description":"Arbitrary key/value JSON object for product variant selector.","additionalProperties":true},"barcode":{"type":"string","description":"Barcode of the variant.","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9,-_. ]+$"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["retailPriceExclTax","retailPriceInclTax","sku","barcode","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"taxes":{"tax":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"taxes"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Name of the tax.","minLength":1,"maxLength":255,"pattern":"^.*\\S.*$"},"rate":{"type":"string","description":"Tax rate as a decimal.","minLength":3,"maxLength":255,"pattern":"^[0-9]+\\.[0-9]{1,6}$"},"taxType":{"type":"string","description":"Type of the tax.","enum":["vat","other","fixed","consumption","sales","state","city","liquor","food","entertainment"]},"isActive":{"type":"boolean","description":"Whether the tax is active."},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"label":{"type":["string","null"],"description":"Label of the tax.","maxLength":255,"pattern":"^.*\\S.*$"},"ratePercent":{"type":"string","description":"Tax rate as a percentage.","minLength":1,"maxLength":7,"pattern":"^[0-9]+(\\.[0-9]{1,2})?$"}},"required":["name","rate","taxType","isActive","createdAt","updatedAt","ratePercent","label"]}},"required":["id","type","attributes"]}},"dietary_restrictions":{"dietary_restriction":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"dietaryRestrictions"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Localized name of the dietary restriction.","minLength":1,"maxLength":255,"pattern":".*"},"description":{"type":["string","null"],"description":"Localized description of the dietary restriction.","minLength":0,"maxLength":10000,"pattern":".*"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"allergens":{"allergen":{"type":"object","properties":{"id":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID (UUID) that identifies the related object.","minLength":36,"maxLength":36},"type":{"type":"string","description":"The [type](https://jsonapi.org/format/#document-resource-object-identification) member is used to describe resource objects that share common attributes and relationships.","const":"allergens"},"attributes":{"type":"object","description":"An [attributes object](https://jsonapi.org/format/#document-resource-object-attributes) representing some of the resource's data.","properties":{"name":{"type":"string","description":"Localized name of the allergen.","minLength":1,"maxLength":255,"pattern":".*"},"description":{"type":["string","null"],"description":"Localized description of the allergen.","minLength":0,"maxLength":10000,"pattern":".*"},"createdAt":{"type":"string","description":"Created at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"},"updatedAt":{"type":"string","description":"Updated at timestamp in RFC 3339 format.","maxLength":25,"format":"date-time"}},"required":["name","createdAt","updatedAt"]}},"required":["id","type","attributes"]}},"error":{"type":"object","description":"A JSON:API error object.\n\nAdditional properties specific to the problem type may be present.    \n","properties":{"errors":{"type":"array","description":"An array of error details to accompany a problem details response.","maxItems":1000,"items":{"type":"object","description":"An object to provide explicit details on a problem towards an API consumer.","properties":{"id":{"type":"string","maxLength":16,"description":"A unique identifier for this particular occurrence of the problem.","pattern":"^[A-Za-z0-9_-]+$"},"status":{"type":"string","maxLength":3,"description":"The HTTP status code applicable to this problem, expressed as a string value.","pattern":"^[1-5][0-9]{2}$"},"code":{"type":"string","maxLength":50,"description":"An application-specific error code, expressed as a string value.","pattern":"^[A-Za-z0-9_-]+$"},"title":{"type":"string","description":"A short, human-readable summary of the problem that SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization.","maxLength":256,"pattern":"^.{1,255}$"},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem. Like title, this field's value can be localized.","maxLength":1024,"pattern":"^.{1,1023}$"},"source":{"type":"object","properties":{"pointer":{"type":"string","description":"A JSON Pointer to a specific request body property that is the source of error.","maxLength":1024,"pattern":"^$|^/([A-Za-z0-9_-]+/)*[A-Za-z0-9_-]+$"},"parameter":{"type":"string","description":"A string indicating which URI query parameter caused the error.","maxLength":1024,"pattern":"^[A-Za-z0-9_]+$"},"header":{"type":"string","description":"The name of the header that is the source of error.","maxLength":1024,"pattern":"^[A-Za-z-]+$"}}},"meta":{"type":"object","description":"Additional information about the error.","additionalProperties":true}},"required":["title"]}}},"required":["errors"]}},"responses":{"bad_request":{"description":"Bad request.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"unauthorized":{"description":"Unauthorized.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"too_many_requests":{"description":"Too many requests.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Retry-After":{"$ref":"#/components/headers/retry_after"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"internal_server_error":{"description":"Internal Server Error.","content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}},"service_unavailable":{"description":"Service is unavailable.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"type":"object","$ref":"#/components/schemas/error"}}}}}},"paths":{"/v1/products/{id}":{"get":{"operationId":"getProduct","summary":"Get product","description":"This operation returns a single product by its unique identifier.\n\n**Note:** This operation needs [Authentication](../guidelines/authentication.md) and supports the following JSON:API features:\n\n- [Relationships](../guidelines/relationships.md) - `productType`, `modifierSets`, `modifiers`, `productVariants`, `taxes`, `dietaryRestrictions`, `allergens` using `include` query parameter.\n- [Sparse fieldsets](../guidelines/sparse-fieldsets.md) - supports all fields of `product` and related resources with `fields` query parameter.\n","parameters":[{"$ref":"#/components/parameters/fields_products"},{"$ref":"#/components/parameters/fields_taxes"},{"in":"path","name":"id","description":"The id of the resource.","required":true,"schema":{"type":"string","format":"uuid","title":"Resource identifier","description":"Universally unique ID UUID4.","minLength":36,"maxLength":36}},{"in":"query","name":"include","schema":{"type":"array","maxItems":7,"items":{"type":"string","enum":["productType","modifierSets","productVariants","modifiers","taxes","dietaryRestrictions","allergens"]}},"description":"Include query parameter to allow the client to customize which related resource should be returned.","required":false},{"in":"query","name":"fields[productTypes]","schema":{"type":"array","maxItems":3,"items":{"type":"string","enum":["name","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"in":"query","name":"fields[modifierSets]","schema":{"type":"array","maxItems":6,"items":{"type":"string","enum":["name","selection","maximumCount","minimumCount","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"in":"query","name":"fields[modifiers]","schema":{"type":"array","maxItems":4,"items":{"type":"string","enum":["name","price","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"in":"query","name":"fields[productVariants]","schema":{"type":"array","maxItems":10,"items":{"type":"string","enum":["sku","barcode","selector","tax","retailPriceInclTax","retailPriceExclTax","createdAt","updatedAt"]}},"description":"Fields query parameter to allow the client to customize which fields should be returned.","required":false},{"$ref":"#/components/parameters/fields_dietary_restrictions"},{"$ref":"#/components/parameters/fields_allergens"}],"tags":["Products"],"responses":{"200":{"description":"Successful response with product data in JSON:API format.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/products/product_response"}}}},"400":{"$ref":"#/components/responses/bad_request"},"401":{"$ref":"#/components/responses/unauthorized"},"404":{"description":"Product not found.","headers":{"X-Rate-Limit-Limit":{"$ref":"#/components/headers/x_rate_limit_limit"},"X-Rate-Limit-Remaining":{"$ref":"#/components/headers/x_rate_limit_remaining"},"X-Rate-Limit-Reset":{"$ref":"#/components/headers/x_rate_limit_reset"},"Access-Control-Allow-Origin":{"$ref":"#/components/headers/access_control_allow_origin"}},"content":{"application/vnd.api+json":{"schema":{"$ref":"#/components/schemas/error"}}}},"429":{"$ref":"#/components/responses/too_many_requests"},"500":{"$ref":"#/components/responses/internal_server_error"},"503":{"$ref":"#/components/responses/service_unavailable"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mews.com/pos-api/operations/products.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
