{"files":{"SKILL.md":"---\nname: jumpseller-api\ndescription: \"Jumpseller API skill. Use when working with Jumpseller for store, hooks.json, hooks. Covers 179 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Jumpseller API\nAPI version: 1.0.0\n\n## Auth\nBearer basic | ApiKey login in query | ApiKey authtoken in query | ApiKey auth_token in query | OAuth2\n\n## Base URL\nhttps://api.jumpseller.com/v1\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET /store/info.json -- retrieve store information.\n3. POST /hooks.json -- create first hooks.json\n\n## Endpoints\n179 endpoints across 41 groups. See references/api-spec.lap for full details.\n\n### Store\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /store/info.json | Retrieve Store Information. |\n| GET | /store/languages.json | Retrieve Store Languages. |\n| POST | /store/setup.json | Create a new store. |\n\n### Hooks.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /hooks.json | Retrieve all Hooks. |\n| POST | /hooks.json | Create a new Hook. |\n\n### Hooks\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /hooks/{id}.json | Retrieve a single Hook. |\n| PUT | /hooks/{id}.json | Update a Hook. |\n| DELETE | /hooks/{id}.json | Delete an existing Hook. |\n\n### Jsapps.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /jsapps.json | Retrieve all the Store's JsApps. |\n| POST | /jsapps.json | Create a Store JsApp. |\n\n### Jsapps\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /jsapps/{code}.json | Retrieve the JsApps of a given app. |\n| DELETE | /jsapps/{id}.json | Delete an existing JsApp. |\n\n### Apps\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /apps/{code}/install_status.json | Retrieve an OauthApplication installation status. |\n| GET | /apps/{code}/install_status_by_store_id.json | Retrieve an OauthApplication installation status for a specific Store. |\n| GET | /apps/{code}/billing_cycle_dates.json | Retrieve billing cycle start and billing cycle end for an OauthApplication. |\n| GET | /apps/{code}/billing_cycle_orders.json | Retrieve billing cycle orders for an OauthApplication. |\n| GET | /apps/{code}/check_billing_cycle_order.json | Retrieve a billing cycle order information for an OauthApplication. |\n\n### Products.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /products.json | Retrieve all Products. |\n| POST | /products.json | Create a new Product. |\n\n### Products\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /products/count.json | Count all Products. |\n| GET | /products/after/{id}.json | Retrieves Products after the given id. |\n| GET | /products/status/{status}.json | Retrieve Products filtered by status. |\n| GET | /products/category/{category_id}.json | Retrieve Products filtered by category. |\n| GET | /products/status/{status}/count.json | Count Products filtered by status. |\n| GET | /products/category/{category_id}/count.json | Count Products filtered by category. |\n| GET | /products/{id}/reviews.json | Retrieve all reviews for a specific Product. |\n| GET | /products/reviews/{review_id}.json | Retrieve a single Product Review. |\n| GET | /products/reviews.json | Retrieve all Product Reviews. |\n| GET | /products/{id}.json | Retrieve a single Product. |\n| PUT | /products/{id}.json | Modify an existing Product. |\n| DELETE | /products/{id}.json | Delete an existing Product. |\n| GET | /products/search.json | Retrieve a Product List from a query. |\n| GET | /products/{id}/options.json | Retrieve all Product Options. |\n| POST | /products/{id}/options.json | Create a new Product Option. |\n| GET | /products/{id}/options/count.json | Count all Product Options. |\n| GET | /products/{id}/options/{option_id}.json | Retrieve a single Product Option. |\n| PUT | /products/{id}/options/{option_id}.json | Modify an existing Product Option. |\n| DELETE | /products/{id}/options/{option_id}.json | Delete a Product Option. |\n| GET | /products/{id}/options/{option_id}/values.json | Retrieve all Product Option Values. |\n| POST | /products/{id}/options/{option_id}/values.json | Create a new Product Option Value. |\n| GET | /products/{id}/options/{option_id}/values/count.json | Count all Product Option Values. |\n| GET | /products/{id}/options/{option_id}/values/{value_id}.json | Retrieve a single Product Option Value. |\n| PUT | /products/{id}/options/{option_id}/values/{value_id}.json | Modify an existing Product Option Value. |\n| DELETE | /products/{id}/options/{option_id}/values/{value_id}.json | Delete a Product Option Value. |\n| GET | /products/{id}/variants/{variant_id}.json | Retrieve a single Product Variant. |\n| PUT | /products/{id}/variants/{variant_id}.json | Modify an existing Product Variant. |\n| GET | /products/{id}/variants.json | Retrieve all Product Variants. |\n| POST | /products/{id}/variants.json | Create a new Product Variant. |\n| GET | /products/{id}/variants/count.json | Count all Product Variants. |\n| GET | /products/{id}/images.json | Retrieve all Product Images. |\n| POST | /products/{id}/images.json | Create a new Product Image. |\n| PUT | /products/{product_id}/images/{image_id}.json | Update a Product Image position. |\n| GET | /products/{id}/images/count.json | Count all Product Images. |\n| GET | /products/{id}/images/{image_id}.json | Retrieve a single Product Image. |\n| DELETE | /products/{id}/images/{image_id}.json | Delete a Product Image. |\n| GET | /products/{id}/attachments.json | Retrieve all Product Attachments. |\n| POST | /products/{id}/attachments.json | Create a new Product Attachment. |\n| GET | /products/{id}/attachments/count.json | Count all Product Attachments. |\n| GET | /products/{id}/attachments/{attachment_id}.json | Retrieve a single Product Attachment. |\n| DELETE | /products/{id}/attachments/{attachment_id}.json | Delete a Product Attachment. |\n| GET | /products/{id}/digital_products.json | Retrieve all Product DigitalProducts. |\n| POST | /products/{id}/digital_products.json | Create a new Product DigitalProduct. |\n| GET | /products/{id}/digital_products/count.json | Count all Product DigitalProducts. |\n| GET | /products/{id}/digital_products/{digital_product_id}.json | Retrieve a single Product DigitalProduct. |\n| DELETE | /products/{id}/digital_products/{digital_product_id}.json | Delete a Product DigitalProduct. |\n| GET | /products/{id}/fields.json | Retrieve all Product Custom Fields |\n| POST | /products/{id}/fields.json | Add an existing Custom Field to a Product. |\n| GET | /products/{id}/fields/count.json | Count all Product Custom Fields. |\n| PUT | /products/{product_id}/fields/{field_id}.json | Update value of Product Custom Field |\n| DELETE | /products/{product_id}/fields/{field_id}.json | Delete value of Product Custom Field |\n\n### Categories.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /categories.json | Retrieve all Categories. |\n| POST | /categories.json | Create a new Category. |\n\n### Categories\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /categories/count.json | Count all Categories. |\n| GET | /categories/{id}.json | Retrieve a single Category. |\n| PUT | /categories/{id}.json | Modify an existing Category. |\n| DELETE | /categories/{id}.json | Delete an existing Category. |\n\n### Orders.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /orders.json | Retrieve all Orders. |\n| POST | /orders.json | Create a new Order. |\n\n### Orders\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /orders/count.json | Count all Orders. |\n| GET | /orders/status/{status}.json | Retrieve orders filtered by status. |\n| GET | /orders/{id}.json | Retrieve a single Order. |\n| PUT | /orders/{id}.json | Modify an existing Order. |\n| GET | /orders/search.json | Retrieve an Orders List from a query. |\n| GET | /orders/after/{id}.json | Retrieve orders filtered by Order Id. |\n| GET | /orders/{id}/history.json | Retrieve all Order History. |\n| POST | /orders/{id}/history.json | Create a new Order History Entry. |\n| GET | /orders/{id}/documents.json | Retrieve all Documents from an  Order. |\n| POST | /orders/{id}/documents.json | Create a new Order Document Entry. |\n| PUT | /orders/{id}/documents/{public_id}.json | Update a Document from an Order. |\n| DELETE | /orders/{id}/documents/{public_id}.json | Delete a Document from an Order. |\n\n### Fulfillments\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /fulfillments/count.json | Count all Fulfillments. |\n| POST | /fulfillments/rates.json | Rates for fulfillment. |\n| GET | /fulfillments/{id}/label.json | Retrieve a presigned URL for the Fulfillment label |\n| GET | /fulfillments/{id}.json | Retrieve a single Fulfillment. |\n| PUT | /fulfillments/{id}.json | Modify an existing Fulfillment. |\n\n### Fulfillments.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /fulfillments.json | Retrieve all Fulfillments. |\n| POST | /fulfillments.json | Create a new Fulfillment. |\n\n### Order\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /order/{id}/fulfillments.json | Retrieve the Fulfillments associated with the Order. |\n\n### Pages.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /pages.json | Retrieve all Pages. |\n| POST | /pages.json | Create a new Page. |\n\n### Pages\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /pages/count.json | Count all Pages. |\n| GET | /pages/{id}.json | Retrieve a single Page by id. |\n| PUT | /pages/{id}.json | Update a Page. |\n| DELETE | /pages/{id}.json | Delete an existing Page. |\n| GET | /pages/{id}/images.json | Retrieve all Page Images. |\n| POST | /pages/{id}/images.json | Create a new Page Image. |\n| GET | /pages/{id}/images/count.json | Count all Page Images. |\n| GET | /pages/{id}/images/{image_id}.json | Retrieve a single Page Image. |\n| PUT | /pages/{id}/images/{image_id}.json | Update a Page Image url. |\n| DELETE | /pages/{id}/images/{image_id}.json | Delete a Page Image. |\n\n### Customers.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /customers.json | Retrieve all Customers. |\n| POST | /customers.json | Create a new Customer. |\n\n### Customers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /customers/count.json | Count all Customers. |\n| GET | /customers/email/{email}.json | Retrieve a single Customer by email. |\n| GET | /customers/{id}/orders.json | Retrieve all orders of single Customer |\n| GET | /customers/{id}/orders/status/{status}.json | Retrieve all orders of single Customer |\n| GET | /customers/{id}.json | Retrieve a single Customer by id. |\n| PUT | /customers/{id}.json | Update a new Customer. |\n| DELETE | /customers/{id}.json | Delete an existing Customer. |\n| GET | /customers/search.json | Retrieve a Customer List from a query. |\n| GET | /customers/{id}/fields | Retrieves the Customer Additional Field of a Customer. |\n| POST | /customers/{id}/fields | Adds Customer Additional Fields to a Customer. |\n| GET | /customers/{id}/fields/{field_id} | Retrieve a single Customer Additional Field. |\n| PUT | /customers/{id}/fields/{field_id} | Update a Customer Additional Field. |\n| DELETE | /customers/{id}/fields/{field_id} | Delete a Customer Additional Field. |\n\n### Customer_categories.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /customer_categories.json | Retrieve all Customer Categories. |\n| POST | /customer_categories.json | Create a new CustomerCategory. |\n\n### Customer_categories\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /customer_categories/{id}.json | Retrieve a single CustomerCategory. |\n| PUT | /customer_categories/{id}.json | Update a CustomerCategory. |\n| DELETE | /customer_categories/{id}.json | Delete an existing CustomerCategory. |\n| GET | /customer_categories/{id}/customers.json | Retrieves the customers in a CustomerCategory. |\n| POST | /customer_categories/{id}/customers.json | Adds Customers to a CustomerCategory. |\n| DELETE | /customer_categories/{id}/customers/{customer_id}.json | Delete Customer from an existing CustomerCategory. |\n\n### Promotions.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /promotions.json | Retrieve all Promotions. |\n| POST | /promotions.json | Create a new Promotion. |\n\n### Promotions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /promotions/{id}.json | Retrieve a single Promotion. |\n| PUT | /promotions/{id}.json | Update a Promotion. |\n| DELETE | /promotions/{id}.json | Delete an existing Promotion. |\n\n### Payment_methods.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /payment_methods.json | Retrieve all Store's Payment Methods. |\n| POST | /payment_methods.json | Creates an External Payment Method. |\n\n### Payment_methods\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /payment_methods/{id}.json | Retrieve a single Payment Method. |\n\n### Shipping_methods.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /shipping_methods.json | Retrieve all Store's Shipping Methods. |\n| POST | /shipping_methods.json | Creates a Shipping Method. |\n\n### Shipping_methods\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /shipping_methods/{id}.json | Retrieve a single Shipping Method. |\n| PUT | /shipping_methods/{id}.json | Update a Shipping Method. |\n| DELETE | /shipping_methods/{id}.json | Delete an existing Shipping Method. |\n\n### Locations.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /locations.json | Retrieve all Store's Locations |\n| POST | /locations.json | Create a Pickup Location |\n\n### Locations\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /locations/{id}.json | Retrieve a Store's Locations by ID |\n| PUT | /locations/{id}.json | Update a Pickup Location |\n| DELETE | /locations/{id}.json | Delete a Store's Locations by ID |\n\n### Custom_fields.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /custom_fields.json | Retrieve all Store's Custom Fields. |\n| POST | /custom_fields.json | Create a new Custom Field. |\n\n### Custom_fields\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /custom_fields/{id}.json | Retrieve a single CustomField. |\n| PUT | /custom_fields/{id}.json | Update a CustomField. |\n| DELETE | /custom_fields/{id}.json | Delete an existing CustomField. |\n| GET | /custom_fields/{id}/select_options.json | Retrieve all Store's Custom Fields. |\n| POST | /custom_fields/{id}/select_options.json | Create a new Custom Field Select Option. |\n| GET | /custom_fields/{id}/select_options/{custom_field_select_option_id}.json | Retrieve a single SelectOption from a CustomField. |\n| PUT | /custom_fields/{id}/select_options/{custom_field_select_option_id}.json | Update a SelectOption from a CustomField. |\n| DELETE | /custom_fields/{id}/select_options/{custom_field_select_option_id}.json | Delete an existing CustomFieldSelectOption. |\n\n### Checkout_custom_fields.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /checkout_custom_fields.json | Retrieve all Checkout Custom Fields. |\n| POST | /checkout_custom_fields.json | Create a new CheckoutCustomField. |\n\n### Checkout_custom_fields\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /checkout_custom_fields/{id}.json | Retrieve a single CheckoutCustomField. |\n| PUT | /checkout_custom_fields/{id}.json | Update a CheckoutCustomField. |\n| DELETE | /checkout_custom_fields/{id}.json | Delete an existing CheckoutCustomField. |\n\n### Countries.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /countries.json | Retrieve all Countries. |\n\n### Countries\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /countries/{country_code}.json | Retrieve a single Country information. |\n| GET | /countries/{country_code}/regions.json | Retrieve all Regions from a single Country. |\n| GET | /countries/{country_code}/regions/{region_code}/municipalities.json | Retrieve all Municipalities from a single Region. |\n| GET | /countries/{country_code}/regions/{region_code}.json | Retrieve a single Region information object. |\n\n### Taxes.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /taxes.json | Retrieve all Taxes. |\n| POST | /taxes.json | Create a new Tax. |\n\n### Taxes\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /taxes/{id}.json | Retrieve a single Tax information. |\n\n### Carts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /carts/{id}.json | Obtain information for a cart. |\n\n### Documents.json\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /documents.json | Retrieve all Documents from a Store. |\n\n### Transaction_ledger\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /transaction_ledger/balance.json | Retrieve Store Balance. |\n\n### Products_locations\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /products_locations | Stock by Product and Location |\n| PUT | /products_locations | Update Stock by Product and Location |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all info.json?\" -> GET /store/info.json\n- \"List all languages.json?\" -> GET /store/languages.json\n- \"List all hooks.json?\" -> GET /hooks.json\n- \"Create a hooks.json?\" -> POST /hooks.json\n- \"Get hook details?\" -> GET /hooks/{id}.json\n- \"Update a hook?\" -> PUT /hooks/{id}.json\n- \"Delete a hook?\" -> DELETE /hooks/{id}.json\n- \"List all jsapps.json?\" -> GET /jsapps.json\n- \"Create a jsapps.json?\" -> POST /jsapps.json\n- \"Get jsapp details?\" -> GET /jsapps/{code}.json\n- \"Delete a jsapp?\" -> DELETE /jsapps/{id}.json\n- \"List all install_status.json?\" -> GET /apps/{code}/install_status.json\n- \"List all install_status_by_store_id.json?\" -> GET /apps/{code}/install_status_by_store_id.json\n- \"List all billing_cycle_dates.json?\" -> GET /apps/{code}/billing_cycle_dates.json\n- \"List all billing_cycle_orders.json?\" -> GET /apps/{code}/billing_cycle_orders.json\n- \"List all check_billing_cycle_order.json?\" -> GET /apps/{code}/check_billing_cycle_order.json\n- \"List all products.json?\" -> GET /products.json\n- \"Create a products.json?\" -> POST /products.json\n- \"List all count.json?\" -> GET /products/count.json\n- \"Get after details?\" -> GET /products/after/{id}.json\n- \"Get status details?\" -> GET /products/status/{status}.json\n- \"Get category details?\" -> GET /products/category/{category_id}.json\n- \"List all reviews.json?\" -> GET /products/{id}/reviews.json\n- \"Get review details?\" -> GET /products/reviews/{review_id}.json\n- \"Get product details?\" -> GET /products/{id}.json\n- \"Update a product?\" -> PUT /products/{id}.json\n- \"Delete a product?\" -> DELETE /products/{id}.json\n- \"Search search.json?\" -> GET /products/search.json\n- \"List all options.json?\" -> GET /products/{id}/options.json\n- \"Create a options.json?\" -> POST /products/{id}/options.json\n- \"Get option details?\" -> GET /products/{id}/options/{option_id}.json\n- \"Update a option?\" -> PUT /products/{id}/options/{option_id}.json\n- \"Delete a option?\" -> DELETE /products/{id}/options/{option_id}.json\n- \"List all values.json?\" -> GET /products/{id}/options/{option_id}/values.json\n- \"Create a values.json?\" -> POST /products/{id}/options/{option_id}/values.json\n- \"Get value details?\" -> GET /products/{id}/options/{option_id}/values/{value_id}.json\n- \"Update a value?\" -> PUT /products/{id}/options/{option_id}/values/{value_id}.json\n- \"Delete a value?\" -> DELETE /products/{id}/options/{option_id}/values/{value_id}.json\n- \"Get variant details?\" -> GET /products/{id}/variants/{variant_id}.json\n- \"Update a variant?\" -> PUT /products/{id}/variants/{variant_id}.json\n- \"List all variants.json?\" -> GET /products/{id}/variants.json\n- \"Create a variants.json?\" -> POST /products/{id}/variants.json\n- \"List all images.json?\" -> GET /products/{id}/images.json\n- \"Create a images.json?\" -> POST /products/{id}/images.json\n- \"Update a image?\" -> PUT /products/{product_id}/images/{image_id}.json\n- \"Get image details?\" -> GET /products/{id}/images/{image_id}.json\n- \"Delete a image?\" -> DELETE /products/{id}/images/{image_id}.json\n- \"List all attachments.json?\" -> GET /products/{id}/attachments.json\n- \"Create a attachments.json?\" -> POST /products/{id}/attachments.json\n- \"Get attachment details?\" -> GET /products/{id}/attachments/{attachment_id}.json\n- \"Delete a attachment?\" -> DELETE /products/{id}/attachments/{attachment_id}.json\n- \"List all digital_products.json?\" -> GET /products/{id}/digital_products.json\n- \"Create a digital_products.json?\" -> POST /products/{id}/digital_products.json\n- \"Get digital_product details?\" -> GET /products/{id}/digital_products/{digital_product_id}.json\n- \"Delete a digital_product?\" -> DELETE /products/{id}/digital_products/{digital_product_id}.json\n- \"List all fields.json?\" -> GET /products/{id}/fields.json\n- \"Create a fields.json?\" -> POST /products/{id}/fields.json\n- \"Update a field?\" -> PUT /products/{product_id}/fields/{field_id}.json\n- \"Delete a field?\" -> DELETE /products/{product_id}/fields/{field_id}.json\n- \"List all categories.json?\" -> GET /categories.json\n- \"Create a categories.json?\" -> POST /categories.json\n- \"Update a category?\" -> PUT /categories/{id}.json\n- \"Delete a category?\" -> DELETE /categories/{id}.json\n- \"List all orders.json?\" -> GET /orders.json\n- \"Create a orders.json?\" -> POST /orders.json\n- \"Get order details?\" -> GET /orders/{id}.json\n- \"Update a order?\" -> PUT /orders/{id}.json\n- \"List all history.json?\" -> GET /orders/{id}/history.json\n- \"Create a history.json?\" -> POST /orders/{id}/history.json\n- \"List all documents.json?\" -> GET /orders/{id}/documents.json\n- \"Create a documents.json?\" -> POST /orders/{id}/documents.json\n- \"Update a document?\" -> PUT /orders/{id}/documents/{public_id}.json\n- \"Delete a document?\" -> DELETE /orders/{id}/documents/{public_id}.json\n- \"Create a rates.json?\" -> POST /fulfillments/rates.json\n- \"List all fulfillments.json?\" -> GET /fulfillments.json\n- \"Create a fulfillments.json?\" -> POST /fulfillments.json\n- \"List all label.json?\" -> GET /fulfillments/{id}/label.json\n- \"Get fulfillment details?\" -> GET /fulfillments/{id}.json\n- \"Update a fulfillment?\" -> PUT /fulfillments/{id}.json\n- \"List all pages.json?\" -> GET /pages.json\n- \"Create a pages.json?\" -> POST /pages.json\n- \"Get page details?\" -> GET /pages/{id}.json\n- \"Update a page?\" -> PUT /pages/{id}.json\n- \"Delete a page?\" -> DELETE /pages/{id}.json\n- \"List all customers.json?\" -> GET /customers.json\n- \"Create a customers.json?\" -> POST /customers.json\n- \"Get email details?\" -> GET /customers/email/{email}.json\n- \"Get customer details?\" -> GET /customers/{id}.json\n- \"Update a customer?\" -> PUT /customers/{id}.json\n- \"Delete a customer?\" -> DELETE /customers/{id}.json\n- \"List all customer_categories.json?\" -> GET /customer_categories.json\n- \"Create a customer_categories.json?\" -> POST /customer_categories.json\n- \"Get customer_category details?\" -> GET /customer_categories/{id}.json\n- \"Update a customer_category?\" -> PUT /customer_categories/{id}.json\n- \"Delete a customer_category?\" -> DELETE /customer_categories/{id}.json\n- \"List all fields?\" -> GET /customers/{id}/fields\n- \"Create a field?\" -> POST /customers/{id}/fields\n- \"Get field details?\" -> GET /customers/{id}/fields/{field_id}\n- \"List all promotions.json?\" -> GET /promotions.json\n- \"Create a promotions.json?\" -> POST /promotions.json\n- \"Get promotion details?\" -> GET /promotions/{id}.json\n- \"Update a promotion?\" -> PUT /promotions/{id}.json\n- \"Delete a promotion?\" -> DELETE /promotions/{id}.json\n- \"List all payment_methods.json?\" -> GET /payment_methods.json\n- \"Create a payment_methods.json?\" -> POST /payment_methods.json\n- \"Get payment_method details?\" -> GET /payment_methods/{id}.json\n- \"List all shipping_methods.json?\" -> GET /shipping_methods.json\n- \"Create a shipping_methods.json?\" -> POST /shipping_methods.json\n- \"Get shipping_method details?\" -> GET /shipping_methods/{id}.json\n- \"Update a shipping_method?\" -> PUT /shipping_methods/{id}.json\n- \"Delete a shipping_method?\" -> DELETE /shipping_methods/{id}.json\n- \"List all locations.json?\" -> GET /locations.json\n- \"Create a locations.json?\" -> POST /locations.json\n- \"Get location details?\" -> GET /locations/{id}.json\n- \"Update a location?\" -> PUT /locations/{id}.json\n- \"Delete a location?\" -> DELETE /locations/{id}.json\n- \"List all custom_fields.json?\" -> GET /custom_fields.json\n- \"Create a custom_fields.json?\" -> POST /custom_fields.json\n- \"Get custom_field details?\" -> GET /custom_fields/{id}.json\n- \"Update a custom_field?\" -> PUT /custom_fields/{id}.json\n- \"Delete a custom_field?\" -> DELETE /custom_fields/{id}.json\n- \"List all select_options.json?\" -> GET /custom_fields/{id}/select_options.json\n- \"Create a select_options.json?\" -> POST /custom_fields/{id}/select_options.json\n- \"Get select_option details?\" -> GET /custom_fields/{id}/select_options/{custom_field_select_option_id}.json\n- \"Update a select_option?\" -> PUT /custom_fields/{id}/select_options/{custom_field_select_option_id}.json\n- \"Delete a select_option?\" -> DELETE /custom_fields/{id}/select_options/{custom_field_select_option_id}.json\n- \"List all checkout_custom_fields.json?\" -> GET /checkout_custom_fields.json\n- \"Create a checkout_custom_fields.json?\" -> POST /checkout_custom_fields.json\n- \"Get checkout_custom_field details?\" -> GET /checkout_custom_fields/{id}.json\n- \"Update a checkout_custom_field?\" -> PUT /checkout_custom_fields/{id}.json\n- \"Delete a checkout_custom_field?\" -> DELETE /checkout_custom_fields/{id}.json\n- \"List all countries.json?\" -> GET /countries.json\n- \"Get country details?\" -> GET /countries/{country_code}.json\n- \"List all regions.json?\" -> GET /countries/{country_code}/regions.json\n- \"List all municipalities.json?\" -> GET /countries/{country_code}/regions/{region_code}/municipalities.json\n- \"Get region details?\" -> GET /countries/{country_code}/regions/{region_code}.json\n- \"List all taxes.json?\" -> GET /taxes.json\n- \"Create a taxes.json?\" -> POST /taxes.json\n- \"Get taxe details?\" -> GET /taxes/{id}.json\n- \"Create a setup.json?\" -> POST /store/setup.json\n- \"Get cart details?\" -> GET /carts/{id}.json\n- \"List all balance.json?\" -> GET /transaction_ledger/balance.json\n- \"List all products_locations?\" -> GET /products_locations\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Jumpseller API\n@base https://api.jumpseller.com/v1\n@version 1.0.0\n@auth Basic | ApiKey login in query | ApiKey authtoken in query | ApiKey auth_token in query | OAuth2\n@endpoints 179\n@hint download_for_search\n@toc store(3), hooks.json(2), hooks(3), jsapps.json(2), jsapps(2), apps(5), products.json(2), products(51), categories.json(2), categories(4), orders.json(2), orders(12), fulfillments(5), fulfillments.json(2), order(1), pages.json(2), pages(10), customers.json(2), customers(13), customer_categories.json(2), customer_categories(6), promotions.json(2), promotions(3), payment_methods.json(2), payment_methods(1), shipping_methods.json(2), shipping_methods(3), locations.json(2), locations(3), custom_fields.json(2), custom_fields(8), checkout_custom_fields.json(2), checkout_custom_fields(3), countries.json(1), countries(4), taxes.json(2), taxes(1), carts(1), documents.json(1), transaction_ledger(1), products_locations(2)\n\n@group store\n@endpoint GET /store/info.json\n@desc Retrieve Store Information.\n@returns(200) {name: str, code: str, currency: str, country: str, timezone: str, email: str, hooks_token: str, url: str, logo: str, weight_unit: str, subscription_status: str, subscription_plan: str, fb_pixel_id: str, address: map{address: str, city: str, postal: str, region: str, country: str, region_code: str, country_code: str}, whatsapp_phone: str} # OK\n\n@endpoint GET /store/languages.json\n@desc Retrieve Store Languages.\n@returns(200) OK\n\n@endgroup\n\n@group hooks.json\n@endpoint GET /hooks.json\n@desc Retrieve all Hooks.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Hooks\n\n@endpoint POST /hooks.json\n@desc Create a new Hook.\n@optional {hook: map{event!: str, url!: str}}\n@returns(200) {hook: map{id: int(int32), name: str, event: str, url: str, created_at: str}} # OK\n@errors {404: Hook Not Found.}\n\n@endgroup\n\n@group hooks\n@endpoint GET /hooks/{id}.json\n@desc Retrieve a single Hook.\n@required {id: int(int32) # Id of the Hook}\n@returns(200) {hook: map{id: int(int32), name: str, event: str, url: str, created_at: str}} # OK\n@errors {404: Hook Not Found.}\n\n@endpoint PUT /hooks/{id}.json\n@desc Update a Hook.\n@required {id: int(int32) # Id of the Hook}\n@optional {hook: map{event!: str, url!: str}}\n@returns(200) {hook: map{id: int(int32), name: str, event: str, url: str, created_at: str}} # OK\n@errors {404: Hook Not Found.}\n\n@endpoint DELETE /hooks/{id}.json\n@desc Delete an existing Hook.\n@required {id: int(int32) # Id of the Hook}\n@returns(200) OK\n@errors {404: Hook Not Found.}\n\n@endgroup\n\n@group jsapps.json\n@endpoint GET /jsapps.json\n@desc Retrieve all the Store's JsApps.\n@returns(200) OK\n@errors {404: No JsApps found for the store (or for the app when using an OAuth token).}\n\n@endpoint POST /jsapps.json\n@desc Create a Store JsApp.\n@required {app: map{url!: str, template!: str, element!: str}}\n@returns(200) {js_app: map{id: int(int32), url: str, template: str, element: str, application_id: int(int32)}} # OK\n@errors {400: Bad request, check your parameters.}\n@example_request {\"app\":{\"url\":\"https://test.url.com/\",\"template\":\"layout\",\"element\":\"body\"}}\n\n@endgroup\n\n@group jsapps\n@endpoint GET /jsapps/{code}.json\n@desc Retrieve the JsApps of a given app.\n@required {code: str # Code of the app}\n@returns(200) OK\n@errors {404: App not found or no JsApps for this app., 403: Not authorized to access JsApps for this app.}\n\n@endpoint DELETE /jsapps/{id}.json\n@desc Delete an existing JsApp.\n@required {id: int(int32) # Id of the JsApp}\n@returns(200) {message: str} # OK\n@errors {403: Not authorized to delete this JsApp., 404: JsApp not found.}\n\n@endgroup\n\n@group apps\n@endpoint GET /apps/{code}/install_status.json\n@desc Retrieve an OauthApplication installation status.\n@required {code: str # Code of the app}\n@returns(200) {app_code: str, store_id: int, installed: bool, subscription_plan: str, subscription_status: str, code: str} # OK\n\n@endpoint GET /apps/{code}/install_status_by_store_id.json\n@desc Retrieve an OauthApplication installation status for a specific Store.\n@required {code: str # Code of the app, store_id: int # ID of the store}\n@returns(200) {app_code: str, store_id: int, installed: bool, subscription_plan: str, subscription_status: str, code: str} # OK\n\n@endpoint GET /apps/{code}/billing_cycle_dates.json\n@desc Retrieve billing cycle start and billing cycle end for an OauthApplication.\n@required {code: str # Code of the app}\n@optional {date: str # A date to search a specific billing cycle}\n@returns(200) {billing_start: str, billing_end: str} # OK\n\n@endpoint GET /apps/{code}/billing_cycle_orders.json\n@desc Retrieve billing cycle orders for an OauthApplication.\n@required {code: str # Code of the app}\n@optional {date: str # A date to search for a specific billing cycle}\n@returns(200) {billable_orders: [map], free_orders: [map]} # OK\n\n@endpoint GET /apps/{code}/check_billing_cycle_order.json\n@desc Retrieve a billing cycle order information for an OauthApplication.\n@required {code: str # Code of the app}\n@optional {date: str # A date to search for a specific billing cycle}\n@returns(200) {billing_start: str, billing_end: str, paid: bool} # OK\n\n@endgroup\n\n@group products.json\n@endpoint GET /products.json\n@desc Retrieve all Products.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page, locale: str(string) # Locale code of the translation}\n@returns(200) OK\n\n@endpoint POST /products.json\n@desc Create a new Product.\n@optional {locale: str(string) # Locale code of the translation, product: map{name!: str, description: str, page_title: str, meta_description: str, type: str, days_to_expire: int(int32), price!: num(float), weight: num(float), stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, back_in_stock_enabled: bool, cost_per_item: num, compare_at_price: num, minimum_quantity: num, maximum_quantity: num, sku: str, barcode: str, google_product_category_text: str, quotable: bool, featured: bool, shipping_required: bool, status: str, package_format: str, length: num(float), width: num(float), height: num(float), diameter: num(float), categories: [map{id: int(int32), name: str, parent_id: int(int32), permalink: str}], variants: [map{variant: map}]}}\n@returns(200) {product: map{id: int(int32), name: str, page_title: str, description: str, type: str, days_to_expire: int(int32), price: num(float), discount: num(float), weight: num(float), stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, back_in_stock_enabled: bool, cost_per_item: num, compare_at_price: num, sku: str, brand: str, barcode: str, google_product_category_text: str, quotable: bool, featured: bool, reviews_enabled: bool, status: str, created_at: str, updated_at: str, package_format: str, length: num(float), width: num(float), height: num(float), diameter: num(float), permalink: str, categories: [map], images: [map], variants: [map], digital_products: [map]}} # OK\n\n@endgroup\n\n@group products\n@endpoint GET /products/count.json\n@desc Count all Products.\n@returns(200) {count: int(int32)} # OK\n\n@endpoint GET /products/after/{id}.json\n@desc Retrieves Products after the given id.\n@required {id: int(int32) # Id of the Product}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/status/{status}.json\n@desc Retrieve Products filtered by status.\n@required {status: str(available/not-available/disabled) # Status of the Product used as filter}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) OK\n@errors {404: Status Invalid.}\n\n@endpoint GET /products/category/{category_id}.json\n@desc Retrieve Products filtered by category.\n@required {category_id: int(int32) # Category ID of the Product used as filter}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/status/{status}/count.json\n@desc Count Products filtered by status.\n@required {status: str(available/not-available/disabled) # Status of the Product used as filter}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Status Invalid.}\n\n@endpoint GET /products/category/{category_id}/count.json\n@desc Count Products filtered by category.\n@required {category_id: int(int32) # Category ID of the Product used as filter}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Category Not Found.}\n\n@endpoint GET /products/{id}/reviews.json\n@desc Retrieve all reviews for a specific Product.\n@required {id: int(int32) # Id of the Product}\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/reviews/{review_id}.json\n@desc Retrieve a single Product Review.\n@required {review_id: int}\n@returns(200) {review: map{id: int, status: str, rating: int, review: str, date: str, product_id: int, product_name: str, order_id: int, customer_email: str(email)}} # OK\n@errors {404: Review Not Found.}\n\n@endpoint GET /products/reviews.json\n@desc Retrieve all Product Reviews.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) OK\n\n@endpoint GET /products/{id}.json\n@desc Retrieve a single Product.\n@required {id: int(int32) # Id of the Product}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) {product: map{id: int(int32), name: str, page_title: str, description: str, type: str, days_to_expire: int(int32), price: num(float), discount: num(float), weight: num(float), stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, back_in_stock_enabled: bool, cost_per_item: num, compare_at_price: num, sku: str, brand: str, barcode: str, google_product_category_text: str, quotable: bool, featured: bool, reviews_enabled: bool, status: str, created_at: str, updated_at: str, package_format: str, length: num(float), width: num(float), height: num(float), diameter: num(float), permalink: str, categories: [map], images: [map], variants: [map], digital_products: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint PUT /products/{id}.json\n@desc Modify an existing Product.\n@required {id: int(int32) # Id of the Product}\n@optional {locale: str(string) # Locale code of the translation, product: map{name!: str, description: str, page_title: str, meta_description: str, type: str, days_to_expire: int(int32), price!: num(float), weight: num(float), stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, back_in_stock_enabled: bool, cost_per_item: num, compare_at_price: num, minimum_quantity: num, maximum_quantity: num, sku: str, barcode: str, google_product_category_text: str, quotable: bool, featured: bool, shipping_required: bool, status: str, package_format: str, length: num(float), width: num(float), height: num(float), diameter: num(float), permalink: str, categories: [map{id: int(int32), name: str, parent_id: int(int32), permalink: str}], variants: [map{id: int(int32), price: num(float), sku: str, barcode: str, stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, cost_per_item: num, compare_at_price: num, options: [map], image: map}]}}\n@returns(200) {product: map{id: int(int32), name: str, page_title: str, description: str, type: str, days_to_expire: int(int32), price: num(float), discount: num(float), weight: num(float), stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, back_in_stock_enabled: bool, cost_per_item: num, compare_at_price: num, sku: str, brand: str, barcode: str, google_product_category_text: str, quotable: bool, featured: bool, reviews_enabled: bool, status: str, created_at: str, updated_at: str, package_format: str, length: num(float), width: num(float), height: num(float), diameter: num(float), permalink: str, categories: [map], images: [map], variants: [map], digital_products: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint DELETE /products/{id}.json\n@desc Delete an existing Product.\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/search.json\n@desc Retrieve a Product List from a query.\n@required {query: str(string) # Text to query for the Product}\n@optional {locale: str(string) # Locale code of the translation, fields: str(string)(sku/barcode/brand/name/description/variants/option_name/custom_fields/custom_fields_selects) # Comma separated values of the fields to query for the Product, status: str(string)(available/not-available/disabled/featured) # Product Status to query for the Product, categories: str(string) # Comma separated values of the Category IDs to query for the Product}\n@returns(200) An array of products\n@errors {404: Invalid query.}\n\n@endpoint GET /products/{id}/options.json\n@desc Retrieve all Product Options.\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/options.json\n@desc Create a new Product Option.\n@required {id: int(int32) # Id of the Product}\n@optional {option: map{name: str, position: int(int32), option_type: str, addon_price: num(float)}}\n@returns(200) {option: map{id: int(int32), name: str, position: int(int32), option_type: str, addon_price: num(float)?, values: [map]}} # OK\n\n@endpoint GET /products/{id}/options/count.json\n@desc Count all Product Options.\n@required {id: int(int32) # Id of the Product}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/options/{option_id}.json\n@desc Retrieve a single Product Option.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option}\n@returns(200) {option: map{id: int(int32), name: str, position: int(int32), option_type: str, addon_price: num(float)?, values: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint PUT /products/{id}/options/{option_id}.json\n@desc Modify an existing Product Option.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option}\n@optional {option: map{name: str, position: int(int32), option_type: str, addon_price: num(float)}}\n@returns(200) {option: map{id: int(int32), name: str, position: int(int32), option_type: str, addon_price: num(float)?, values: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint DELETE /products/{id}/options/{option_id}.json\n@desc Delete a Product Option.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/options/{option_id}/values.json\n@desc Retrieve all Product Option Values.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # ID of the Product Option}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/options/{option_id}/values.json\n@desc Create a new Product Option Value.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option}\n@optional {value: map{name: str, position: int(int32), custom: str}}\n@returns(200) {value: map{id: int(int32), name: str, custom: str, position: int(int32), product_option: map{option: map{id: int(int32), name: str, position: int(int32), option_type: str, addon_price: num(float)?, values: [map]}}, variants: [map]}} # OK\n\n@endpoint GET /products/{id}/options/{option_id}/values/count.json\n@desc Count all Product Option Values.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # ID of the Product Option}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/options/{option_id}/values/{value_id}.json\n@desc Retrieve a single Product Option Value.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option, value_id: int(int32) # ID of the Product Option Value}\n@returns(200) {value: map{id: int(int32), name: str, custom: str, position: int(int32), product_option: map{option: map{id: int(int32), name: str, position: int(int32), option_type: str, addon_price: num(float)?, values: [map]}}, variants: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint PUT /products/{id}/options/{option_id}/values/{value_id}.json\n@desc Modify an existing Product Option Value.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option, value_id: int(int32) # Id of the Product Option Value}\n@optional {value: map{name: str, position: int(int32), custom: str}}\n@returns(200) {value: map{id: int(int32), name: str, custom: str, position: int(int32), product_option: map{option: map{id: int(int32), name: str, position: int(int32), option_type: str, addon_price: num(float)?, values: [map]}}, variants: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint DELETE /products/{id}/options/{option_id}/values/{value_id}.json\n@desc Delete a Product Option Value.\n@required {id: int(int32) # Id of the Product, option_id: int(int32) # Id of the Product Option, value_id: int(int32) # ID of the Product Option Value}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/variants/{variant_id}.json\n@desc Retrieve a single Product Variant.\n@required {id: int(int32) # Id of the Product, variant_id: int(int32) # Id of the Product Variant}\n@returns(200) {variant: map{id: int(int32), price: num(float), sku: str, barcode: str, stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, cost_per_item: num, compare_at_price: num, options: [map], image: map{id: int(int32), position: int(int32), url: str}}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint PUT /products/{id}/variants/{variant_id}.json\n@desc Modify an existing Product Variant.\n@required {id: int(int32) # Id of the Product, variant_id: int(int32) # Id of the Product Variant}\n@optional {variant: map{price: num(float), sku: str, barcode: str, stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, cost_per_item: num, compare_at_price: num, image_id: int(int32), options: [map{name: str, option_type: str, value: str, custom: str, product_option_position: int(int32), product_value_position: int(int32)}]}}\n@returns(200) {variant: map{id: int(int32), price: num(float), sku: str, barcode: str, stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, cost_per_item: num, compare_at_price: num, options: [map], image: map{id: int(int32), position: int(int32), url: str}}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/variants.json\n@desc Retrieve all Product Variants.\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/variants.json\n@desc Create a new Product Variant.\n@required {id: int(int32) # Id of the Product}\n@optional {variant: map{price: num(float), sku: str, barcode: str, stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, cost_per_item: num, compare_at_price: num, image_id: int(int32), options: [map{name: str, option_type: str, value: str, custom: str, product_option_position: int(int32), product_value_position: int(int32)}]}}\n@returns(200) {variant: map{id: int(int32), price: num(float), sku: str, barcode: str, stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, cost_per_item: num, compare_at_price: num, options: [map], image: map{id: int(int32), position: int(int32), url: str}}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/variants/count.json\n@desc Count all Product Variants.\n@required {id: int(int32) # Id of the Product}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/images.json\n@desc Retrieve all Product Images.\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/images.json\n@desc Create a new Product Image.\n@required {id: int(int32) # Id of the Product}\n@optional {image: map{url: str, position: int(int32)}}\n@returns(200) {image: map{id: int(int32), position: int(int32), url: str}} # OK\n\n@endpoint PUT /products/{product_id}/images/{image_id}.json\n@desc Update a Product Image position.\n@required {id: int(int32) # Id of the Product, image_id: int(int32) # Id of the Product Image, position: int(int32) # Desired position of the Product Image}\n@returns(200) {image: map{id: int(int32), position: int(int32), url: str}} # OK\n@errors {404: Product or Image Not Found.}\n\n@endpoint GET /products/{id}/images/count.json\n@desc Count all Product Images.\n@required {id: int(int32) # Id of the Product}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/images/{image_id}.json\n@desc Retrieve a single Product Image.\n@required {id: int(int32) # Id of the Product, image_id: int(int32) # Id of the Product Image}\n@returns(200) {image: map{id: int(int32), position: int(int32), url: str}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint DELETE /products/{id}/images/{image_id}.json\n@desc Delete a Product Image.\n@required {id: int(int32) # Id of the Product, image_id: int(int32) # Id of the Product Image}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/attachments.json\n@desc Retrieve all Product Attachments.\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/attachments.json\n@desc Create a new Product Attachment.\n@required {id: int(int32) # Id of the Product}\n@optional {attachment: map{filename: str, url: str}}\n@returns(200) {attachment: map{id: int(int32), url: str}} # OK\n\n@endpoint GET /products/{id}/attachments/count.json\n@desc Count all Product Attachments.\n@required {id: int(int32) # Id of the Product}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/attachments/{attachment_id}.json\n@desc Retrieve a single Product Attachment.\n@required {id: int(int32) # Id of the Product, attachment_id: int(int32) # Id of the Product Attachment}\n@returns(200) {attachment: map{id: int(int32), url: str}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint DELETE /products/{id}/attachments/{attachment_id}.json\n@desc Delete a Product Attachment.\n@required {id: int(int32) # Id of the Product, attachment_id: int(int32) # Id of the Product Attachment}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/digital_products.json\n@desc Retrieve all Product DigitalProducts.\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/digital_products.json\n@desc Create a new Product DigitalProduct.\n@required {id: int(int32) # Id of the Product}\n@optional {digital_product: map{filename: str, url: str, external: bool}}\n@returns(200) {digital_product: map{id: int(int32), url: str, expiration_seconds: int(int32), external: bool}} # OK\n\n@endpoint GET /products/{id}/digital_products/count.json\n@desc Count all Product DigitalProducts.\n@required {id: int(int32) # Id of the Product}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/digital_products/{digital_product_id}.json\n@desc Retrieve a single Product DigitalProduct.\n@required {id: int(int32) # Id of the Product, digital_product_id: int(int32) # Id of the Product DigitalProduct}\n@optional {external: str # true if searching for an external link}\n@returns(200) {digital_product: map{id: int(int32), url: str, expiration_seconds: int(int32), external: bool}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint DELETE /products/{id}/digital_products/{digital_product_id}.json\n@desc Delete a Product DigitalProduct.\n@required {id: int(int32) # Id of the Product, digital_product_id: int(int32) # Id of the Product DigitalProduct}\n@optional {external: bool=False # true if it's an external link. If not present or false, it's a file}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/fields.json\n@desc Retrieve all Product Custom Fields\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Product Not Found.}\n\n@endpoint POST /products/{id}/fields.json\n@desc Add an existing Custom Field to a Product.\n@required {id: int(int32) # Id of the Product}\n@optional {field: map{id: int(int32), value: str, variants: [int]}}\n@returns(200) {product: map{id: int(int32), name: str, page_title: str, description: str, type: str, days_to_expire: int(int32), price: num(float), discount: num(float), weight: num(float), stock: int(int32), stock_unlimited: bool, stock_threshold: int(int32), stock_notification: bool, back_in_stock_enabled: bool, cost_per_item: num, compare_at_price: num, sku: str, brand: str, barcode: str, google_product_category_text: str, quotable: bool, featured: bool, reviews_enabled: bool, status: str, created_at: str, updated_at: str, package_format: str, length: num(float), width: num(float), height: num(float), diameter: num(float), permalink: str, categories: [map], images: [map], variants: [map], digital_products: [map]}} # OK\n@errors {404: Product Not Found.}\n\n@endpoint GET /products/{id}/fields/count.json\n@desc Count all Product Custom Fields.\n@required {id: int(int32) # Id of the Product}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Product Not Found.}\n\n@endpoint PUT /products/{product_id}/fields/{field_id}.json\n@desc Update value of Product Custom Field\n@required {product_id: int(int32) # Id of the Product., field_id: int(int32) # Id of the Custom Field Value., field: map{value!: str}}\n@returns(200) {field: map{id: int(int32), custom_field_id: int(int32), type: str, label: str, value: str, value_id: str, variant_id: int(int32)}} # OK\n@errors {404: Product or Custom Field Value Not Found.}\n\n@endpoint DELETE /products/{product_id}/fields/{field_id}.json\n@desc Delete value of Product Custom Field\n@required {product_id: int(int32) # Id of the Product., field_id: int(int32) # Id of the Custom Field Value.}\n@returns(200) {message: str} # OK\n@errors {404: Product or Custom Field Value Not Found.}\n\n@endgroup\n\n@group categories.json\n@endpoint GET /categories.json\n@desc Retrieve all Categories.\n@returns(200) {category: map{id: int(int32), name: str, parent_id: int(int32), permalink: str}} # OK\n\n@endpoint POST /categories.json\n@desc Create a new Category.\n@optional {category: map{name: str, parent_id: int(int32)}}\n@returns(200) {category: map{id: int(int32), name: str, parent_id: int(int32), permalink: str}} # OK\n\n@endgroup\n\n@group categories\n@endpoint GET /categories/count.json\n@desc Count all Categories.\n@returns(200) {count: int(int32)} # OK\n\n@endpoint GET /categories/{id}.json\n@desc Retrieve a single Category.\n@required {id: int(int32) # Id of the Category}\n@returns(200) {category: map{id: int(int32), name: str, parent_id: int(int32), permalink: str}} # The selected Category.\n@errors {404: Category Not Found.}\n\n@endpoint PUT /categories/{id}.json\n@desc Modify an existing Category.\n@required {id: int(int32) # Id of the Category}\n@optional {category: map{name: str, parent_id: int(int32)}}\n@returns(200) {category: map{id: int(int32), name: str, parent_id: int(int32), permalink: str}} # OK\n@errors {404: Category Not Found.}\n\n@endpoint DELETE /categories/{id}.json\n@desc Delete an existing Category.\n@required {id: int(int32) # Id of the Category}\n@returns(200) OK\n@errors {404: Category Not Found.}\n\n@endgroup\n\n@group orders.json\n@endpoint GET /orders.json\n@desc Retrieve all Orders.\n@optional {locale: str(string) # Locale code of the translation, status_filters[]: str(string)(paid/created/pending_payment/canceled/abandoned) # Order Status to query for the Order, fulfillment_filters: str(string)(unfulfilled/fulfilled) # Comma separated values of the fulfillment filters to query for the Order, dateFilter: str(string)(today/yesterday/last30days/last7days/last90days/customDate) # Date to query for the Order., initialDate: str(string) # Starting date to query for the Order in the format YYYY-MM-DD. CustomDate and finalDate need to be used, finalDate: str(string) # Starting date to query for the Order in the format YYYY-MM-DD. CustomDate and initialDate need to be used, fields: str(string)(id/tax/...) # Comma separated values of the fields to query for the Order, limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Orders\n\n@endpoint POST /orders.json\n@desc Create a new Order.\n@optional {locale: str(string) # Locale code of the translation, order: map{status: str, shipping_method_id: int(int32), shipping_method_name: str, shipping_price: num(float), shipping_required: bool, allow_missing_products: bool, customer: map{id: int(int32), shipping_address: map, billing_address: map}, products: [map{id: int(int32), variant_id: int(int32), qty: int(int32), price: num(float), discount: num(float)}], billing_information: map{business_activity: str, company_name: str, taxpayer_type: str}}}\n@returns(200) {order: map{id: int(int32), source: map{created_from: str, created_from_app_code: str, source_name: str, medium: str, campaign: str, referral_url: str, referral_code: str, user_agent: str, first_page_visited: str, first_page_visited_at: str, referral_source: str}, created_at: str, completed_at: str, currency: str, subtotal: num(float), tax: num(float), shipping_tax: num(float), shipping: num(float), shipping_required: bool, total: num(float), discount: num(float), shipping_discount: num(float), gift_cards_discount: num(float), fulfillment_status: str, shipping_method_id: int(int32), shipping_service_id: int(int32), shipping_method_name: str, payment_method_name: str, payment_method_type: str, payment_information: str, payment_notification_id: str, additional_information: str, duplicate_url: str, recovery_url: str, review_url: str, checkout_url: str, coupons: str, promotions: [any], customer: map{id: int(int32), email: str, phone: str, phone_prefix: str, ip: str, fullname: str}, shipping_branch: map{id: int(int32), name: str}, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, latitude: num, longitude: num, municipality: str, neighbourhood: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, neighbourhood: str}, pickup_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, pickup_place_name: str}, products: [map], additional_fields: [map], shipping_taxes: [map], status: str, status_name: str, status_enum: str, tracking_url: str, tracking_company: str, tracking_number: str, shipping_option: str, same_day_delivery: bool, shipment_status: str, shipment_status_enum: str, recovered_from: int(int32), external_shipping_rate_id: str, external_shipping_rate_description: str, billing_information: map{business_activity: str, company_name: str, taxpayer_type: str}}} # OK\n\n@endgroup\n\n@group orders\n@endpoint GET /orders/count.json\n@desc Count all Orders.\n@returns(200) {count: int(int32)} # OK\n\n@endpoint GET /orders/status/{status}.json\n@desc Retrieve orders filtered by status.\n@required {status: str(abandoned/canceled/pending_payment/paid) # Status of the Order used as filter}\n@returns(200) OK\n@errors {404: Status Invalid.}\n\n@endpoint GET /orders/{id}.json\n@desc Retrieve a single Order.\n@required {id: int(int32) # Id of the Order}\n@returns(200) {order: map{id: int(int32), source: map{created_from: str, created_from_app_code: str, source_name: str, medium: str, campaign: str, referral_url: str, referral_code: str, user_agent: str, first_page_visited: str, first_page_visited_at: str, referral_source: str}, created_at: str, completed_at: str, currency: str, subtotal: num(float), tax: num(float), shipping_tax: num(float), shipping: num(float), shipping_required: bool, total: num(float), discount: num(float), shipping_discount: num(float), gift_cards_discount: num(float), fulfillment_status: str, shipping_method_id: int(int32), shipping_service_id: int(int32), shipping_method_name: str, payment_method_name: str, payment_method_type: str, payment_information: str, payment_notification_id: str, additional_information: str, duplicate_url: str, recovery_url: str, review_url: str, checkout_url: str, coupons: str, promotions: [any], customer: map{id: int(int32), email: str, phone: str, phone_prefix: str, ip: str, fullname: str}, shipping_branch: map{id: int(int32), name: str}, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, latitude: num, longitude: num, municipality: str, neighbourhood: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, neighbourhood: str}, pickup_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, pickup_place_name: str}, products: [map], additional_fields: [map], shipping_taxes: [map], status: str, status_name: str, status_enum: str, tracking_url: str, tracking_company: str, tracking_number: str, shipping_option: str, same_day_delivery: bool, shipment_status: str, shipment_status_enum: str, recovered_from: int(int32), external_shipping_rate_id: str, external_shipping_rate_description: str, billing_information: map{business_activity: str, company_name: str, taxpayer_type: str}}} # OK\n@errors {404: Order Not Found.}\n\n@endpoint PUT /orders/{id}.json\n@desc Modify an existing Order.\n@required {id: int(int32) # Id of the Order}\n@optional {order: map{status: str, shipment_status: str, tracking_number: str, tracking_company: str, tracking_url: str, additional_information: str, additional_fields: [map{label: str(string), value: str(string), id: int(int32), area: str(string)}]}}\n@returns(200) {order: map{id: int(int32), source: map{created_from: str, created_from_app_code: str, source_name: str, medium: str, campaign: str, referral_url: str, referral_code: str, user_agent: str, first_page_visited: str, first_page_visited_at: str, referral_source: str}, created_at: str, completed_at: str, currency: str, subtotal: num(float), tax: num(float), shipping_tax: num(float), shipping: num(float), shipping_required: bool, total: num(float), discount: num(float), shipping_discount: num(float), gift_cards_discount: num(float), fulfillment_status: str, shipping_method_id: int(int32), shipping_service_id: int(int32), shipping_method_name: str, payment_method_name: str, payment_method_type: str, payment_information: str, payment_notification_id: str, additional_information: str, duplicate_url: str, recovery_url: str, review_url: str, checkout_url: str, coupons: str, promotions: [any], customer: map{id: int(int32), email: str, phone: str, phone_prefix: str, ip: str, fullname: str}, shipping_branch: map{id: int(int32), name: str}, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, latitude: num, longitude: num, municipality: str, neighbourhood: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, neighbourhood: str}, pickup_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, pickup_place_name: str}, products: [map], additional_fields: [map], shipping_taxes: [map], status: str, status_name: str, status_enum: str, tracking_url: str, tracking_company: str, tracking_number: str, shipping_option: str, same_day_delivery: bool, shipment_status: str, shipment_status_enum: str, recovered_from: int(int32), external_shipping_rate_id: str, external_shipping_rate_description: str, billing_information: map{business_activity: str, company_name: str, taxpayer_type: str}}} # OK\n@errors {404: Order Not Found.}\n\n@endpoint GET /orders/search.json\n@desc Retrieve an Orders List from a query.\n@optional {locale: str(string) # Locale code of the translation, query: str(string) # Text to query for the Order, status_filters[]: str(string)(paid/created/pending_payment/canceled/abandoned) # Order Status to query for the Order, fulfillment_filters: str(string)(unfulfilled/fulfilled) # Comma separated values of the fulfillment filters to query for the Order, dateFilter: str(string)(today/yesterday/last30days/last7days/last90days/customDate) # Date to query for the Order., initialDate: str(string) # Starting date to query for the Order in the format YYYY-MM-DD. CustomDate and finalDate need to be used, finalDate: str(string) # Starting date to query for the Order in the format YYYY-MM-DD. CustomDate and initialDate need to be used, fields: str(string)(id/tax/...) # Comma separated values of the fields to query for the Order, limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) {orders: [map], count: int} # OK\n@errors {404: Invalid query.}\n\n@endpoint GET /orders/after/{id}.json\n@desc Retrieve orders filtered by Order Id.\n@required {id: int(int32) # Id of the Order}\n@returns(200) {order: map{id: int(int32), source: map{created_from: str, created_from_app_code: str, source_name: str, medium: str, campaign: str, referral_url: str, referral_code: str, user_agent: str, first_page_visited: str, first_page_visited_at: str, referral_source: str}, created_at: str, completed_at: str, currency: str, subtotal: num(float), tax: num(float), shipping_tax: num(float), shipping: num(float), shipping_required: bool, total: num(float), discount: num(float), shipping_discount: num(float), gift_cards_discount: num(float), fulfillment_status: str, shipping_method_id: int(int32), shipping_service_id: int(int32), shipping_method_name: str, payment_method_name: str, payment_method_type: str, payment_information: str, payment_notification_id: str, additional_information: str, duplicate_url: str, recovery_url: str, review_url: str, checkout_url: str, coupons: str, promotions: [any], customer: map{id: int(int32), email: str, phone: str, phone_prefix: str, ip: str, fullname: str}, shipping_branch: map{id: int(int32), name: str}, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, latitude: num, longitude: num, municipality: str, neighbourhood: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, neighbourhood: str}, pickup_address: map{name: str, surname: str, address: str, city: str, postal: str, region: str, country: str, country_code: str, region_code: str, street_number: num, complement: str, municipality: str, pickup_place_name: str}, products: [map], additional_fields: [map], shipping_taxes: [map], status: str, status_name: str, status_enum: str, tracking_url: str, tracking_company: str, tracking_number: str, shipping_option: str, same_day_delivery: bool, shipment_status: str, shipment_status_enum: str, recovered_from: int(int32), external_shipping_rate_id: str, external_shipping_rate_description: str, billing_information: map{business_activity: str, company_name: str, taxpayer_type: str}}} # OK\n@errors {404: Order Not Found.}\n\n@endpoint GET /orders/{id}/history.json\n@desc Retrieve all Order History.\n@required {id: int(int32) # Id of the Order}\n@returns(200) An array with Order History\n\n@endpoint POST /orders/{id}/history.json\n@desc Create a new Order History Entry.\n@required {id: int(int32) # Id of the OrderHistory}\n@optional {order_history: map{message: str, log: map}}\n@returns(200) {order_history: map{id: int(int32), message: str, created_at: str}} # OK\n\n@endpoint GET /orders/{id}/documents.json\n@desc Retrieve all Documents from an  Order.\n@required {id: int(int32) # Id of the Order}\n@returns(200) An array with Documents\n\n@endpoint POST /orders/{id}/documents.json\n@desc Create a new Order Document Entry.\n@required {id: int(int32) # Id of the Order}\n@optional {document: map{document_type: int, external_id: str, public_id: str, url: str, order_id: int, app_code: str}}\n@returns(200) {document: map{document_type: int, external_id: str, public_id: str, url: str, order_id: int, app_code: str}} # OK\n\n@endpoint PUT /orders/{id}/documents/{public_id}.json\n@desc Update a Document from an Order.\n@required {id: int(int32) # Id of the Order, public_id: int(int32) # Public Id of the Document}\n@optional {document_type: int(0 - credit note/1 - invoice) # Type of Document, external_id: str # Document ID on the external service, public_id: str # Human recognizable document ID, url: str # Document url}\n@returns(200) {document: map{document_type: int, external_id: str, public_id: str, url: str, order_id: int, app_code: str}} # OK\n@errors {404: Document Not Found.}\n\n@endpoint DELETE /orders/{id}/documents/{public_id}.json\n@desc Delete a Document from an Order.\n@required {id: int(int32) # Id of the Order, public_id: int(int32) # Public Id of the Document}\n@returns(200) OK\n@errors {404: Page Not Found.}\n\n@endgroup\n\n@group fulfillments\n@endpoint GET /fulfillments/count.json\n@desc Count all Fulfillments.\n@returns(200) {count: int(int32)} # OK\n\n@endpoint POST /fulfillments/rates.json\n@desc Rates for fulfillment.\n@optional {rates: map{order_id: str, location_id!: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, packages_dimensions: [map{length: num(float), width: num(float), height: num(float), weight: num(float)}]}}\n@returns(200) OK\n\n@endgroup\n\n@group fulfillments.json\n@endpoint GET /fulfillments.json\n@desc Retrieve all Fulfillments.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Fulfillments\n\n@endpoint POST /fulfillments.json\n@desc Create a new Fulfillment.\n@optional {fulfillment: map{order_id: str, type!: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, receiver_email: str, packages_dimensions: [map{length: num(float), width: num(float), height: num(float), weight: num(float)}], location_id!: str, phone: str, phone_prefix: str, tracking_number: str, tracking_company: str, tracking_url: str, external_id: str, service_type: str, message: str, observations: str, expected_arrival_from: str, expected_arrival_to: str, send_email: bool}}\n@returns(200) {fulfillment: map{id: int(int32), created_at: str, updated_at: str, tracking_number: str, tracking_company: str, type: str, shipment_status: str, label_url: str, expected_arrival_from: str, expected_arrival_to: str, fulfillment_address: map{address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}}, order_id: int(int32), order: map{order: map{order: map}}}} # OK\n\n@endgroup\n\n@group fulfillments\n@endpoint GET /fulfillments/{id}/label.json\n@desc Retrieve a presigned URL for the Fulfillment label\n@required {id: int(int32) # ID of the Fulfillment}\n@returns(200) {url: str, expires_at: str(date-time)} # Label URL retrieved successfully\n@errors {400: Invalid Label - The label could not be generated or found, 404: Fulfillment Not Found}\n\n@endpoint GET /fulfillments/{id}.json\n@desc Retrieve a single Fulfillment.\n@required {id: int(int32) # Id of the Fulfillment}\n@returns(200) {fulfillment: map{id: int(int32), created_at: str, updated_at: str, tracking_number: str, tracking_company: str, type: str, shipment_status: str, label_url: str, expected_arrival_from: str, expected_arrival_to: str, fulfillment_address: map{address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}}, order_id: int(int32), order: map{order: map{order: map}}}} # OK\n@errors {404: Fulfillment Not Found.}\n\n@endpoint PUT /fulfillments/{id}.json\n@desc Modify an existing Fulfillment.\n@required {id: int(int32) # Id of the Fulfillment}\n@optional {fulfillment: map{shipment_status: str, type: str, tracking_number: str, tracking_company: str, tracking_url: str, external_id: str, service_type: str, message: str, observations: str, expected_arrival_from: str, expected_arrival_to: str}}\n@returns(200) {fulfillment: map{id: int(int32), created_at: str, updated_at: str, tracking_number: str, tracking_company: str, type: str, shipment_status: str, label_url: str, expected_arrival_from: str, expected_arrival_to: str, fulfillment_address: map{address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}}, order_id: int(int32), order: map{order: map{order: map}}}} # OK\n@errors {404: Fulfillment Not Found.}\n\n@endgroup\n\n@group order\n@endpoint GET /order/{id}/fulfillments.json\n@desc Retrieve the Fulfillments associated with the Order.\n@required {id: int(int32) # Id of the Order}\n@returns(200) OK\n@errors {404: Fulfillment Not Found.}\n\n@endgroup\n\n@group pages.json\n@endpoint GET /pages.json\n@desc Retrieve all Pages.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Pages\n\n@endpoint POST /pages.json\n@desc Create a new Page.\n@optional {page: map{title: str, body: str, status: str, page_title: str, meta_description: str, categories: [int], template: str, permalink: str}}\n@returns(200) {page: map{id: int, title: str, body: str, status: str, legal: bool, page_title: str, meta_description: str, categories: [map], template: map{id: int, name: str}, permalink: str, image: map{id: int, url: str}}} # OK\n\n@endgroup\n\n@group pages\n@endpoint GET /pages/count.json\n@desc Count all Pages.\n@returns(200) {count: int(int32)} # Total number of pages\n\n@endpoint GET /pages/{id}.json\n@desc Retrieve a single Page by id.\n@required {id: int(int32) # Id of the Page}\n@returns(200) {page: map{id: int, title: str, body: str, status: str, legal: bool, page_title: str, meta_description: str, categories: [map], template: map{id: int, name: str}, permalink: str, image: map{id: int, url: str}}} # OK\n@errors {404: Page Not Found.}\n\n@endpoint PUT /pages/{id}.json\n@desc Update a Page.\n@required {id: int(int32) # Id of the Page}\n@optional {page: map{title: str, body: str, status: str, page_title: str, meta_description: str, categories: [int], template: str, permalink: str}}\n@returns(200) {page: map{id: int, title: str, body: str, status: str, legal: bool, page_title: str, meta_description: str, categories: [map], template: map{id: int, name: str}, permalink: str, image: map{id: int, url: str}}} # OK\n@errors {404: Page Not Found.}\n\n@endpoint DELETE /pages/{id}.json\n@desc Delete an existing Page.\n@required {id: int(int32) # Id of the Page}\n@returns(200) OK\n@errors {404: Page Not Found.}\n\n@endpoint GET /pages/{id}/images.json\n@desc Retrieve all Page Images.\n@required {id: int(int32) # Id of the Page}\n@returns(200) OK\n@errors {404: Page Not Found.}\n\n@endpoint POST /pages/{id}/images.json\n@desc Create a new Page Image.\n@required {id: int(int32) # Id of the Page}\n@optional {image: map{url: str}}\n@returns(200) {image: map{id: int(int32), url: str}} # OK\n\n@endpoint GET /pages/{id}/images/count.json\n@desc Count all Page Images.\n@required {id: int(int32) # Id of the Page}\n@returns(200) {count: int(int32)} # OK\n@errors {404: Page Not Found.}\n\n@endpoint GET /pages/{id}/images/{image_id}.json\n@desc Retrieve a single Page Image.\n@required {id: int(int32) # Id of the Page, image_id: int(int32) # Id of the Page Image}\n@returns(200) {image: map{id: int(int32), url: str}} # OK\n@errors {404: Page Not Found.}\n\n@endpoint PUT /pages/{id}/images/{image_id}.json\n@desc Update a Page Image url.\n@required {id: int(int32) # Id of the Page, image_id: int(int32) # Id of the Page Image}\n@optional {image: map{url: str}}\n@returns(200) {image: map{id: int(int32), url: str}} # OK\n@errors {404: Page or Image Not Found.}\n\n@endpoint DELETE /pages/{id}/images/{image_id}.json\n@desc Delete a Page Image.\n@required {id: int(int32) # Id of the Page, image_id: int(int32) # Id of the Page Image}\n@returns(200) OK\n@errors {404: Page Not Found.}\n\n@endgroup\n\n@group customers.json\n@endpoint GET /customers.json\n@desc Retrieve all Customers.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Orders\n\n@endpoint POST /customers.json\n@desc Create a new Customer.\n@optional {customer: map{email: str, phone: str, password: str, status: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, customer_category: [int]}}\n@returns(200) {customer: map{id: int(int32), email: str, phone: str, fullname: str, status: str, accepts_marketing: bool, accepted_marketing_at: str, cancelled_marketing_at: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, customer_categories: [map], customer_additional_fields: [map]}} # OK\n@errors {404: Customer Not Found.}\n\n@endgroup\n\n@group customers\n@endpoint GET /customers/count.json\n@desc Count all Customers.\n@returns(200) {count: int(int32)} # OK\n\n@endpoint GET /customers/email/{email}.json\n@desc Retrieve a single Customer by email.\n@required {email: str # Email of the Customer}\n@returns(200) {customer: map{id: int(int32), email: str, phone: str, fullname: str, status: str, accepts_marketing: bool, accepted_marketing_at: str, cancelled_marketing_at: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, customer_categories: [map], customer_additional_fields: [map]}} # OK\n@errors {404: Customer Not Found.}\n\n@endpoint GET /customers/{id}/orders.json\n@desc Retrieve all orders of single Customer\n@required {id: int # ID of the Customer}\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Orders\n@errors {404: Customer Not Found.}\n\n@endpoint GET /customers/{id}/orders/status/{status}.json\n@desc Retrieve all orders of single Customer\n@required {id: int # ID of the Customer, status: str(Abandoned/Canceled/Pending Payment/Paid) # Status of the Order used as filter}\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Orders\n@errors {404: Customer Not Found.}\n\n@endpoint GET /customers/{id}.json\n@desc Retrieve a single Customer by id.\n@required {id: int(int32) # Id of the Customer}\n@returns(200) {customer: map{id: int(int32), email: str, phone: str, fullname: str, status: str, accepts_marketing: bool, accepted_marketing_at: str, cancelled_marketing_at: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, customer_categories: [map], customer_additional_fields: [map]}} # OK\n@errors {404: Customer Not Found.}\n\n@endpoint PUT /customers/{id}.json\n@desc Update a new Customer.\n@required {id: int(int32) # Id of the Customer}\n@optional {customer: map{email: str, phone: str, password: str, status: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, customer_category: [int]}}\n@returns(200) {customer: map{id: int(int32), email: str, phone: str, fullname: str, status: str, accepts_marketing: bool, accepted_marketing_at: str, cancelled_marketing_at: str, shipping_address: map{name: str, surname: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, billing_address: map{name: str, surname: str, taxid: str, address: str, city: str, postal: str, municipality: str, region: str, country: str}, customer_categories: [map], customer_additional_fields: [map]}} # OK\n@errors {404: Customer Not Found.}\n\n@endpoint DELETE /customers/{id}.json\n@desc Delete an existing Customer.\n@required {id: int(int32) # Id of the Customer}\n@returns(200) OK\n@errors {404: Customer Not Found.}\n\n@endpoint GET /customers/search.json\n@desc Retrieve a Customer List from a query.\n@required {query: str(string) # Text to query for the Customer. If empty return all customers.}\n@optional {order: str(string)=asc # Sort Customers by creation date, 'asc' for ascending order or 'desc' for descending order., limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Customers\n\n@endgroup\n\n@group customer_categories.json\n@endpoint GET /customer_categories.json\n@desc Retrieve all Customer Categories.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Customer Categories\n\n@endpoint POST /customer_categories.json\n@desc Create a new CustomerCategory.\n@optional {customer_category: map{name: str}}\n@returns(200) {customer_category: map{id: int(int32), name: str, code: str}} # OK\n@errors {404: CustomerCategory Not Found.}\n\n@endgroup\n\n@group customer_categories\n@endpoint GET /customer_categories/{id}.json\n@desc Retrieve a single CustomerCategory.\n@required {id: int(int32) # Id of the CustomerCategory}\n@returns(200) {customer_category: map{id: int(int32), name: str, code: str}} # OK\n@errors {404: CustomerCategory Not Found.}\n\n@endpoint PUT /customer_categories/{id}.json\n@desc Update a CustomerCategory.\n@required {id: int(int32) # Id of the CustomerCategory}\n@optional {customer_category: map{name: str}}\n@returns(200) {customer_category: map{id: int(int32), name: str, code: str}} # OK\n@errors {404: CustomerCategory Not Found.}\n\n@endpoint DELETE /customer_categories/{id}.json\n@desc Delete an existing CustomerCategory.\n@required {id: int(int32) # Id of the CustomerCategory}\n@returns(200) OK\n@errors {404: CustomerCategory Not Found.}\n\n@endpoint GET /customer_categories/{id}/customers.json\n@desc Retrieves the customers in a CustomerCategory.\n@required {id: int(int32) # Id of the CustomerCategory}\n@returns(200) OK\n@errors {404: CustomerCategory Not Found.}\n\n@endpoint POST /customer_categories/{id}/customers.json\n@desc Adds Customers to a CustomerCategory.\n@required {id: int(int32) # Id of the CustomerCategory}\n@optional {customers: [map{id: int(int32), email: str}]}\n@returns(200) Array of Customers in the Customer Category\n@errors {404: CustomerCategory Not Found.}\n\n@endpoint DELETE /customer_categories/{id}/customers/{customer_id}.json\n@desc Delete Customer from an existing CustomerCategory.\n@required {id: int(int32) # Id of the CustomerCategory, customer_id: int(int32) # Id of the Customer}\n@returns(200) OK\n@errors {404: CustomerCategory or Customer Not Found.}\n\n@endgroup\n\n@group customers\n@endpoint GET /customers/{id}/fields\n@desc Retrieves the Customer Additional Field of a Customer.\n@required {id: int(int32) # Id of the Customer}\n@returns(200) OK\n@errors {404: Customer Not Found.}\n\n@endpoint POST /customers/{id}/fields\n@desc Adds Customer Additional Fields to a Customer.\n@required {id: int(int32) # Id of the Customer}\n@optional {customer_additional_field: map{value: str, checkout_custom_field_id: int(int32)}}\n@returns(200) {customer_additional_field: map{id: int(int32), label: str, value: str, area: str, customer_id: int(int32), checkout_custom_field_id: int(int32)}} # OK\n@errors {404: Customer Additional Field Not Found.}\n\n@endpoint GET /customers/{id}/fields/{field_id}\n@desc Retrieve a single Customer Additional Field.\n@required {id: int(int32) # Id of the Customer, field_id: int(int32) # Id of the Customer Additional Field}\n@returns(200) {customer_additional_field: map{id: int(int32), label: str, value: str, area: str, customer_id: int(int32), checkout_custom_field_id: int(int32)}} # OK\n@errors {404: Customer Not Found.}\n\n@endpoint PUT /customers/{id}/fields/{field_id}\n@desc Update a Customer Additional Field.\n@required {id: int(int32) # Id of the Customer, field_id: int(int32) # Id of the Customer Additional Field}\n@optional {customer_additional_field: map{value: str, checkout_custom_field_id: int(int32)}}\n@returns(200) {customer_additional_field: map{id: int(int32), label: str, value: str, area: str, customer_id: int(int32), checkout_custom_field_id: int(int32)}} # OK\n@errors {400: Customer Additional Field Bad Parameters., 404: Customer Additional Field Not Found.}\n\n@endpoint DELETE /customers/{id}/fields/{field_id}\n@desc Delete a Customer Additional Field.\n@required {id: int(int32) # Id of the Customer, field_id: int(int32) # Id of the Customer Additional Field}\n@returns(200) OK\n@errors {404: Customer Not Found.}\n\n@endgroup\n\n@group promotions.json\n@endpoint GET /promotions.json\n@desc Retrieve all Promotions.\n@optional {limit: int(integer) # Promotions' list restriction (default: 50 | max: 200)., page: int(integer) # Promotions' list page (default: 1).}\n@returns(200) An array of Promotions\n\n@endpoint POST /promotions.json\n@desc Create a new Promotion.\n@optional {promotion: map{name: str, enabled: bool, discount_target: str, buys_at_least: str, condition_price: num(float), condition_qty: int(int32), quantity_x: int(int32), type: str, discount_amount_fix: num(float), discount_amount_percent: num(float), lasts: str, begins_at: str, expires_at: str, max_times_used: int(int32), cumulative: bool, customers: str, categories: [map{id: int(int32)}], categories_x: [map{id: int(int32)}], customer_categories: [map{id: int(int32)}], products: [map{id: int(int32)}], products_x: [map{id: int(int32)}], coupons: [map{code: str, usage_limit: int(int32)}], countries: [str], regions: [str], municipalities: [str]}}\n@returns(200) {promotion: map{id: int(int32), name: str, status: str, enabled: bool, discount_target: str, condition_price: num(float), condition_qty: int(int32), quantity_x: int(int32), discount_amount_fix: num(float), discount_amount_percent: num(float), lasts: str, begins_at: str, expires_at: str, times_used: int(int32), max_times_used: int(int32), cumulative: bool, categories: [map], customer_categories: [map], products: [map], products_x: [map], coupons: [map], countries: [str], regions: [str], municipalities: [str]}} # OK\n@errors {404: Promotion Not Found.}\n\n@endgroup\n\n@group promotions\n@endpoint GET /promotions/{id}.json\n@desc Retrieve a single Promotion.\n@required {id: int(int32) # Id of the Promotion}\n@returns(200) {promotion: map{id: int(int32), name: str, status: str, enabled: bool, discount_target: str, condition_price: num(float), condition_qty: int(int32), quantity_x: int(int32), discount_amount_fix: num(float), discount_amount_percent: num(float), lasts: str, begins_at: str, expires_at: str, times_used: int(int32), max_times_used: int(int32), cumulative: bool, categories: [map], customer_categories: [map], products: [map], products_x: [map], coupons: [map], countries: [str], regions: [str], municipalities: [str]}} # OK\n@errors {404: Promotion Not Found.}\n\n@endpoint PUT /promotions/{id}.json\n@desc Update a Promotion.\n@required {id: int(int32) # Id of the Promotion}\n@optional {promotion: map{name: str, enabled: bool, discount_target: str, buys_at_least: str, condition_price: num(float), condition_qty: int(int32), quantity_x: int(int32), type: str, discount_amount_fix: num(float), discount_amount_percent: num(float), lasts: str, begins_at: str, expires_at: str, max_times_used: int(int32), cumulative: bool, customers: str, categories: [map{id: int(int32)}], categories_x: [map{id: int(int32)}], customer_categories: [map{id: int(int32)}], products: [map{id: int(int32)}], products_x: [map{id: int(int32)}], coupons: [map{code: str, usage_limit: int(int32)}], countries: [str], regions: [str], municipalities: [str]}}\n@returns(200) {promotion: map{id: int(int32), name: str, status: str, enabled: bool, discount_target: str, condition_price: num(float), condition_qty: int(int32), quantity_x: int(int32), discount_amount_fix: num(float), discount_amount_percent: num(float), lasts: str, begins_at: str, expires_at: str, times_used: int(int32), max_times_used: int(int32), cumulative: bool, categories: [map], customer_categories: [map], products: [map], products_x: [map], coupons: [map], countries: [str], regions: [str], municipalities: [str]}} # OK\n@errors {404: Promotion Not Found.}\n\n@endpoint DELETE /promotions/{id}.json\n@desc Delete an existing Promotion.\n@required {id: int(int32) # Id of the Promotion}\n@returns(200) OK\n@errors {404: Promotion Not Found.}\n\n@endgroup\n\n@group payment_methods.json\n@endpoint GET /payment_methods.json\n@desc Retrieve all Store's Payment Methods.\n@returns(200) An array of Payment Methods\n\n@endpoint POST /payment_methods.json\n@desc Creates an External Payment Method.\n@optional {payment_method: map{name: str, description: str, payment_method_url: str, key: str, secret: str, show_review: bool, use_new_version: bool}}\n@returns(200) {payment_method: map{id: int(int32), type: str, name: str}} # OK\n@errors {404: PaymentMethod Not Found.}\n\n@endgroup\n\n@group payment_methods\n@endpoint GET /payment_methods/{id}.json\n@desc Retrieve a single Payment Method.\n@required {id: int(int32) # Id of the Payment Method}\n@returns(200) {payment_method: map{id: int(int32), type: str, name: str}} # OK\n@errors {404: PaymentMethod Not Found.}\n\n@endgroup\n\n@group shipping_methods.json\n@endpoint GET /shipping_methods.json\n@desc Retrieve all Store's Shipping Methods.\n@optional {enabled: bool # If shipping method is enabled}\n@returns(200) An array of Shipping Methods\n\n@endpoint POST /shipping_methods.json\n@desc Creates a Shipping Method.\n@optional {shipping_method: map{type: str, name: str}}\n@returns(200) {shipping_method: map{id: int(int32), type: str, name: str, enabled: bool, free_shipping: bool, free_shipping_minimum_purchase: bool, fee: [map], callback_url: str, fetch_services_url: str, state: str, city: str, postal: str, services: [map], tables: [map]}} # OK\n@errors {404: ShippingMethod Not Found.}\n\n@endgroup\n\n@group shipping_methods\n@endpoint GET /shipping_methods/{id}.json\n@desc Retrieve a single Shipping Method.\n@required {id: int(int32) # Id of the Shipping Method}\n@returns(200) {shipping_method: map{id: int(int32), type: str, name: str, enabled: bool, free_shipping: bool, free_shipping_minimum_purchase: bool, fee: [map], callback_url: str, fetch_services_url: str, state: str, city: str, postal: str, services: [map], tables: [map]}} # OK\n@errors {404: ShippingMethod Not Found.}\n\n@endpoint PUT /shipping_methods/{id}.json\n@desc Update a Shipping Method.\n@required {id: int(int32) # Id of the Shipping Method}\n@optional {shipping_method: map{type: str, name: str}}\n@returns(200) {shipping_method: map{id: int(int32), type: str, name: str, enabled: bool, free_shipping: bool, free_shipping_minimum_purchase: bool, fee: [map], callback_url: str, fetch_services_url: str, state: str, city: str, postal: str, services: [map], tables: [map]}} # OK\n@errors {404: Shipping Method Not Found.}\n\n@endpoint DELETE /shipping_methods/{id}.json\n@desc Delete an existing Shipping Method.\n@required {id: int(int32) # Id of the Shipping Method}\n@returns(200) OK\n@errors {404: Shipping Method Not Found.}\n\n@endgroup\n\n@group locations.json\n@endpoint GET /locations.json\n@desc Retrieve all Store's Locations\n@returns(200) An array of Pickup Locations\n\n@endpoint POST /locations.json\n@desc Create a Pickup Location\n@required {name: str # Name of the location, email: str # Email for the location, address: str # Address of the location, city: str # City of the location, country: str # Country of the location}\n@optional {main: bool # Is the main location, pickup_point: bool # Is a pickup_point, postal: str # Postal code of the location, Region: str # Region of the location}\n@returns(200) {location: map{id: int(int32), name: str, email: str, active: bool, main: bool, pickup_point: bool, is_stock_origin: bool, location_address: map{id: int(int32), name: str, surname: str, address: str, street_number: str, complement: str, city: str, postal: str, country: str, region: str, type: str, taxid: str, taxid_type: str, default: bool, region_format: str, municipality: str, latitude: num(float), longitude: num(float)}}} # An array of Pickup Locations\n\n@endgroup\n\n@group locations\n@endpoint GET /locations/{id}.json\n@desc Retrieve a Store's Locations by ID\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Location not found.}\n\n@endpoint PUT /locations/{id}.json\n@desc Update a Pickup Location\n@required {id: int(int32) # Id of the Product, name: str # Name of the location, email: str # Email for the location, address: str # Address of the location, city: str # City of the location, country: str # Country of the location}\n@optional {main: bool # Is the main location, pickup_point: bool # Is a pickup_point, postal: str # Postal code of the location, Region: str # Region of the location}\n@returns(200) {location: map{id: int(int32), name: str, email: str, active: bool, main: bool, pickup_point: bool, is_stock_origin: bool, location_address: map{id: int(int32), name: str, surname: str, address: str, street_number: str, complement: str, city: str, postal: str, country: str, region: str, type: str, taxid: str, taxid_type: str, default: bool, region_format: str, municipality: str, latitude: num(float), longitude: num(float)}}} # An array of Pickup Locations\n\n@endpoint DELETE /locations/{id}.json\n@desc Delete a Store's Locations by ID\n@required {id: int(int32) # Id of the Product}\n@returns(200) OK\n@errors {404: Location Not Found.}\n\n@endgroup\n\n@group custom_fields.json\n@endpoint GET /custom_fields.json\n@desc Retrieve all Store's Custom Fields.\n@returns(200) An array of Custom Fields\n\n@endpoint POST /custom_fields.json\n@desc Create a new Custom Field.\n@optional {custom_field: map{label: str, type: str, values: [str], product_visibility: bool}}\n@returns(200) {custom_field: map{id: int(int32), label: str, type: str, values: [str], product_visibility: bool}} # OK\n\n@endgroup\n\n@group custom_fields\n@endpoint GET /custom_fields/{id}.json\n@desc Retrieve a single CustomField.\n@required {id: int(int32) # Id of the CustomField}\n@returns(200) {custom_field: map{id: int(int32), label: str, type: str, values: [str], product_visibility: bool}} # OK\n@errors {404: CustomField Not Found.}\n\n@endpoint PUT /custom_fields/{id}.json\n@desc Update a CustomField.\n@required {id: int(int32) # Id of the CustomField}\n@optional {custom_field: map{label: str, type: str, values: [str], product_visibility: bool}}\n@returns(200) {custom_field: map{id: int(int32), label: str, type: str, values: [str], product_visibility: bool}} # OK\n@errors {404: CustomField Not Found.}\n\n@endpoint DELETE /custom_fields/{id}.json\n@desc Delete an existing CustomField.\n@required {id: int(int32) # Id of the CustomField}\n@returns(200) OK\n@errors {404: CustomField Not Found.}\n\n@endpoint GET /custom_fields/{id}/select_options.json\n@desc Retrieve all Store's Custom Fields.\n@required {id: int(int32) # Id of the CustomField}\n@returns(200) An array of Custom Fields Select Options\n\n@endpoint POST /custom_fields/{id}/select_options.json\n@desc Create a new Custom Field Select Option.\n@required {id: int(int32) # Id of the CustomField}\n@optional {custom_field_select_option: map{value: str}}\n@returns(200) {custom_field_select_option: map{id: int(int32), value: str}} # OK\n\n@endpoint GET /custom_fields/{id}/select_options/{custom_field_select_option_id}.json\n@desc Retrieve a single SelectOption from a CustomField.\n@required {id: int(int32) # Id of the CustomField, custom_field_select_option_id: int(int32) # Id of the CustomFieldSelectOption}\n@returns(200) {custom_field_select_option: map{id: int(int32), value: str}} # OK\n@errors {404: CustomFieldSelectOption Not Found.}\n\n@endpoint PUT /custom_fields/{id}/select_options/{custom_field_select_option_id}.json\n@desc Update a SelectOption from a CustomField.\n@required {id: int(int32) # Id of the CustomField, custom_field_select_option_id: int(int32) # Id of the CustomFieldSelectOption}\n@optional {custom_field_select_option: map{value: str}}\n@returns(200) {custom_field_select_option: map{id: int(int32), value: str}} # OK\n@errors {404: CustomFieldSelectOption Not Found.}\n\n@endpoint DELETE /custom_fields/{id}/select_options/{custom_field_select_option_id}.json\n@desc Delete an existing CustomFieldSelectOption.\n@required {id: int(int32) # Id of the CustomField, custom_field_select_option_id: int(int32) # Id of the CustomFieldSelectOption}\n@returns(200) OK\n@errors {404: CustomFieldSelectOption Not Found.}\n\n@endgroup\n\n@group checkout_custom_fields.json\n@endpoint GET /checkout_custom_fields.json\n@desc Retrieve all Checkout Custom Fields.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of Checkout Custom Fields\n\n@endpoint POST /checkout_custom_fields.json\n@desc Create a new CheckoutCustomField.\n@optional {checkout_custom_field: map{label: str, type: str, area: str, required: bool, position: int(int32), deletable: bool, custom_field_select_options: [str]}}\n@returns(200) {checkout_custom_field: map{id: int(int32), label: str, type: str, area: str, required: bool, position: int(int32), deletable: bool, custom_field_select_options: [str]}} # OK\n@errors {404: CheckoutCustomField Not Found.}\n\n@endgroup\n\n@group checkout_custom_fields\n@endpoint GET /checkout_custom_fields/{id}.json\n@desc Retrieve a single CheckoutCustomField.\n@required {id: int(int32) # Id of the CheckoutCustomField}\n@returns(200) {checkout_custom_field: map{id: int(int32), label: str, type: str, area: str, required: bool, position: int(int32), deletable: bool, custom_field_select_options: [str]}} # OK\n@errors {404: CheckoutCustomField Not Found.}\n\n@endpoint PUT /checkout_custom_fields/{id}.json\n@desc Update a CheckoutCustomField.\n@required {id: int(int32) # Id of the CheckoutCustomField}\n@optional {checkout_custom_field: map{label: str, type: str, area: str, required: bool, position: int(int32), deletable: bool, custom_field_select_options: [str]}}\n@returns(200) {checkout_custom_field: map{id: int(int32), label: str, type: str, area: str, required: bool, position: int(int32), deletable: bool, custom_field_select_options: [str]}} # OK\n@errors {404: CheckoutCustomField Not Found.}\n\n@endpoint DELETE /checkout_custom_fields/{id}.json\n@desc Delete an existing CheckoutCustomField.\n@required {id: int(int32) # Id of the CheckoutCustomField}\n@returns(200) OK\n@errors {404: CheckoutCustomField Not Found.}\n\n@endgroup\n\n@group countries.json\n@endpoint GET /countries.json\n@desc Retrieve all Countries.\n@returns(200) An array of Countries\n\n@endgroup\n\n@group countries\n@endpoint GET /countries/{country_code}.json\n@desc Retrieve a single Country information.\n@required {country_code: str(string) # ISO3166 Country Code}\n@returns(200) {code: str, name: str} # A Country information object\n@errors {404: Country Not Found.}\n\n@endpoint GET /countries/{country_code}/regions.json\n@desc Retrieve all Regions from a single Country.\n@required {country_code: str(string) # ISO3166 Country Code}\n@returns(200) An array of Regions from a single Country\n@errors {404: Country Not Found.}\n\n@endpoint GET /countries/{country_code}/regions/{region_code}/municipalities.json\n@desc Retrieve all Municipalities from a single Region.\n@required {country_code: str(string) # ISO3166 Country Code, region_code: str(string) # Region Code}\n@returns(200) An array of Municipalities from a single Region\n@errors {404: Country or Region Not Found.}\n\n@endpoint GET /countries/{country_code}/regions/{region_code}.json\n@desc Retrieve a single Region information object.\n@required {country_code: str(string) # ISO3166 Country Code, region_code: str(string) # Region Code}\n@returns(200) {code: str, name: str, iso: str} # A Region information object\n@errors {404: Country or Region not found.}\n\n@endgroup\n\n@group taxes.json\n@endpoint GET /taxes.json\n@desc Retrieve all Taxes.\n@returns(200) An array of Taxes\n\n@endpoint POST /taxes.json\n@desc Create a new Tax.\n@optional {tax: map{country: str, name: str, region: str, category_id: int(int32), tax: num(float), fixed: bool, shipping: bool}}\n@returns(200) {tax: map{id: int(int32), name: str, country: str, region: str, category_id: int(int32), tax_amount: num(float), fixed: bool, shipping: bool}} # OK\n@errors {404: Tax Not Found.}\n\n@endgroup\n\n@group taxes\n@endpoint GET /taxes/{id}.json\n@desc Retrieve a single Tax information.\n@required {id: int(int32) # Id of the Tax}\n@returns(200) {tax: map{id: int(int32), name: str, country: str, region: str, category_id: int(int32), tax_amount: num(float), fixed: bool, shipping: bool}} # A Tax information object\n@errors {404: Tax Not Found.}\n\n@endgroup\n\n@group store\n@endpoint POST /store/setup.json\n@desc Create a new store.\n@required {store: map{name!: str, country: str, theme: str}}\n@returns(201) {store: map{code: str, name: str, url: str, admin_url: str}, credentials: map{login: str, authtoken: str}} # Store created successfully.\n@errors {400: Bad Request - invalid name or JSON body., 402: Payment Required - a paying subscription is required., 429: Too Many Requests - store creation limit exceeded (5 per day)., 403: Forbidden - store creation is available 24 hours after first payment.}\n\n@endgroup\n\n@group carts\n@endpoint GET /carts/{id}.json\n@desc Obtain information for a cart.\n@required {id: int(int32) # Id of the cart}\n@optional {locale: str(string) # Locale code of the translation}\n@returns(200) An array of Orders\n@errors {404: Cart Not Found.}\n\n@endgroup\n\n@group documents.json\n@endpoint GET /documents.json\n@desc Retrieve all Documents from a Store.\n@optional {limit: int(integer)=50 # List restriction, page: int(integer)=1 # List page}\n@returns(200) An array of documents\n\n@endgroup\n\n@group transaction_ledger\n@endpoint GET /transaction_ledger/balance.json\n@desc Retrieve Store Balance.\n@returns(200) Store Balance Information\n\n@endgroup\n\n@group products_locations\n@endpoint GET /products_locations\n@desc Stock by Product and Location\n@required {location_ids: [int] # List of location IDs (comma separated), product_ids: [int] # List of product IDs (comma separated)}\n@optional {variant_ids: [int] # List of variant IDs (comma separated)}\n@returns(200) Array of products locations\n@errors {404: Not found}\n\n@endpoint PUT /products_locations\n@desc Update Stock by Product and Location\n@required {location_id: int, product_id: int, stock_unlimited: bool, stock: int}\n@optional {variant_id: int}\n@returns(200) Products locations updated successfully\n@errors {400: Bad request, check your parameters, 500: Error while updating stock error}\n\n@endgroup\n\n@end\n"}}