---
title: "Admin API endpoint index"
sidebarTitle: "Endpoint index"
description: "Every Spree Admin API v3 endpoint at a glance — method, path, required API key scope, and summary, grouped by resource."
---

{/* Generated from docs/api-reference/admin.yaml by packages/cli/scripts/generate-endpoints-doc.mjs — do not edit by hand. */}

All 209 Admin API operations, with the [scope](authentication.md) a secret API key needs for each. JWT-authenticated admin users are governed by their roles instead of scopes. The same index is available offline via the CLI: `spree api endpoints`.

Endpoints marked — are exempt from scope checks (authentication and session endpoints) or resolve their scope at request time.

## Admin users

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/admin_users` | `read_settings` | List staff |
| `GET` | `/admin_users/{id}` | `read_settings` | Show a staff member |
| `PATCH` | `/admin_users/{id}` | `write_settings` | Update a staff member |
| `DELETE` | `/admin_users/{id}` | `write_settings` | Remove a staff member from this store |

## Allowed origins

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/allowed_origins` | `read_settings` | List allowed origins |
| `POST` | `/allowed_origins` | `write_settings` | Create an allowed origin |
| `GET` | `/allowed_origins/{id}` | `read_settings` | Get an allowed origin |
| `PATCH` | `/allowed_origins/{id}` | `write_settings` | Update an allowed origin |
| `DELETE` | `/allowed_origins/{id}` | `write_settings` | Delete an allowed origin |

## Api keys

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/api_keys` | `read_api_keys` | List API keys |
| `POST` | `/api_keys` | `write_api_keys` | Create an API key |
| `GET` | `/api_keys/{id}` | `read_api_keys` | Show an API key |
| `PATCH` | `/api_keys/{id}` | `write_api_keys` | Update an API key |
| `DELETE` | `/api_keys/{id}` | `write_api_keys` | Delete an API key |
| `GET` | `/api_keys/current` | *none* | Describe the current API key |
| `PATCH` | `/api_keys/{id}/revoke` | `write_api_keys` | Revoke an API key |

## Auth

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `POST` | `/auth/login` | — | Login |
| `POST` | `/auth/refresh` | — | Refresh token |
| `POST` | `/auth/logout` | — | Logout |

## Categories

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/categories` | `read_categories` | List categories |
| `POST` | `/categories` | `write_categories` | Create a category |
| `GET` | `/categories/{id}` | `read_categories` | Get a category |
| `PATCH` | `/categories/{id}` | `write_categories` | Update a category |
| `DELETE` | `/categories/{id}` | `write_categories` | Delete a category |
| `PATCH` | `/categories/{id}/reposition` | `write_categories` | Reposition a category |
| `GET` | `/categories/{category_id}/products` | `read_categories` | List category products |
| `POST` | `/categories/{category_id}/products` | `write_categories` | Add a product to a category |
| `PATCH` | `/categories/{category_id}/products/{id}/reposition` | `write_categories` | Reposition a category product |

## Channels

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/channels` | `read_settings` | List channels |
| `POST` | `/channels` | `write_settings` | Create a channel |
| `GET` | `/channels/{id}` | `read_settings` | Get a channel |
| `PATCH` | `/channels/{id}` | `write_settings` | Update a channel |
| `DELETE` | `/channels/{id}` | `write_settings` | Delete a channel |
| `POST` | `/channels/{id}/add_products` | `write_products` | Publish products on a channel |
| `POST` | `/channels/{id}/remove_products` | `write_products` | Unpublish products from a channel |

## Custom field definitions

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/custom_field_definitions` | `read_settings` | List custom field definitions |
| `POST` | `/custom_field_definitions` | `write_settings` | Create a custom field definition |
| `GET` | `/custom_field_definitions/{id}` | `read_settings` | Show a custom field definition |
| `PATCH` | `/custom_field_definitions/{id}` | `write_settings` | Update a custom field definition |
| `DELETE` | `/custom_field_definitions/{id}` | `write_settings` | Delete a custom field definition |

