# REST API

> Every call an app can make with its token, and the permissions each needs.

Source: https://storeware.ai/docs/api-reference/rest

Every call takes your app’s access token as `Authorization: Bearer` and answers JSON with the result under `data`, as [the API reference](https://storeware.ai/docs/api-reference) describes. Each one below names the permissions it needs; your app holds the ones a merchant granted it, from those its manifest asks for.

## The OpenAPI document

The same calls as OpenAPI 3.1, for a code generator or an API client: [`https://api.storeware.ai/api/v1/openapi.json`](https://api.storeware.ai/api/v1/openapi.json). The permissions a call needs are under `x-storeware-scopes`.

```bash
curl -s https://api.storeware.ai/api/v1/openapi.json -o storeware-openapi.json
```

More of the API is described here with each release.

## Products

The catalogue: products, their media and their fields.

- [List products](https://storeware.ai/docs/api-reference/rest/products#list-products): `GET /api/v1/stores/{storeId}/products`
- [Create a product](https://storeware.ai/docs/api-reference/rest/products#create-product): `POST /api/v1/stores/{storeId}/products`
- [Count the catalogue](https://storeware.ai/docs/api-reference/rest/products#get-product-figures): `GET /api/v1/stores/{storeId}/products/figures`
- [Get a product](https://storeware.ai/docs/api-reference/rest/products#get-product): `GET /api/v1/stores/{storeId}/products/{productId}`
- [Update a product](https://storeware.ai/docs/api-reference/rest/products#update-product): `PATCH /api/v1/stores/{storeId}/products/{productId}`
- [Archive a product](https://storeware.ai/docs/api-reference/rest/products#archive-product): `DELETE /api/v1/stores/{storeId}/products/{productId}`
- [Get a product’s sales by day](https://storeware.ai/docs/api-reference/rest/products#get-product-sales): `GET /api/v1/stores/{storeId}/products/{productId}/sales`
- [Copy a product](https://storeware.ai/docs/api-reference/rest/products#duplicate-product): `POST /api/v1/stores/{storeId}/products/{productId}/duplicate`
- [List a product’s images](https://storeware.ai/docs/api-reference/rest/products#list-product-media): `GET /api/v1/stores/{storeId}/products/{productId}/media`
- [Add an image to a product](https://storeware.ai/docs/api-reference/rest/products#add-product-media): `POST /api/v1/stores/{storeId}/products/{productId}/media`
- [Reorder a product’s images](https://storeware.ai/docs/api-reference/rest/products#reorder-product-media): `POST /api/v1/stores/{storeId}/products/{productId}/media/order`
- [Add an option to a product](https://storeware.ai/docs/api-reference/rest/products#add-product-option): `POST /api/v1/stores/{storeId}/products/{productId}/options`
- [Rename an option](https://storeware.ai/docs/api-reference/rest/products#rename-option): `PATCH /api/v1/stores/{storeId}/options/{optionId}`
- [Add a value to an option](https://storeware.ai/docs/api-reference/rest/products#add-option-value): `POST /api/v1/stores/{storeId}/options/{optionId}`
- [Rename an option value](https://storeware.ai/docs/api-reference/rest/products#rename-option-value): `PATCH /api/v1/stores/{storeId}/option-values/{optionValueId}`
- [Remove an option value](https://storeware.ai/docs/api-reference/rest/products#remove-option-value): `DELETE /api/v1/stores/{storeId}/option-values/{optionValueId}`
- [Get several listings](https://storeware.ai/docs/api-reference/rest/products#list-listings): `GET /api/v1/stores/{storeId}/products/listings`
- [Create a listing](https://storeware.ai/docs/api-reference/rest/products#create-listing): `POST /api/v1/stores/{storeId}/products/listings`
- [Change many prices at once](https://storeware.ai/docs/api-reference/rest/products#change-product-prices): `POST /api/v1/stores/{storeId}/products/prices`
- [Price and publish several listings](https://storeware.ai/docs/api-reference/rest/products#settle-listings): `POST /api/v1/stores/{storeId}/products/listings/settle`
- [Search as an AI shopper](https://storeware.ai/docs/api-reference/rest/products#search-as-ai-shopper): `POST /api/v1/stores/{storeId}/search/as-ai-shopper`
- [List a product’s metafields](https://storeware.ai/docs/api-reference/rest/products#list-product-metafields): `GET /api/v1/stores/{storeId}/products/{productId}/metafields`
- [Set a product’s metafields](https://storeware.ai/docs/api-reference/rest/products#set-product-metafields): `PUT /api/v1/stores/{storeId}/products/{productId}/metafields`
- [List a product’s translations](https://storeware.ai/docs/api-reference/rest/products#list-product-translations): `GET /api/v1/stores/{storeId}/products/{productId}/translations`
- [Set a product’s translations](https://storeware.ai/docs/api-reference/rest/products#set-product-translations): `PUT /api/v1/stores/{storeId}/products/{productId}/translations`

## Variants

The versions of a product a shopper buys, and their options.

- [Read what every variant of a product holds](https://storeware.ai/docs/api-reference/rest/variants#get-variant-extras): `GET /api/v1/stores/{storeId}/products/{productId}/variant-extras`
- [Update a variant](https://storeware.ai/docs/api-reference/rest/variants#update-variant): `PATCH /api/v1/stores/{storeId}/variants/{variantId}`
- [Set a variant’s price](https://storeware.ai/docs/api-reference/rest/variants#set-variant-price): `POST /api/v1/stores/{storeId}/variants/{variantId}/price`
- [List a variant’s price changes](https://storeware.ai/docs/api-reference/rest/variants#list-variant-price-history): `GET /api/v1/stores/{storeId}/variants/{variantId}/price/history`
- [Put a price back](https://storeware.ai/docs/api-reference/rest/variants#revert-variant-price): `POST /api/v1/stores/{storeId}/variants/{variantId}/price/revert`
- [Set what a variant cost to buy](https://storeware.ai/docs/api-reference/rest/variants#set-variant-cost): `POST /api/v1/stores/{storeId}/variants/{variantId}/cost`
- [Set whether a variant sells with no stock](https://storeware.ai/docs/api-reference/rest/variants#set-variant-backorder): `POST /api/v1/stores/{storeId}/variants/{variantId}/backorder`
- [List a variant’s images](https://storeware.ai/docs/api-reference/rest/variants#list-variant-media): `GET /api/v1/stores/{storeId}/variants/{variantId}/media`
- [Show an image for a variant](https://storeware.ai/docs/api-reference/rest/variants#add-variant-media): `POST /api/v1/stores/{storeId}/variants/{variantId}/media`
- [Take an image off a variant](https://storeware.ai/docs/api-reference/rest/variants#remove-variant-media): `DELETE /api/v1/stores/{storeId}/variants/{variantId}/media`
- [List a variant’s downloads](https://storeware.ai/docs/api-reference/rest/variants#list-variant-digital-assets): `GET /api/v1/stores/{storeId}/variants/{variantId}/digital-assets`
- [Attach a download to a variant](https://storeware.ai/docs/api-reference/rest/variants#attach-variant-digital-asset): `POST /api/v1/stores/{storeId}/variants/{variantId}/digital-assets`
- [List a variant’s metafields](https://storeware.ai/docs/api-reference/rest/variants#list-variant-metafields): `GET /api/v1/stores/{storeId}/variants/{variantId}/metafields`
- [Set a variant’s metafields](https://storeware.ai/docs/api-reference/rest/variants#set-variant-metafields): `PUT /api/v1/stores/{storeId}/variants/{variantId}/metafields`

## Collections

Groups of products, set by hand or by rules.

- [List collections](https://storeware.ai/docs/api-reference/rest/collections#list-collections): `GET /api/v1/stores/{storeId}/collections`
- [Create a collection](https://storeware.ai/docs/api-reference/rest/collections#create-collection): `POST /api/v1/stores/{storeId}/collections`
- [Get a collection](https://storeware.ai/docs/api-reference/rest/collections#get-collection): `GET /api/v1/stores/{storeId}/collections/{collectionId}`
- [Update a collection](https://storeware.ai/docs/api-reference/rest/collections#update-collection): `PATCH /api/v1/stores/{storeId}/collections/{collectionId}`
- [Delete a collection](https://storeware.ai/docs/api-reference/rest/collections#delete-collection): `DELETE /api/v1/stores/{storeId}/collections/{collectionId}`
- [List a collection’s products](https://storeware.ai/docs/api-reference/rest/collections#list-collection-products): `GET /api/v1/stores/{storeId}/collections/{collectionId}/products`
- [Add products to a collection](https://storeware.ai/docs/api-reference/rest/collections#add-products-to-collection): `POST /api/v1/stores/{storeId}/collections/{collectionId}/products`
- [Remove a product from a collection](https://storeware.ai/docs/api-reference/rest/collections#remove-product-from-collection): `DELETE /api/v1/stores/{storeId}/collections/{collectionId}/products/{productId}`
- [List a collection’s metafields](https://storeware.ai/docs/api-reference/rest/collections#list-collection-metafields): `GET /api/v1/stores/{storeId}/collections/{collectionId}/metafields`
- [Set a collection’s metafields](https://storeware.ai/docs/api-reference/rest/collections#set-collection-metafields): `PUT /api/v1/stores/{storeId}/collections/{collectionId}/metafields`
- [List a collection’s translations](https://storeware.ai/docs/api-reference/rest/collections#list-collection-translations): `GET /api/v1/stores/{storeId}/collections/{collectionId}/translations`
- [Set a collection’s translations](https://storeware.ai/docs/api-reference/rest/collections#set-collection-translations): `PUT /api/v1/stores/{storeId}/collections/{collectionId}/translations`

## Inventory

Stock at each location, and the locations themselves.

- [List stock](https://storeware.ai/docs/api-reference/rest/inventory#list-stock): `GET /api/v1/stores/{storeId}/inventory`
- [List stock on its way](https://storeware.ai/docs/api-reference/rest/inventory#list-incoming-stock): `GET /api/v1/stores/{storeId}/inventory/incoming`
- [Get a variant’s stock levels](https://storeware.ai/docs/api-reference/rest/inventory#get-inventory): `GET /api/v1/stores/{storeId}/inventory/{variantId}`
- [Change stock at a location](https://storeware.ai/docs/api-reference/rest/inventory#change-inventory): `POST /api/v1/stores/{storeId}/inventory/{variantId}`
- [List a variant’s stock history](https://storeware.ai/docs/api-reference/rest/inventory#list-stock-movements): `GET /api/v1/stores/{storeId}/inventory/{variantId}/movements`
- [Get a variant’s stock at every location](https://storeware.ai/docs/api-reference/rest/inventory#get-variant-stock): `GET /api/v1/stores/{storeId}/inventory/{variantId}/stock`
- [List locations](https://storeware.ai/docs/api-reference/rest/inventory#list-locations): `GET /api/v1/stores/{storeId}/locations`
- [Create a location](https://storeware.ai/docs/api-reference/rest/inventory#create-location): `POST /api/v1/stores/{storeId}/locations`
- [Update a location](https://storeware.ai/docs/api-reference/rest/inventory#update-location): `PATCH /api/v1/stores/{storeId}/locations/{locationId}`

## Shipping

The groups a shop sorts its goods into for delivery.

- [List shipping classes](https://storeware.ai/docs/api-reference/rest/shipping#list-shipping-classes): `GET /api/v1/stores/{storeId}/shipping-classes`
- [Create a shipping class](https://storeware.ai/docs/api-reference/rest/shipping#create-shipping-class): `POST /api/v1/stores/{storeId}/shipping-classes`
- [Update a shipping class](https://storeware.ai/docs/api-reference/rest/shipping#update-shipping-class): `PATCH /api/v1/stores/{storeId}/shipping-classes/{classId}`
- [Delete a shipping class](https://storeware.ai/docs/api-reference/rest/shipping#delete-shipping-class): `DELETE /api/v1/stores/{storeId}/shipping-classes/{classId}`

## Orders

Orders, their payments, fulfillments, refunds and changes.

- [List orders](https://storeware.ai/docs/api-reference/rest/orders#list-orders): `GET /api/v1/stores/{storeId}/orders`
- [Get an order](https://storeware.ai/docs/api-reference/rest/orders#get-order): `GET /api/v1/stores/{storeId}/orders/{orderId}`
- [Cancel an order](https://storeware.ai/docs/api-reference/rest/orders#cancel-order): `DELETE /api/v1/stores/{storeId}/orders/{orderId}`
- [Correct an order’s contact details or address](https://storeware.ai/docs/api-reference/rest/orders#update-order-details): `PATCH /api/v1/stores/{storeId}/orders/{orderId}`
- [List orders waiting on a card check](https://storeware.ai/docs/api-reference/rest/orders#list-pending-payment-authentications): `GET /api/v1/stores/{storeId}/orders/authentications`
- [Renew a card check link](https://storeware.ai/docs/api-reference/rest/orders#renew-payment-authentication-link): `POST /api/v1/stores/{storeId}/orders/authentications/{sessionId}`
- [Approve or reject a held order](https://storeware.ai/docs/api-reference/rest/orders#decide-order-approval): `POST /api/v1/stores/{storeId}/orders/{orderId}/approval`
- [List an order’s changes](https://storeware.ai/docs/api-reference/rest/orders#list-order-changes): `GET /api/v1/stores/{storeId}/orders/{orderId}/changes`
- [Open an order change](https://storeware.ai/docs/api-reference/rest/orders#open-order-change): `POST /api/v1/stores/{storeId}/orders/{orderId}/changes`
- [Get an order change](https://storeware.ai/docs/api-reference/rest/orders#get-order-change): `GET /api/v1/stores/{storeId}/orders/{orderId}/changes/{changeId}`
- [Confirm, decline or cancel an order change](https://storeware.ai/docs/api-reference/rest/orders#decide-order-change): `POST /api/v1/stores/{storeId}/orders/{orderId}/changes/{changeId}`
- [Add a line to an order change](https://storeware.ai/docs/api-reference/rest/orders#add-order-change-action): `POST /api/v1/stores/{storeId}/orders/{orderId}/changes/{changeId}/actions`
- [Remove a line from an order change](https://storeware.ai/docs/api-reference/rest/orders#remove-order-change-action): `DELETE /api/v1/stores/{storeId}/orders/{orderId}/changes/{changeId}/actions/{actionId}`
- [List an order’s downloads](https://storeware.ai/docs/api-reference/rest/orders#list-order-downloads): `GET /api/v1/stores/{storeId}/orders/{orderId}/downloads`
- [Set a download allowance](https://storeware.ai/docs/api-reference/rest/orders#set-order-download-allowance): `PATCH /api/v1/stores/{storeId}/orders/{orderId}/downloads`
- [List an order’s fulfillments](https://storeware.ai/docs/api-reference/rest/orders#list-fulfillments): `GET /api/v1/stores/{storeId}/orders/{orderId}/fulfillments`
- [Create a fulfillment](https://storeware.ai/docs/api-reference/rest/orders#create-fulfillment): `POST /api/v1/stores/{storeId}/orders/{orderId}/fulfillments`
- [Record a tracking event](https://storeware.ai/docs/api-reference/rest/orders#record-tracking-event): `POST /api/v1/stores/{storeId}/orders/{orderId}/fulfillments/{fulfillmentId}/events`
- [Get what a shipping label needs](https://storeware.ai/docs/api-reference/rest/orders#get-shipping-label-start): `GET /api/v1/stores/{storeId}/orders/{orderId}/label-quotes`
- [Quote a shipping label](https://storeware.ai/docs/api-reference/rest/orders#quote-shipping-label): `POST /api/v1/stores/{storeId}/orders/{orderId}/label-quotes`
- [List an order’s shipping labels](https://storeware.ai/docs/api-reference/rest/orders#list-shipping-labels): `GET /api/v1/stores/{storeId}/orders/{orderId}/labels`
- [Buy a shipping label](https://storeware.ai/docs/api-reference/rest/orders#buy-shipping-label): `POST /api/v1/stores/{storeId}/orders/{orderId}/labels`
- [Resume a shipping label purchase](https://storeware.ai/docs/api-reference/rest/orders#resume-shipping-label): `POST /api/v1/stores/{storeId}/orders/{orderId}/labels/{labelId}/resume`
- [Void a shipping label](https://storeware.ai/docs/api-reference/rest/orders#void-shipping-label): `POST /api/v1/stores/{storeId}/orders/{orderId}/labels/{labelId}/void`
- [List an order’s metafields](https://storeware.ai/docs/api-reference/rest/orders#list-order-metafields): `GET /api/v1/stores/{storeId}/orders/{orderId}/metafields`
- [Set an order’s metafields](https://storeware.ai/docs/api-reference/rest/orders#set-order-metafields): `PUT /api/v1/stores/{storeId}/orders/{orderId}/metafields`
- [Add a return reason](https://storeware.ai/docs/api-reference/rest/orders#create-return-reason): `POST /api/v1/stores/{storeId}/return-reasons`
- [Take back a despatch](https://storeware.ai/docs/api-reference/rest/orders#void-fulfillment): `DELETE /api/v1/stores/{storeId}/orders/{orderId}/fulfillments/{fulfillmentId}`
- [Correct a despatch’s tracking](https://storeware.ai/docs/api-reference/rest/orders#correct-fulfillment-tracking): `PATCH /api/v1/stores/{storeId}/orders/{orderId}/fulfillments/{fulfillmentId}`
- [See what correcting an order’s details would mean](https://storeware.ai/docs/api-reference/rest/orders#preview-order-details): `POST /api/v1/stores/{storeId}/orders/{orderId}/details/preview`
- [Keep an order back from being sent](https://storeware.ai/docs/api-reference/rest/orders#hold-order): `POST /api/v1/stores/{storeId}/orders/{orderId}/hold`
- [Release an order kept back](https://storeware.ai/docs/api-reference/rest/orders#release-order-hold): `DELETE /api/v1/stores/{storeId}/orders/{orderId}/hold`
- [List the tags a shop’s orders carry](https://storeware.ai/docs/api-reference/rest/orders#list-order-facets): `GET /api/v1/stores/{storeId}/orders/facets`
- [Change an order’s tags](https://storeware.ai/docs/api-reference/rest/orders#change-order-tags): `PATCH /api/v1/stores/{storeId}/orders/{orderId}/tags`
- [List an order’s notes](https://storeware.ai/docs/api-reference/rest/orders#list-order-notes): `GET /api/v1/stores/{storeId}/orders/{orderId}/notes`
- [Add a note to an order](https://storeware.ai/docs/api-reference/rest/orders#add-order-note): `POST /api/v1/stores/{storeId}/orders/{orderId}/notes`
- [Record an invoice payment](https://storeware.ai/docs/api-reference/rest/orders#record-order-payment): `POST /api/v1/stores/{storeId}/orders/{orderId}/payments`
- [List an order’s refunds](https://storeware.ai/docs/api-reference/rest/orders#list-order-refunds): `GET /api/v1/stores/{storeId}/orders/{orderId}/refunds`
- [Refund an order](https://storeware.ai/docs/api-reference/rest/orders#refund-order): `POST /api/v1/stores/{storeId}/orders/{orderId}/refunds`
- [List an order’s returns](https://storeware.ai/docs/api-reference/rest/orders#list-order-returns): `GET /api/v1/stores/{storeId}/orders/{orderId}/returns`
- [Open a return](https://storeware.ai/docs/api-reference/rest/orders#request-return): `POST /api/v1/stores/{storeId}/orders/{orderId}/returns`

## Payments

What the shop holds, and the money sent to its bank.

- [Read the shop’s balance and payouts](https://storeware.ai/docs/api-reference/rest/payments#get-payout-summary): `GET /api/v1/stores/{storeId}/payments/payouts`

## Customers

The shop’s customers and what is kept about them.

- [List customers](https://storeware.ai/docs/api-reference/rest/customers#list-customers): `GET /api/v1/stores/{storeId}/customers`
- [Create a customer](https://storeware.ai/docs/api-reference/rest/customers#create-customer): `POST /api/v1/stores/{storeId}/customers`
- [List the tags and countries customers have](https://storeware.ai/docs/api-reference/rest/customers#list-customer-facets): `GET /api/v1/stores/{storeId}/customers/facets`
- [Get a customer](https://storeware.ai/docs/api-reference/rest/customers#get-customer): `GET /api/v1/stores/{storeId}/customers/{customerId}`
- [Update a customer](https://storeware.ai/docs/api-reference/rest/customers#update-customer): `PATCH /api/v1/stores/{storeId}/customers/{customerId}`
- [List a customer’s saved addresses](https://storeware.ai/docs/api-reference/rest/customers#list-customer-addresses): `GET /api/v1/stores/{storeId}/customers/{customerId}/addresses`
- [Save an address for a customer](https://storeware.ai/docs/api-reference/rest/customers#add-customer-address): `POST /api/v1/stores/{storeId}/customers/{customerId}/addresses`
- [Correct a customer’s saved address](https://storeware.ai/docs/api-reference/rest/customers#update-customer-address): `PATCH /api/v1/stores/{storeId}/customers/{customerId}/addresses/{addressId}`
- [Remove a customer’s saved address](https://storeware.ai/docs/api-reference/rest/customers#remove-customer-address): `DELETE /api/v1/stores/{storeId}/customers/{customerId}/addresses/{addressId}`
- [Make a saved address the default](https://storeware.ai/docs/api-reference/rest/customers#make-customer-address-default): `POST /api/v1/stores/{storeId}/customers/{customerId}/addresses/{addressId}/default`
- [Archive a customer](https://storeware.ai/docs/api-reference/rest/customers#archive-customer): `POST /api/v1/stores/{storeId}/customers/{customerId}/archive`
- [Unarchive a customer](https://storeware.ai/docs/api-reference/rest/customers#unarchive-customer): `POST /api/v1/stores/{storeId}/customers/{customerId}/unarchive`
- [Withdraw a customer’s marketing consent](https://storeware.ai/docs/api-reference/rest/customers#withdraw-customer-marketing-consent): `DELETE /api/v1/stores/{storeId}/customers/{customerId}/marketing-consent`
- [List a customer’s metafields](https://storeware.ai/docs/api-reference/rest/customers#list-customer-metafields): `GET /api/v1/stores/{storeId}/customers/{customerId}/metafields`
- [Set a customer’s metafields](https://storeware.ai/docs/api-reference/rest/customers#set-customer-metafields): `PUT /api/v1/stores/{storeId}/customers/{customerId}/metafields`
- [List the trade accounts a customer buys for](https://storeware.ai/docs/api-reference/rest/customers#list-customer-companies): `GET /api/v1/stores/{storeId}/customers/{customerId}/companies`
- [Get a customer’s store credit](https://storeware.ai/docs/api-reference/rest/customers#get-customer-store-credit): `GET /api/v1/stores/{storeId}/customers/{customerId}/store-credit`
- [Give a customer store credit](https://storeware.ai/docs/api-reference/rest/customers#issue-customer-store-credit): `POST /api/v1/stores/{storeId}/customers/{customerId}/store-credit`
- [Get what the shop remembers about a customer](https://storeware.ai/docs/api-reference/rest/customers#get-customer-memory): `GET /api/v1/stores/{storeId}/customers/{customerId}/memory`
- [Make the shop forget what a customer told it](https://storeware.ai/docs/api-reference/rest/customers#forget-customer-memory): `POST /api/v1/stores/{storeId}/customers/{customerId}/memory`

## Metafields

The typed fields a shop and its apps keep on records.

- [List metafield definitions](https://storeware.ai/docs/api-reference/rest/metafields#list-metafield-definitions): `GET /api/v1/stores/{storeId}/metafield-definitions`
- [Get a metafield definition](https://storeware.ai/docs/api-reference/rest/metafields#get-metafield-definition): `GET /api/v1/stores/{storeId}/metafield-definitions/{definitionId}`
- [Update a metafield definition](https://storeware.ai/docs/api-reference/rest/metafields#update-metafield-definition): `PATCH /api/v1/stores/{storeId}/metafield-definitions/{definitionId}`
- [Delete a metafield definition](https://storeware.ai/docs/api-reference/rest/metafields#delete-metafield-definition): `DELETE /api/v1/stores/{storeId}/metafield-definitions/{definitionId}`
- [List the shop’s metafields](https://storeware.ai/docs/api-reference/rest/metafields#list-store-metafields): `GET /api/v1/stores/{storeId}/metafields`
- [Set the shop’s metafields](https://storeware.ai/docs/api-reference/rest/metafields#set-store-metafields): `PUT /api/v1/stores/{storeId}/metafields`

## App billing

What a shop pays your app: plans, one time charges and use.

- [Get your app’s billing on this shop](https://storeware.ai/docs/api-reference/rest/app-billing#get-app-billing): `GET /api/v1/app-billing`
- [Ask the merchant to approve a plan](https://storeware.ai/docs/api-reference/rest/app-billing#request-app-subscription): `POST /api/v1/app-billing/subscriptions`
- [End your plan on this shop](https://storeware.ai/docs/api-reference/rest/app-billing#cancel-app-subscription): `POST /api/v1/app-billing/subscriptions/{subscriptionId}/cancel`
- [Ask the merchant to approve a one-time charge](https://storeware.ai/docs/api-reference/rest/app-billing#request-app-purchase): `POST /api/v1/app-billing/purchases`
- [Report what the shop used](https://storeware.ai/docs/api-reference/rest/app-billing#record-app-usage): `POST /api/v1/app-billing/usage`
- [Credit the shop](https://storeware.ai/docs/api-reference/rest/app-billing#credit-app-shop): `POST /api/v1/app-billing/credits`

## App settings

What a merchant set for your app, and pictures your components show.

- [Get what the merchant set for your app](https://storeware.ai/docs/api-reference/rest/app-settings#get-app-settings): `GET /api/v1/app/settings`
- [Put a picture on Storeware for your components](https://storeware.ai/docs/api-reference/rest/app-settings#upload-app-asset): `POST /api/v1/app/assets`

## App automations

Triggers your app fires into a shop’s automations, and the menu they are built from.

- [Fire one of your automation triggers](https://storeware.ai/docs/api-reference/rest/app-automations#fire-app-trigger): `POST /api/v1/app/events`
- [Get what this shop’s automations may be made of](https://storeware.ai/docs/api-reference/rest/app-automations#get-automation-vocabulary): `GET /api/v1/stores/{storeId}/automations/vocabulary`

## Objects

What many calls answer with is described once, on [Objects](https://storeware.ai/docs/api-reference/rest/objects): [AppPurchase](https://storeware.ai/docs/api-reference/rest/objects#apppurchase), [AppSubscription](https://storeware.ai/docs/api-reference/rest/objects#appsubscription), [AppUsage](https://storeware.ai/docs/api-reference/rest/objects#appusage), [Collection](https://storeware.ai/docs/api-reference/rest/objects#collection), [Customer](https://storeware.ai/docs/api-reference/rest/objects#customer), [CustomerSavedAddress](https://storeware.ai/docs/api-reference/rest/objects#customersavedaddress), [CustomerSummary](https://storeware.ai/docs/api-reference/rest/objects#customersummary), [DigitalAsset](https://storeware.ai/docs/api-reference/rest/objects#digitalasset), [DownloadGrant](https://storeware.ai/docs/api-reference/rest/objects#downloadgrant), [Fulfillment](https://storeware.ai/docs/api-reference/rest/objects#fulfillment), [InventoryLevel](https://storeware.ai/docs/api-reference/rest/objects#inventorylevel), [Listing](https://storeware.ai/docs/api-reference/rest/objects#listing), [Location](https://storeware.ai/docs/api-reference/rest/objects#location), [MetafieldDefinition](https://storeware.ai/docs/api-reference/rest/objects#metafielddefinition), [Order](https://storeware.ai/docs/api-reference/rest/objects#order), [OrderAdjustment](https://storeware.ai/docs/api-reference/rest/objects#orderadjustment), [OrderChange](https://storeware.ai/docs/api-reference/rest/objects#orderchange), [OrderLineItem](https://storeware.ai/docs/api-reference/rest/objects#orderlineitem), [OrderNote](https://storeware.ai/docs/api-reference/rest/objects#ordernote), [PayoutSummary](https://storeware.ai/docs/api-reference/rest/objects#payoutsummary), [PriceChange](https://storeware.ai/docs/api-reference/rest/objects#pricechange), [Product](https://storeware.ai/docs/api-reference/rest/objects#product), [ProductDetail](https://storeware.ai/docs/api-reference/rest/objects#productdetail), [ProductFigures](https://storeware.ai/docs/api-reference/rest/objects#productfigures), [ProductMedia](https://storeware.ai/docs/api-reference/rest/objects#productmedia), [ProductRow](https://storeware.ai/docs/api-reference/rest/objects#productrow), [ProductSales](https://storeware.ai/docs/api-reference/rest/objects#productsales), [Return](https://storeware.ai/docs/api-reference/rest/objects#return), [ShippingClass](https://storeware.ai/docs/api-reference/rest/objects#shippingclass), [ShippingClassRow](https://storeware.ai/docs/api-reference/rest/objects#shippingclassrow), [ShippingLabel](https://storeware.ai/docs/api-reference/rest/objects#shippinglabel), [Variant](https://storeware.ai/docs/api-reference/rest/objects#variant), [VariantExtras](https://storeware.ai/docs/api-reference/rest/objects#variantextras).
