> For the complete documentation index, see [llms.txt](https://movemint.gitbook.io/movemint-developer-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://movemint.gitbook.io/movemint-developer-docs/open-api-specification/core-resources/merchandise.md).

# Merchandise

Manage event store merchandise (t-shirts, hats, etc.) with options and photos. Requires a connected Stripe account on the event.

## GET /api/v1/events/{handle}/merchandise

> List event merchandise

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Merchandise","description":"Manage event store merchandise (t-shirts, hats, etc.) with options and\nphotos. Requires a connected Stripe account on the event.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}}},"schemas":{"Merchandise":{"type":"object","required":["id","name","description","merchandise_type","price_cents","price_dollars","quantity","currency","active","show_in_store","show_in_registration","collect_shipping","stripe_product_id","options","photo_count"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"merchandise_type":{"type":"string","enum":["clothing","food","lodging","other","other_non_taxable","athletic_membership"]},"price_cents":{"type":"integer"},"price_dollars":{"type":"number"},"quantity":{"type":"integer","nullable":true},"currency":{"type":"string"},"active":{"type":"boolean"},"show_in_store":{"type":"boolean"},"show_in_registration":{"type":"boolean"},"collect_shipping":{"type":"boolean"},"stripe_product_id":{"type":"string","nullable":true},"options":{"type":"array","items":{"$ref":"#/components/schemas/MerchandiseOption"}},"photo_count":{"type":"integer"}}},"MerchandiseOption":{"type":"object","required":["id","name","quantity"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"quantity":{"type":"integer","nullable":true}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/merchandise":{"get":{"tags":["Merchandise"],"summary":"List event merchandise","operationId":"listEventMerchandise","parameters":[{"$ref":"#/components/parameters/EventHandle"}],"responses":{"200":{"description":"Items","content":{"application/json":{"schema":{"type":"object","required":["merchandise"],"properties":{"merchandise":{"type":"array","items":{"$ref":"#/components/schemas/Merchandise"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"}}}}}}
````

## Add a merchandise item

> Refused (422 stripe\_account\_required) when the event has no connected Stripe account.

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Merchandise","description":"Manage event store merchandise (t-shirts, hats, etc.) with options and\nphotos. Requires a connected Stripe account on the event.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}}},"schemas":{"CreateMerchandiseRequest":{"type":"object","required":["name","merchandise_type","price_cents"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"merchandise_type":{"type":"string","enum":["clothing","food","lodging","other","other_non_taxable","athletic_membership"]},"price_cents":{"type":"integer","minimum":0},"quantity":{"type":"integer","minimum":0},"active":{"type":"boolean"},"show_in_store":{"type":"boolean"},"show_in_registration":{"type":"boolean"},"collect_shipping":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"quantity":{"type":"integer","minimum":0}}}},"images":{"type":"array","items":{"type":"string","format":"uri"}}}},"Merchandise":{"type":"object","required":["id","name","description","merchandise_type","price_cents","price_dollars","quantity","currency","active","show_in_store","show_in_registration","collect_shipping","stripe_product_id","options","photo_count"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"merchandise_type":{"type":"string","enum":["clothing","food","lodging","other","other_non_taxable","athletic_membership"]},"price_cents":{"type":"integer"},"price_dollars":{"type":"number"},"quantity":{"type":"integer","nullable":true},"currency":{"type":"string"},"active":{"type":"boolean"},"show_in_store":{"type":"boolean"},"show_in_registration":{"type":"boolean"},"collect_shipping":{"type":"boolean"},"stripe_product_id":{"type":"string","nullable":true},"options":{"type":"array","items":{"$ref":"#/components/schemas/MerchandiseOption"}},"photo_count":{"type":"integer"}}},"MerchandiseOption":{"type":"object","required":["id","name","quantity"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"quantity":{"type":"integer","nullable":true}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}},"StripeAccountRequiredError":{"type":"object","required":["error","message","connect_path"],"properties":{"error":{"type":"string","enum":["stripe_account_required"]},"message":{"type":"string"},"connect_path":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/merchandise":{"post":{"tags":["Merchandise"],"summary":"Add a merchandise item","description":"Refused (422 stripe_account_required) when the event has no connected Stripe account.","operationId":"createEventMerchandise","parameters":[{"$ref":"#/components/parameters/EventHandle"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMerchandiseRequest"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","required":["merchandise"],"properties":{"merchandise":{"$ref":"#/components/schemas/Merchandise"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"},"422":{"description":"Validation error or stripe_account_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripeAccountRequiredError"}}}}}}}}}
````

## GET /api/v1/events/{handle}/merchandise/{id}

> Get a merchandise item

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Merchandise","description":"Manage event store merchandise (t-shirts, hats, etc.) with options and\nphotos. Requires a connected Stripe account on the event.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}},"ResourceId":{"name":"id","in":"path","required":true,"description":"The ID of the resource","schema":{"type":"integer","format":"int64"}}},"schemas":{"Merchandise":{"type":"object","required":["id","name","description","merchandise_type","price_cents","price_dollars","quantity","currency","active","show_in_store","show_in_registration","collect_shipping","stripe_product_id","options","photo_count"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"merchandise_type":{"type":"string","enum":["clothing","food","lodging","other","other_non_taxable","athletic_membership"]},"price_cents":{"type":"integer"},"price_dollars":{"type":"number"},"quantity":{"type":"integer","nullable":true},"currency":{"type":"string"},"active":{"type":"boolean"},"show_in_store":{"type":"boolean"},"show_in_registration":{"type":"boolean"},"collect_shipping":{"type":"boolean"},"stripe_product_id":{"type":"string","nullable":true},"options":{"type":"array","items":{"$ref":"#/components/schemas/MerchandiseOption"}},"photo_count":{"type":"integer"}}},"MerchandiseOption":{"type":"object","required":["id","name","quantity"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"quantity":{"type":"integer","nullable":true}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/merchandise/{id}":{"get":{"tags":["Merchandise"],"summary":"Get a merchandise item","operationId":"getEventMerchandise","parameters":[{"$ref":"#/components/parameters/EventHandle"},{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["merchandise"],"properties":{"merchandise":{"$ref":"#/components/schemas/Merchandise"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"}}}}}}
````

## Delete a merchandise item

> Refused (422) when orders have been placed.

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Merchandise","description":"Manage event store merchandise (t-shirts, hats, etc.) with options and\nphotos. Requires a connected Stripe account on the event.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}},"ResourceId":{"name":"id","in":"path","required":true,"description":"The ID of the resource","schema":{"type":"integer","format":"int64"}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}}},"paths":{"/api/v1/events/{handle}/merchandise/{id}":{"delete":{"tags":["Merchandise"],"summary":"Delete a merchandise item","description":"Refused (422) when orders have been placed.","operationId":"deleteEventMerchandise","parameters":[{"$ref":"#/components/parameters/EventHandle"},{"$ref":"#/components/parameters/ResourceId"}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean","enum":[true]}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"},"422":{"description":"Has orders","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````

## PATCH /api/v1/events/{handle}/merchandise/{id}

> Update a merchandise item

````json
{"openapi":"3.1.0","info":{"title":"Movemint API","version":"1.0"},"tags":[{"name":"Merchandise","description":"Manage event store merchandise (t-shirts, hats, etc.) with options and\nphotos. Requires a connected Stripe account on the event.\n"}],"servers":[{"url":"https://www.movemint.cc","description":"Production"}],"security":[{"bearerAuth":[]},{"oauth2":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Pass the access token in the `Authorization` header:\n```\nAuthorization: Bearer YOUR_ACCESS_TOKEN\n```\n"},"oauth2":{"type":"oauth2","description":"OAuth 2.0 authentication using the Authorization Code or Client\nCredentials grant flow.\n","flows":{"authorizationCode":{"authorizationUrl":"https://www.movemint.cc/oauth/authorize","tokenUrl":"https://www.movemint.cc/oauth/token","refreshUrl":"https://www.movemint.cc/oauth/token","scopes":{}},"clientCredentials":{"tokenUrl":"https://www.movemint.cc/oauth/token","scopes":{}}}}},"parameters":{"EventHandle":{"name":"handle","in":"path","required":true,"description":"The unique handle (slug) of the event","schema":{"type":"string"}},"ResourceId":{"name":"id","in":"path","required":true,"description":"The ID of the resource","schema":{"type":"integer","format":"int64"}}},"schemas":{"UpdateMerchandiseRequest":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"merchandise_type":{"type":"string","enum":["clothing","food","lodging","other","other_non_taxable","athletic_membership"]},"price_cents":{"type":"integer","minimum":0},"quantity":{"type":"integer","minimum":0},"active":{"type":"boolean"},"show_in_store":{"type":"boolean"},"show_in_registration":{"type":"boolean"},"collect_shipping":{"type":"boolean"},"options":{"type":"array","items":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"quantity":{"type":"integer","minimum":0}}}},"images":{"type":"array","items":{"type":"string","format":"uri"}}}},"Merchandise":{"type":"object","required":["id","name","description","merchandise_type","price_cents","price_dollars","quantity","currency","active","show_in_store","show_in_registration","collect_shipping","stripe_product_id","options","photo_count"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"merchandise_type":{"type":"string","enum":["clothing","food","lodging","other","other_non_taxable","athletic_membership"]},"price_cents":{"type":"integer"},"price_dollars":{"type":"number"},"quantity":{"type":"integer","nullable":true},"currency":{"type":"string"},"active":{"type":"boolean"},"show_in_store":{"type":"boolean"},"show_in_registration":{"type":"boolean"},"collect_shipping":{"type":"boolean"},"stripe_product_id":{"type":"string","nullable":true},"options":{"type":"array","items":{"$ref":"#/components/schemas/MerchandiseOption"}},"photo_count":{"type":"integer"}}},"MerchandiseOption":{"type":"object","required":["id","name","quantity"],"properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"quantity":{"type":"integer","nullable":true}}},"OAuthError":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Machine-readable error code"},"error_description":{"type":"string","description":"Human-readable description of the error"}}},"Error":{"type":"object","description":"A generic error response","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"}}}},"responses":{"Unauthorized":{"description":"Unauthorized - invalid or missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthError"}}}},"Forbidden":{"description":"Forbidden - user is not an admin of this event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"EventNotFound":{"description":"Event not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/events/{handle}/merchandise/{id}":{"patch":{"tags":["Merchandise"],"summary":"Update a merchandise item","operationId":"updateEventMerchandise","parameters":[{"$ref":"#/components/parameters/EventHandle"},{"$ref":"#/components/parameters/ResourceId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMerchandiseRequest"}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"type":"object","required":["merchandise"],"properties":{"merchandise":{"$ref":"#/components/schemas/Merchandise"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/EventNotFound"},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
````