## Customer groups

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/customer_groups` | `read_customers` | List customer groups |
| `POST` | `/customer_groups` | `write_customers` | Create a customer group |
| `GET` | `/customer_groups/{id}` | `read_customers` | Get a customer group |
| `PATCH` | `/customer_groups/{id}` | `write_customers` | Update a customer group |
| `DELETE` | `/customer_groups/{id}` | `write_customers` | Delete a customer group |

## Customers

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/customers/{customer_id}/addresses` | `read_customers` | List customer addresses |
| `POST` | `/customers/{customer_id}/addresses` | `write_customers` | Create a customer address |
| `PATCH` | `/customers/{customer_id}/addresses/{id}` | `write_customers` | Update a customer address |
| `DELETE` | `/customers/{customer_id}/addresses/{id}` | `write_customers` | Delete a customer address |
| `GET` | `/customers/{customer_id}/credit_cards` | `read_customers` | List customer credit cards |
| `GET` | `/customers/{customer_id}/credit_cards/{id}` | `read_customers` | Show a customer credit card |
| `DELETE` | `/customers/{customer_id}/credit_cards/{id}` | `write_customers` | Delete a customer credit card |
| `GET` | `/customers/{customer_id}/store_credits` | `read_store_credits` | List customer store credits |
| `POST` | `/customers/{customer_id}/store_credits` | `write_store_credits` | Issue a store credit to a customer |
| `PATCH` | `/customers/{customer_id}/store_credits/{id}` | `write_store_credits` | Update a store credit |
| `DELETE` | `/customers/{customer_id}/store_credits/{id}` | `write_store_credits` | Delete a store credit |
| `GET` | `/customers` | `read_customers` | List customers |
| `POST` | `/customers` | `write_customers` | Create a customer |
| `GET` | `/customers/{id}` | `read_customers` | Show a customer |
| `PATCH` | `/customers/{id}` | `write_customers` | Update a customer |
| `DELETE` | `/customers/{id}` | `write_customers` | Delete a customer |
| `POST` | `/customers/bulk_add_to_groups` | `write_customers` | Bulk-add customers to groups |
| `POST` | `/customers/bulk_remove_from_groups` | `write_customers` | Bulk-remove customers from groups |
| `POST` | `/customers/bulk_add_tags` | `write_customers` | Bulk-add tags to customers |
| `POST` | `/customers/bulk_remove_tags` | `write_customers` | Bulk-remove tags from customers |

## Exports

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/exports` | *the read scope of the exported resource* | List exports |
| `POST` | `/exports` | *the read scope of the exported resource* | Create an export |
| `GET` | `/exports/{id}` | *the read scope of the exported resource* | Show an export |
| `DELETE` | `/exports/{id}` | *the read scope of the exported resource* | Delete an export |
| `GET` | `/exports/{id}/download` | *the read scope of the exported resource* | Download an export |

## Gift card batches

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/gift_card_batches` | `read_gift_cards` | List gift card batches |
| `POST` | `/gift_card_batches` | `write_gift_cards` | Create a gift card batch |
| `GET` | `/gift_card_batches/{id}` | `read_gift_cards` | Get a gift card batch |

## Gift cards

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/gift_cards` | `read_gift_cards` | List gift cards |
| `POST` | `/gift_cards` | `write_gift_cards` | Create a gift card |
| `GET` | `/gift_cards/{id}` | `read_gift_cards` | Get a gift card |
| `PATCH` | `/gift_cards/{id}` | `write_gift_cards` | Update a gift card |
| `DELETE` | `/gift_cards/{id}` | `write_gift_cards` | Delete a gift card |

## Invitations

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/invitations` | `read_settings` | List invitations |
| `POST` | `/invitations` | `write_settings` | Create an invitation |
| `DELETE` | `/invitations/{id}` | `write_settings` | Revoke an invitation |
| `PATCH` | `/invitations/{id}/resend` | `write_settings` | Resend an invitation |

