{"note":"OpenAPI conversion -- returning structured metadata","name":"jumpseller-com","description":"Jumpseller API","version":"1.0.0","base_url":"https://api.jumpseller.com/v1","endpoints":179,"raw":"@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 Bearer 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 {403: Not authorized to access JsApps for this app., 404: App not found or no 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], variants: [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], variants: [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]}}\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]}}\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@optional {fields: str(string) # Comma separated values of the fields to query for the Category. Allowed values: id, name, description, parent_id, permalink, images, products.}\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@optional {fields: str(string) # Comma separated values of the fields to query for the Category. Allowed values: id, name, description, parent_id, permalink, images, products.}\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, products: [map], billing_information: map}}\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]}}\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, packages_dimensions: [map]}}\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, receiver_email: str, packages_dimensions: [map], 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, billing_address: map, 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, billing_address: map, 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], categories_x: [map], customer_categories: [map], products: [map], products_x: [map], coupons: [map], 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], categories_x: [map], customer_categories: [map], products: [map], products_x: [map], coupons: [map], 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., 403: Forbidden - store creation is available 24 hours after first payment., 429: Too Many Requests - store creation limit exceeded (5 per day).}\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"}