## Locales

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/locales` | `read_settings` | List supported locales |

## Markets

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/markets` | `read_settings` | List markets |
| `POST` | `/markets` | `write_settings` | Create a market |
| `GET` | `/markets/{id}` | `read_settings` | Get a market |
| `PATCH` | `/markets/{id}` | `write_settings` | Update a market |
| `DELETE` | `/markets/{id}` | `write_settings` | Delete a market |

## Me

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/me` | — | Get current admin user and permissions |
| `PATCH` | `/me` | — | Update the current admin profile |

## Option types

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/option_types` | `read_products` | List option types |
| `POST` | `/option_types` | `write_products` | Create an option type |
| `GET` | `/option_types/{id}` | `read_products` | Get an option type |
| `PATCH` | `/option_types/{id}` | `write_products` | Update an option type |
| `DELETE` | `/option_types/{id}` | `write_products` | Delete an option type |

## Orders

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/orders/{order_id}/fulfillments` | `read_fulfillments` | List fulfillments |
| `POST` | `/orders/{order_id}/fulfillments` | `write_fulfillments` | Create a fulfillment |
| `GET` | `/orders/{order_id}/fulfillments/{id}` | `read_fulfillments` | Show a shipment |
| `PATCH` | `/orders/{order_id}/fulfillments/{id}` | `write_fulfillments` | Update a shipment |
| `PATCH` | `/orders/{order_id}/fulfillments/{id}/fulfill` | `write_fulfillments` | Fulfill a fulfillment |
| `PATCH` | `/orders/{order_id}/fulfillments/{id}/cancel` | `write_fulfillments` | Cancel a fulfillment |
| `PATCH` | `/orders/{order_id}/fulfillments/{id}/resume` | `write_fulfillments` | Resume a fulfillment |
| `PATCH` | `/orders/{order_id}/fulfillments/{id}/split` | `write_fulfillments` | Split a fulfillment |
| `POST` | `/orders/{order_id}/gift_cards` | `write_gift_cards` | Apply a gift card to an order |
| `DELETE` | `/orders/{order_id}/gift_cards/{id}` | `write_gift_cards` | Remove a gift card from an order |
| `GET` | `/orders/{order_id}/items` | `read_orders` | List order items |
| `POST` | `/orders/{order_id}/items` | `write_orders` | Add an item |
| `GET` | `/orders/{order_id}/items/{id}` | `read_orders` | Show an item |
| `PATCH` | `/orders/{order_id}/items/{id}` | `write_orders` | Update an item |
| `DELETE` | `/orders/{order_id}/items/{id}` | `write_orders` | Remove an item |
| `POST` | `/orders/{order_id}/store_credits` | `write_store_credits` | Apply customer's store credit to an order |
| `DELETE` | `/orders/{order_id}/store_credits` | `write_store_credits` | Remove store credit from an order |
| `GET` | `/orders` | `read_orders` | List orders |
| `POST` | `/orders` | `write_orders` | Create a draft order |
| `GET` | `/orders/{id}` | `read_orders` | Show an order |
| `PATCH` | `/orders/{id}` | `write_orders` | Update an order |
| `DELETE` | `/orders/{id}` | `write_orders` | Delete a draft order |
| `PATCH` | `/orders/{id}/complete` | `write_orders` | Complete an order |
| `PATCH` | `/orders/{id}/cancel` | `write_orders` | Cancel an order |
| `PATCH` | `/orders/{id}/approve` | `write_orders` | Approve an order |
| `PATCH` | `/orders/{id}/resume` | `write_orders` | Resume a canceled order |
| `POST` | `/orders/{id}/resend_confirmation` | `write_orders` | Resend confirmation email |
| `GET` | `/orders/{order_id}/payments` | `read_payments` | List payments |
| `POST` | `/orders/{order_id}/payments` | `write_payments` | Create a payment |
| `GET` | `/orders/{order_id}/payments/{id}` | `read_payments` | Show a payment |
| `PATCH` | `/orders/{order_id}/payments/{id}/capture` | `write_payments` | Capture a payment |
| `PATCH` | `/orders/{order_id}/payments/{id}/void` | `write_payments` | Void a payment |
| `GET` | `/orders/{order_id}/refunds` | `read_refunds` | List refunds |
| `POST` | `/orders/{order_id}/refunds` | `write_refunds` | Create a refund |

## Payment methods

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/payment_methods` | `read_settings` | List payment methods |
| `GET` | `/payment_methods/types` | `read_settings` | List available payment provider types |
| `GET` | `/payment_methods/{id}` | `read_settings` | Show a payment method |

## Price lists

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/price_lists` | `read_products` | List price lists |
| `POST` | `/price_lists` | `write_products` | Create a price list |
| `GET` | `/price_lists/{id}` | `read_products` | Get a price list |
| `PATCH` | `/price_lists/{id}` | `write_products` | Update a price list |
| `DELETE` | `/price_lists/{id}` | `write_products` | Delete a price list |
| `PATCH` | `/price_lists/{id}/activate` | `write_products` | Activate a price list |
| `PATCH` | `/price_lists/{id}/deactivate` | `write_products` | Deactivate a price list |

## Prices

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/prices` | `read_products` | List prices |
| `POST` | `/prices` | `write_products` | Create a price |
| `GET` | `/prices/{id}` | `read_products` | Get a price |
| `PATCH` | `/prices/{id}` | `write_products` | Update a price |
| `DELETE` | `/prices/{id}` | `write_products` | Delete a price |
| `POST` | `/prices/bulk_upsert` | `write_products` | Bulk-upsert prices |
| `DELETE` | `/prices/bulk_destroy` | `write_products` | Bulk-delete prices |

## Products

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/products/{product_id}/custom_fields` | `read_products` | List product custom fields |
| `POST` | `/products/{product_id}/custom_fields` | `write_products` | Create a product custom field |
| `GET` | `/products/{product_id}/custom_fields/{id}` | `read_products` | Show a product custom field |
| `PATCH` | `/products/{product_id}/custom_fields/{id}` | `write_products` | Update a product custom field |
| `DELETE` | `/products/{product_id}/custom_fields/{id}` | `write_products` | Delete a product custom field |
| `GET` | `/products/{product_id}/translations` | `read_products` | List product translations |
| `GET` | `/products` | `read_products` | List products |
| `POST` | `/products` | `write_products` | Create a product |
| `GET` | `/products/{id}` | `read_products` | Get a product |
| `PATCH` | `/products/{id}` | `write_products` | Update a product |
| `DELETE` | `/products/{id}` | `write_products` | Delete a product |
| `POST` | `/products/bulk_status_update` | `write_products` | Bulk-update product status |
| `POST` | `/products/bulk_add_to_categories` | `write_products` | Bulk-add products to categories |
| `POST` | `/products/bulk_remove_from_categories` | `write_products` | Bulk-remove products from categories |
| `POST` | `/products/bulk_add_to_channels` | `write_products` | Bulk-add products to channels |
| `POST` | `/products/bulk_remove_from_channels` | `write_products` | Bulk-remove products from channels |
| `POST` | `/products/bulk_add_tags` | `write_products` | Bulk-add tags to products |
| `POST` | `/products/bulk_remove_tags` | `write_products` | Bulk-remove tags from products |
| `DELETE` | `/products/bulk_destroy` | `write_products` | Bulk-delete products |
| `GET` | `/products/{product_id}/variants` | `read_products` | List product variants |
| `POST` | `/products/{product_id}/variants` | `write_products` | Create a variant |
| `GET` | `/products/{product_id}/variants/{id}` | `read_products` | Get a variant |
| `PATCH` | `/products/{product_id}/variants/{id}` | `write_products` | Update a variant |
| `DELETE` | `/products/{product_id}/variants/{id}` | `write_products` | Delete a variant |

## Promotion actions

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/promotion_actions/types` | `read_promotions` | List available promotion action types |

## Promotion rules

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/promotion_rules/types` | `read_promotions` | List available promotion rule types |

## Promotions

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/promotions/{promotion_id}/coupon_codes` | `read_promotions` | List coupon codes for a promotion |
| `GET` | `/promotions/{promotion_id}/promotion_actions` | `read_promotions` | List actions for a promotion |
| `POST` | `/promotions/{promotion_id}/promotion_actions` | `write_promotions` | Create an action on a promotion |
| `DELETE` | `/promotions/{promotion_id}/promotion_actions/{id}` | `write_promotions` | Delete an action from a promotion |
| `GET` | `/promotions/{promotion_id}/promotion_rules` | `read_promotions` | List rules for a promotion |
| `POST` | `/promotions/{promotion_id}/promotion_rules` | `write_promotions` | Create a rule on a promotion |
| `PATCH` | `/promotions/{promotion_id}/promotion_rules/{id}` | `write_promotions` | Update a rule's preferences |
| `DELETE` | `/promotions/{promotion_id}/promotion_rules/{id}` | `write_promotions` | Delete a rule from a promotion |
| `GET` | `/promotions` | `read_promotions` | List promotions |
| `POST` | `/promotions` | `write_promotions` | Create a promotion |
| `GET` | `/promotions/{id}` | `read_promotions` | Show a promotion |
| `PATCH` | `/promotions/{id}` | `write_promotions` | Update a promotion |
| `DELETE` | `/promotions/{id}` | `write_promotions` | Delete a promotion |

## Roles

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/roles` | `read_settings` | List roles |

## Stock locations

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/stock_locations` | `read_stock` | List stock locations |
| `POST` | `/stock_locations` | `write_stock` | Create a stock location |
| `GET` | `/stock_locations/{id}` | `read_stock` | Get a stock location |
| `PATCH` | `/stock_locations/{id}` | `write_stock` | Update a stock location |
| `DELETE` | `/stock_locations/{id}` | `write_stock` | Delete a stock location |

## Store

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/store` | `read_settings` | Get the current store |
| `PATCH` | `/store` | `write_settings` | Update the current store |

## Tags

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/tags` | — | List tags |

## Translatable resources

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/translatable_resources` | `read_settings` | List translatable resources |

## Translations

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `POST` | `/translations/batch` | `write_*` (eg. `write_products`) for every resource type in the batch (for API-key authentication) | Batch upsert translations |

## Webhook endpoints

| Method | Path | Required scope | Summary |
|---|---|---|---|
| `GET` | `/webhook_endpoints/{webhook_endpoint_id}/deliveries` | `read_webhooks` | List webhook deliveries |
| `GET` | `/webhook_endpoints/{webhook_endpoint_id}/deliveries/{id}` | `read_webhooks` | Get a webhook delivery |
| `POST` | `/webhook_endpoints/{webhook_endpoint_id}/deliveries/{id}/redeliver` | `write_webhooks` | Redeliver a webhook delivery |
| `GET` | `/webhook_endpoints` | `read_webhooks` | List webhook endpoints |
| `POST` | `/webhook_endpoints` | `write_webhooks` | Create a webhook endpoint |
| `GET` | `/webhook_endpoints/{id}` | `read_webhooks` | Get a webhook endpoint |
| `PATCH` | `/webhook_endpoints/{id}` | `write_webhooks` | Update a webhook endpoint |
| `DELETE` | `/webhook_endpoints/{id}` | `write_webhooks` | Delete a webhook endpoint |
| `POST` | `/webhook_endpoints/{id}/send_test` | `write_webhooks` | Send a test delivery |
| `PATCH` | `/webhook_endpoints/{id}/enable` | `write_webhooks` | Re-enable a webhook endpoint |
| `PATCH` | `/webhook_endpoints/{id}/disable` | `write_webhooks` | Disable a webhook endpoint |
