openapi: 3.0.3
info:
title: Admin Account / Address Wishlists API
contact:
name: Spree Commerce
url: https://spreecommerce.org
email: hello@spreecommerce.org
description: "Spree Admin API v3 - Administrative API for managing products, orders, and store settings.\n\n## Authentication\n\nThe Admin API requires a secret API key passed in the `x-spree-api-key` header.\nSecret API keys can be generated in the Spree admin dashboard.\n\n## Response Format\n\nAll responses are JSON. List endpoints return paginated responses with `data` and `meta` keys.\nSingle resource endpoints return a flat JSON object.\n\n## Resource IDs\n\nEvery resource is identified by an opaque string ID (e.g. `prod_86Rf07xd4z`,\n`variant_k5nR8xLq`, `or_UkLWZg9DAJ`). Use these IDs everywhere — URL paths,\nrequest bodies, and Ransack filters all accept them directly.\n\n## Error Handling\n\nErrors return a consistent format:\n```json\n{\n \"error\": {\n \"code\": \"validation_error\",\n \"message\": \"Validation failed\",\n \"details\": { \"name\": [\"can't be blank\"] }\n }\n}\n```\n"
version: v3
servers:
- url: http://{defaultHost}
variables:
defaultHost:
default: localhost:3000
tags:
- name: Wishlists
paths:
/api/v2/platform/wishlists:
get:
summary: Return a list of Wishlists
tags:
- Wishlists
security:
- bearer_auth: []
description: Returns a list of Wishlists
operationId: wishlists-list
parameters:
- name: page
in: query
example: 1
schema:
type: integer
- name: per_page
in: query
example: 50
schema:
type: integer
- name: include
in: query
description: 'Select which associated resources you would like to fetch, see: https://jsonapi.org/format/#fetching-includes'
example: wished_items
schema:
type: string
- name: filter[name_cont]
in: query
description: ''
example: Birthday
schema:
type: string
responses:
'200':
description: Records returned
content:
application/vnd.api+json:
examples:
Example:
value:
data:
- id: '22'
type: wishlist
attributes:
name: Black Friday
is_private: true
is_default: false
created_at: '2022-11-08T19:36:06.256Z'
updated_at: '2022-11-08T19:36:06.256Z'
token: PunEhftsfcoHddCoVyqQLTYq
variant_included: false
relationships:
wished_items:
data:
- id: '17'
type: wished_item
- id: '18'
type: wished_item
- id: '23'
type: wishlist
attributes:
name: Birthday
is_private: true
is_default: false
created_at: '2022-11-08T19:36:06.257Z'
updated_at: '2022-11-08T19:36:06.257Z'
token: FYKHQXSsnSwAVEaci7RgbPXq
variant_included: false
relationships:
wished_items:
data:
- id: '19'
type: wished_item
- id: '20'
type: wished_item
meta:
count: 2
total_count: 2
total_pages: 1
links:
self: http://www.example.com/api/v2/platform/wishlists?page=1&per_page=&include=&filter[name_cont]=
next: http://www.example.com/api/v2/platform/wishlists?filter%5Bname_cont%5D=&include=&page=1&per_page=
prev: http://www.example.com/api/v2/platform/wishlists?filter%5Bname_cont%5D=&include=&page=1&per_page=
last: http://www.example.com/api/v2/platform/wishlists?filter%5Bname_cont%5D=&include=&page=1&per_page=
first: http://www.example.com/api/v2/platform/wishlists?filter%5Bname_cont%5D=&include=&page=1&per_page=
schema:
$ref: '#/components/schemas/resources_list'
'401':
description: Authentication Failed
content:
application/vnd.api+json:
examples:
Example:
value:
error: The access token is invalid
schema:
$ref: '#/components/schemas/error'
post:
summary: Create a Wishlist
tags:
- Wishlists
security:
- bearer_auth: []
description: Creates a Wishlist
operationId: create-wishlist
parameters:
- name: include
in: query
description: 'Select which associated resources you would like to fetch, see: https://jsonapi.org/format/#fetching-includes'
example: wished_items
schema:
type: string
responses:
'201':
description: Record created
content:
application/vnd.api+json:
examples:
Example:
value:
data:
id: '26'
type: wishlist
attributes:
name: Wishlist_26
is_private: true
is_default: false
created_at: '2022-11-08T19:36:07.290Z'
updated_at: '2022-11-08T19:36:07.290Z'
token: w7zjAVs9QJd9MLdPXDQcxrqi
variant_included: false
relationships:
wished_items:
data: []
schema:
$ref: '#/components/schemas/resource'
'422':
description: Invalid request
content:
application/vnd.api+json:
examples:
Example:
value:
error: Name can't be blank and User can't be blank
errors:
name:
- can't be blank
user:
- can't be blank
schema:
$ref: '#/components/schemas/validation_errors'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/create_wishlist_params'
/api/v2/platform/wishlists/{id}:
get:
summary: Return a Wishlist
tags:
- Wishlists
security:
- bearer_auth: []
description: Returns a Wishlist
operationId: show-wishlist
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: include
in: query
description: 'Select which associated resources you would like to fetch, see: https://jsonapi.org/format/#fetching-includes'
example: wished_items
schema:
type: string
responses:
'200':
description: Record found
content:
application/vnd.api+json:
examples:
Example:
value:
data:
id: '27'
type: wishlist
attributes:
name: My Wishlist
is_private: true
is_default: false
created_at: '2022-11-08T19:36:07.570Z'
updated_at: '2022-11-08T19:36:07.570Z'
token: mTKMs2ZP2PQc1Gu64XMvPrtk
variant_included: false
relationships:
wished_items:
data: []
schema:
$ref: '#/components/schemas/resource'
'404':
description: Record not found
content:
application/vnd.api+json:
examples:
Example:
value:
error: The resource you were looking for could not be found.
schema:
$ref: '#/components/schemas/error'
'401':
description: Authentication Failed
content:
application/vnd.api+json:
examples:
Example:
value:
error: The access token is invalid
schema:
$ref: '#/components/schemas/error'
patch:
summary: Update a Wishlist
tags:
- Wishlists
security:
- bearer_auth: []
description: Updates a Wishlist
operationId: update-wishlist
parameters:
- name: id
in: path
required: true
schema:
type: string
- name: include
in: query
description: 'Select which associated resources you would like to fetch, see: https://jsonapi.org/format/#fetching-includes'
example: wished_items
schema:
type: string
responses:
'200':
description: Record updated
content:
application/vnd.api+json:
examples:
Example:
value:
data:
id: '29'
type: wishlist
attributes:
name: My Super Wishlist
is_private: true
is_default: false
created_at: '2022-11-08T19:36:08.103Z'
updated_at: '2022-11-08T19:36:08.334Z'
token: W4TY5oxqYi2kvpYs26XUPH3p
variant_included: false
relationships:
wished_items:
data: []
schema:
$ref: '#/components/schemas/resource'
'422':
description: Invalid request
content:
application/vnd.api+json:
examples:
Example:
value:
error: Name can't be blank
errors:
name:
- can't be blank
schema:
$ref: '#/components/schemas/validation_errors'
'404':
description: Record not found
content:
application/vnd.api+json:
examples:
Example:
value:
error: The resource you were looking for could not be found.
schema:
$ref: '#/components/schemas/error'
'401':
description: Authentication Failed
content:
application/vnd.api+json:
examples:
Example:
value:
error: The access token is invalid
schema:
$ref: '#/components/schemas/error'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/update_wishlist_params'
delete:
summary: Delete a Wishlist
tags:
- Wishlists
security:
- bearer_auth: []
description: Deletes a Wishlist
operationId: delete-wishlist
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'204':
description: Record deleted
'404':
description: Record not found
content:
application/vnd.api+json:
examples:
Example:
value:
error: The resource you were looking for could not be found.
schema:
$ref: '#/components/schemas/error'
'401':
description: Authentication Failed
content:
application/vnd.api+json:
examples:
Example:
value:
error: The access token is invalid
schema:
$ref: '#/components/schemas/error'
/api/v3/store/wishlists:
get:
summary: List wishlists
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
description: Returns all wishlists for the authenticated customer
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nconst wishlists = await client.wishlists.list({}, {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
- name: page
in: query
required: false
schema:
type: integer
- name: limit
in: query
required: false
schema:
type: integer
- name: fields
in: query
required: false
description: Comma-separated list of fields to include (e.g., name,slug,price). id is always included.
schema:
type: string
responses:
'200':
description: wishlists found
content:
application/json:
example:
data:
- id: wl_UkLWZg9DAJ
name: My Wishlist
token: KrDYvpcWeMWWCVsEuRj9V8Xm
is_default: false
is_private: true
meta:
page: 1
limit: 25
count: 1
pages: 1
from: 1
to: 1
in: 1
previous: null
next: null
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Wishlist'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
description: unauthorized
content:
application/json:
example:
error:
code: authentication_required
message: Authentication required
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
summary: Create a wishlist
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
description: Creates a new wishlist for the customer
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nconst wishlist = await client.wishlists.create({\n name: 'Birthday Ideas',\n is_private: true,\n}, {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
responses:
'201':
description: wishlist created
content:
application/json:
example:
id: wl_gbHJdmfrXB
name: Birthday Ideas
token: LoTGXDT4V69PBMZXRWaS9Sjg
is_default: false
is_private: true
schema:
$ref: '#/components/schemas/Wishlist'
'422':
description: validation error
content:
application/json:
example:
error:
code: validation_error
message: Name can't be blank
details:
name:
- can't be blank
schema:
$ref: '#/components/schemas/ErrorResponse'
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: Birthday Ideas
is_private:
type: boolean
example: true
is_default:
type: boolean
example: false
required:
- name
/api/v3/store/wishlists/{id}:
get:
summary: Get a wishlist
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nconst wishlist = await client.wishlists.get('wl_abc123', {\n expand: ['wished_items'],\n}, {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
- name: expand
in: query
required: false
description: Expand wished_items
schema:
type: string
- name: fields
in: query
required: false
description: Comma-separated list of fields to include (e.g., name,slug,price). id is always included.
schema:
type: string
responses:
'200':
description: wishlist found
content:
application/json:
example:
id: wl_UkLWZg9DAJ
name: My Wishlist
token: K1j4ej8u38Y4P9whWrjPs2R9
is_default: false
is_private: true
schema:
$ref: '#/components/schemas/Wishlist'
'404':
description: wishlist not found
content:
application/json:
example:
error:
code: record_not_found
message: Wishlist not found
schema:
$ref: '#/components/schemas/ErrorResponse'
patch:
summary: Update a wishlist
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nconst wishlist = await client.wishlists.update('wl_abc123', {\n name: 'Updated Name',\n}, {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: wishlist updated
content:
application/json:
example:
id: wl_UkLWZg9DAJ
name: Updated Name
token: xVUpUiksViqHLiWcenRTEGZx
is_default: false
is_private: true
schema:
$ref: '#/components/schemas/Wishlist'
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: Updated Name
is_private:
type: boolean
example: true
is_default:
type: boolean
example: false
delete:
summary: Delete a wishlist
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nawait client.wishlists.delete('wl_abc123', {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'204':
description: wishlist deleted
/api/v3/store/wishlists/{wishlist_id}/items:
post:
summary: Add item to wishlist
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
description: Adds a variant to the wishlist
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nconst item = await client.wishlists.items.create('wl_abc123', {\n variant_id: 'variant_abc123',\n quantity: 1,\n}, {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
- name: wishlist_id
in: path
required: true
schema:
type: string
responses:
'201':
description: item added
content:
application/json:
example:
id: wi_gbHJdmfrXB
variant_id: variant_gbHJdmfrXB
wishlist_id: wl_UkLWZg9DAJ
quantity: 1
variant:
id: variant_gbHJdmfrXB
product_id: prod_gbHJdmfrXB
sku: SKU-239
options_text: ''
track_inventory: true
media_count: 0
thumbnail_url: null
purchasable: true
in_stock: false
backorderable: true
weight: 0.0
height: null
width: null
depth: null
price:
id: price_gbHJdmfrXB
amount: '19.99'
amount_in_cents: 1999
compare_at_amount: null
compare_at_amount_in_cents: null
currency: USD
display_amount: $19.99
display_compare_at_amount: null
price_list_id: null
original_price: null
option_values: []
schema:
$ref: '#/components/schemas/WishlistItem'
requestBody:
content:
application/json:
schema:
type: object
properties:
variant_id:
type: string
example: variant_abc123
quantity:
type: integer
example: 1
required:
- variant_id
/api/v3/store/wishlists/{wishlist_id}/items/{id}:
delete:
summary: Remove item from wishlist
tags:
- Wishlists
security:
- api_key: []
bearer_auth: []
x-codeSamples:
- lang: javascript
label: Spree SDK
source: "import { createClient } from '@spree/sdk'\n\nconst client = createClient({\n baseUrl: 'https://your-store.com',\n publishableKey: '',\n})\n\nawait client.wishlists.items.delete('wl_abc123', 'wi_abc123', {\n token: '',\n})"
parameters:
- name: x-spree-api-key
in: header
required: true
schema:
type: string
- name: Authorization
in: header
required: true
schema:
type: string
- name: wishlist_id
in: path
required: true
schema:
type: string
- name: id
in: path
required: true
schema:
type: string
responses:
'204':
description: item removed
'404':
description: item not found
content:
application/json:
example:
error:
code: record_not_found
message: Wished item not found
/api/v2/storefront/wishlists:
get:
description: Returns all wishlists available to the current user, in the current store.
summary: List all Wishlists
tags:
- Wishlists
operationId: list-wishlists-for-current-user
parameters:
- $ref: '#/components/parameters/WishlistIncludeParam'
- $ref: '#/components/parameters/SparseFieldsWishlist'
- $ref: '#/components/parameters/PerPageParam'
- $ref: '#/components/parameters/WishlistIsVariantIncludedParam'
responses:
'200':
$ref: '#/components/responses/WishlistList'
'403':
$ref: '#/components/responses/403Forbidden'
security:
- bearerAuth: []
post:
description: Creates a new wishlist for the current user in the current store.
summary: Create a Wishlist
tags:
- Wishlists
operationId: create-wishlist
responses:
'200':
$ref: '#/components/responses/Wishlist'
'403':
$ref: '#/components/responses/403Forbidden'
'422':
$ref: '#/components/responses/422UnprocessableEntity'
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The Wishlist name.
is_private:
type: boolean
description: Set the Wishlist to public or private. Defaults to true (private).
is_default:
type: boolean
description: Whether the wishlist is set to the users default wishlist for the current store. Defaults to false.
required:
- name
examples:
Create wishlist:
value:
name: My Wishlist
is_private: false
is_default: true
parameters:
- $ref: '#/components/parameters/SparseFieldsWishlist'
/api/v2/storefront/wishlists/{token}:
get:
description: 'Retrieves a wishlist using the wishlist token.
If the wishlist is publicly viewable, the endpoint will return the requested wishlist regardless of the user. If the wishlist is private, only the wishlist owner can access the wishlist.'
summary: Retrieve a Wishlist
tags:
- Wishlists
operationId: get-wishlist-details
parameters:
- $ref: '#/components/parameters/Token'
- $ref: '#/components/parameters/WishlistIncludeParam'
- $ref: '#/components/parameters/SparseFieldsWishlist'
- $ref: '#/components/parameters/WishlistIsVariantIncludedParam'
responses:
'200':
$ref: '#/components/responses/Wishlist'
'403':
$ref: '#/components/responses/403Forbidden'
patch:
description: Updates the specific Wishlist by setting the values passed in the request body. Any parameters not provided will be left unchanged.
summary: Update a Wishlist
tags:
- Wishlists
operationId: update-wishlist
requestBody:
required: true
content:
application/vnd.api+json:
schema:
type: object
properties:
wishlist:
type: object
properties:
name:
type: string
description: Change the wishlist name.
is_private:
type: boolean
description: Set the wishlist to public or private.
is_default:
type: boolean
description: Make this wishlist the default wishlist.
examples:
Update Name:
value:
wishlist:
name: Birthday Ideas
Set to Private:
value:
wishlist:
is_private: true
Make Default:
value:
wishlist:
is_default: true
description: ''
parameters:
- $ref: '#/components/parameters/Token'
- $ref: '#/components/parameters/SparseFieldsWishlist'
responses:
'200':
$ref: '#/components/responses/Wishlist'
'403':
$ref: '#/components/responses/403Forbidden'
'422':
$ref: '#/components/responses/422UnprocessableEntity'
security:
- bearerAuth: []
delete:
description: This operation deletes the wishlist identified in the URI `token`.
summary: Delete a Wishlist
tags:
- Wishlists
operationId: delete-wishlist
parameters:
- $ref: '#/components/parameters/Token'
responses:
'204':
description: 204 Success - No Content
'403':
$ref: '#/components/responses/403Forbidden'
security:
- bearerAuth: []
/api/v2/storefront/wishlists/default:
get:
description: Returns the default wishlist for the current user, in the current store. If the user does not have a default wishlist in the current store one will be created.
summary: Retrieve the default Wishlist
tags:
- Wishlists
operationId: get-default-wishlist
parameters:
- $ref: '#/components/parameters/WishlistIncludeParam'
- $ref: '#/components/parameters/SparseFieldsWishlist'
- $ref: '#/components/parameters/WishlistIsVariantIncludedParam'
responses:
'200':
$ref: '#/components/responses/Wishlist'
'403':
$ref: '#/components/responses/403Forbidden'
security:
- bearerAuth: []
components:
schemas:
WishedItem:
type: object
x-internal: false
properties:
id:
type: string
type:
type: string
default: wished_item
attributes:
type: object
properties:
quantity:
type: integer
price:
type: string
total:
type: string
display_price:
type: string
display_total:
type: string
relationships:
type: object
properties:
variant:
type: object
properties:
data:
$ref: '#/components/schemas/Relation'
required:
- id
- type
- attributes
- relationships
WishlistIncludes:
x-internal: false
title: Wishlist Includes
allOf:
- $ref: '#/components/schemas/WishedItem'
create_wishlist_params:
type: object
properties:
wishlist:
type: object
required:
- name
- user_id
properties:
name:
type: string
user_id:
type: string
is_default:
type: boolean
is_private:
type: boolean
required:
- wishlist
x-internal: false
error:
type: object
properties:
error:
type: string
required:
- error
x-internal: false
Error:
x-internal: false
title: Error
type: object
properties:
error:
type: string
resource:
type: object
properties:
data:
$ref: '#/components/schemas/resource_properties'
required:
- data
x-internal: false
ErrorResponse:
type: object
properties:
error:
type: object
properties:
code:
type: string
example: record_not_found
message:
type: string
example: Record not found
details:
type: object
description: Field-specific validation errors
nullable: true
example:
name:
- is too short
- is required
email:
- is invalid
required:
- code
- message
required:
- error
example:
error:
code: validation_error
message: Validation failed
details:
name:
- is too short
email:
- is invalid
resource_properties:
type: object
properties:
id:
type: string
type:
type: string
attributes:
type: object
relationships:
type: object
required:
- id
- type
- attributes
x-internal: false
CustomField:
type: object
properties:
id:
type: string
label:
type: string
type:
type: string
deprecated: true
field_type:
type: string
enum:
- short_text
- long_text
- rich_text
- number
- boolean
- json
key:
type: string
value:
type: object
required:
- id
- label
- type
- field_type
- key
- value
x-typelizer: true
WishlistItem:
type: object
properties:
id:
type: string
variant_id:
type: string
wishlist_id:
type: string
quantity:
type: number
variant:
$ref: '#/components/schemas/Variant'
required:
- id
- variant_id
- wishlist_id
- quantity
- variant
x-typelizer: true
Wishlist:
type: object
properties:
id:
type: string
name:
type: string
token:
type: string
is_default:
type: boolean
is_private:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/WishlistItem'
required:
- id
- name
- token
- is_default
- is_private
x-typelizer: true
resources_list:
type: object
properties:
data:
type: array
items:
allOf:
- $ref: '#/components/schemas/resource_properties'
meta:
type: object
properties:
count:
type: integer
total_count:
type: integer
total_pages:
type: integer
required:
- count
- total_count
- total_pages
links:
type: object
properties:
self:
type: string
next:
type: string
prev:
type: string
last:
type: string
first:
type: string
required:
- self
- next
- prev
- last
- first
required:
- data
- meta
- links
x-internal: false
PriceHistory:
type: object
properties:
id:
type: string
amount:
type: string
amount_in_cents:
type: number
currency:
type: string
display_amount:
type: string
recorded_at:
type: string
required:
- id
- amount
- amount_in_cents
- currency
- display_amount
- recorded_at
x-typelizer: true
update_wishlist_params:
type: object
properties:
wishlist:
type: object
properties:
name:
type: string
user_id:
type: string
is_default:
type: boolean
is_private:
type: boolean
required:
- wishlist
x-internal: false
ListLinks:
x-internal: false
type: object
title: Pagination Links
properties:
self:
type: string
description: URL to the current page of the listing
next:
type: string
description: URL to the next page of the listing
prev:
type: string
description: URL to the previous page of the listing
last:
type: string
description: URL to the last page of the listing
first:
type: string
description: URL to the first page of the listing
Price:
type: object
properties:
id:
type: string
amount:
type: string
nullable: true
amount_in_cents:
type: number
nullable: true
compare_at_amount:
type: string
nullable: true
compare_at_amount_in_cents:
type: number
nullable: true
currency:
type: string
nullable: true
display_amount:
type: string
nullable: true
display_compare_at_amount:
type: string
nullable: true
price_list_id:
type: string
nullable: true
required:
- id
- amount
- amount_in_cents
- compare_at_amount
- compare_at_amount_in_cents
- currency
- display_amount
- display_compare_at_amount
- price_list_id
x-typelizer: true
Relation:
type: object
nullable: true
properties:
id:
type: string
type:
type: string
required:
- id
- type
x-internal: false
description: ''
ListMeta:
type: object
x-internal: false
title: Pagination Meta
properties:
count:
type: number
example: 7
description: Number of items on the current listing
total_count:
type: number
example: 145
description: Number of all items matching the criteria
total_pages:
type: number
example: 10
description: Number of all pages containing items matching the criteria
Wishlist_2:
description: ''
type: object
title: Wishlist
x-internal: false
properties:
id:
type: string
type:
type: string
default: wishlist
attributes:
type: object
properties:
token:
type: string
name:
type: string
is_private:
type: boolean
is_default:
type: boolean
variant_included:
type: boolean
description: Returns `true` or `false` depending on the variant ID passed in through the `is_variant_included` query param.
relationships:
type: object
properties:
wished_items:
type: object
properties:
data:
type: array
items:
allOf:
- $ref: '#/components/schemas/Relation'
required:
- id
- type
- attributes
- relationships
validation_errors:
type: object
properties:
error:
type: string
errors:
type: object
required:
- error
- errors
x-internal: false
OptionValue:
type: object
properties:
id:
type: string
option_type_id:
type: string
name:
type: string
label:
type: string
position:
type: number
color_code:
type: string
nullable: true
option_type_name:
type: string
option_type_label:
type: string
image_url:
type: string
nullable: true
required:
- id
- option_type_id
- name
- label
- position
- color_code
- option_type_name
- option_type_label
- image_url
x-typelizer: true
PaginationMeta:
type: object
properties:
page:
type: integer
example: 1
limit:
type: integer
example: 25
count:
type: integer
example: 100
description: Total number of records
pages:
type: integer
example: 4
description: Total number of pages
from:
type: integer
example: 1
description: Index of first record on this page
to:
type: integer
example: 25
description: Index of last record on this page
in:
type: integer
example: 25
description: Number of records on this page
previous:
type: integer
nullable: true
example: null
description: Previous page number
next:
type: integer
nullable: true
example: 2
description: Next page number
required:
- page
- limit
- count
- pages
- from
- to
- in
Media:
type: object
properties:
id:
type: string
product_id:
type: string
nullable: true
variant_ids:
type: array
items:
type: string
position:
type: number
alt:
type: string
nullable: true
media_type:
type: string
focal_point_x:
type: number
nullable: true
focal_point_y:
type: number
nullable: true
external_video_url:
type: string
nullable: true
original_url:
type: string
nullable: true
mini_url:
type: string
nullable: true
small_url:
type: string
nullable: true
medium_url:
type: string
nullable: true
large_url:
type: string
nullable: true
xlarge_url:
type: string
nullable: true
og_image_url:
type: string
nullable: true
required:
- id
- product_id
- variant_ids
- position
- alt
- media_type
- focal_point_x
- focal_point_y
- external_video_url
- original_url
- mini_url
- small_url
- medium_url
- large_url
- xlarge_url
- og_image_url
x-typelizer: true
Variant:
type: object
properties:
id:
type: string
product_id:
type: string
sku:
type: string
nullable: true
options_text:
type: string
track_inventory:
type: boolean
media_count:
type: number
thumbnail_url:
type: string
nullable: true
purchasable:
type: boolean
in_stock:
type: boolean
backorderable:
type: boolean
weight:
type: number
nullable: true
height:
type: number
nullable: true
width:
type: number
nullable: true
depth:
type: number
nullable: true
price:
$ref: '#/components/schemas/Price'
original_price:
allOf:
- $ref: '#/components/schemas/Price'
nullable: true
primary_media:
$ref: '#/components/schemas/Media'
media:
type: array
items:
$ref: '#/components/schemas/Media'
option_values:
type: array
items:
$ref: '#/components/schemas/OptionValue'
custom_fields:
type: array
items:
$ref: '#/components/schemas/CustomField'
prior_price:
allOf:
- $ref: '#/components/schemas/PriceHistory'
nullable: true
required:
- id
- product_id
- sku
- options_text
- track_inventory
- media_count
- thumbnail_url
- purchasable
- in_stock
- backorderable
- weight
- height
- width
- depth
- price
- original_price
- option_values
x-typelizer: true
responses:
Wishlist:
description: 200 Success - Returns the `wishlist` object.
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Wishlist_2'
included:
type: array
items:
$ref: '#/components/schemas/WishlistIncludes'
required:
- data
examples:
Wishlist:
value:
data:
id: '28'
type: wishlist
attributes:
token: 1inBHcJnxBrVEMAZb9esRqZP
name: My Wishlist
is_private: false
is_default: true
variant_included: false
relationships:
wished_items:
data:
- id: '14'
type: wished_item
Wishlist including Wished Items:
value:
data:
id: '28'
type: wishlist
attributes:
token: 1inBHcJnxBrVEMAZb9esRqZP
name: My Wishlist
is_private: false
is_default: true
variant_included: false
relationships:
wished_items:
data:
- id: '14'
type: wished_item
included:
- id: '14'
type: wished_item
attributes:
quantity: 7
price: '26.99'
total: '188.93'
display_price: $26.99
display_total: $188.93
relationships:
variant:
data:
id: '149'
type: variant
wishlist:
data:
id: '28'
type: wishlist
403Forbidden:
description: 403 Forbidden - You are not authorized to access this page.
content:
application/vnd.api+json:
schema:
properties:
error:
type: string
example: You are not authorized to access this page.
default: You are not authorized to access this page.
examples:
403 Example:
value:
error: You are not authorized to access this page.
WishlistList:
description: 200 Success - Returns an array of `wishlist` objects.
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Wishlist_2'
included:
type: array
items:
$ref: '#/components/schemas/WishlistIncludes'
meta:
$ref: '#/components/schemas/ListMeta'
links:
$ref: '#/components/schemas/ListLinks'
required:
- data
- meta
- links
examples:
List of Wishlist's:
value:
data:
- id: '4'
type: wishlist
attributes:
token: gD1QP6SybtooojnxtkXPvcvh
name: My Wishlist
is_private: false
is_default: false
variant_included: true
relationships:
wished_items:
data:
- id: '4'
type: wished_item
- id: '5'
type: wished_item
- id: '8'
type: wishlist
attributes:
token: LKWCxupq2gsN9DRhwuNBCrf5
name: Fathers Day
is_private: true
is_default: true
variant_included: false
relationships:
wished_items:
data:
- id: '6'
type: wished_item
- id: '7'
type: wishlist
attributes:
token: QHnjcCvz21Dtzc6isWyiyBxM
name: Black Friday
is_private: false
is_default: false
variant_included: false
relationships:
wished_items:
data: []
meta:
count: 3
total_count: 3
total_pages: 1
links:
self: http://localhost:3000/api/v2/storefront/wishlists?is_variant_included=150
next: http://localhost:3000/api/v2/storefront/wishlists?page=1
prev: http://localhost:3000/api/v2/storefront/wishlists?page=1
last: http://localhost:3000/api/v2/storefront/wishlists?page=1
first: http://localhost:3000/api/v2/storefront/wishlists?page=1
422UnprocessableEntity:
description: 422 Unprocessable Entity
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/Error'
examples:
422 Example:
value:
error: Example is invalid
errors:
example:
- Example is invalid
parameters:
SparseFieldsWishlist:
in: query
name: fields[wishlist]
example: name,token,is_default,is_private,variant_included
description: Specify the fields you would like returned in the response body. [More information](https://jsonapi.org/format/#fetching-sparse-fieldsets).
schema:
type: string
WishlistIncludeParam:
name: include
in: query
schema:
type: string
example: wished_items.variant
description: Specify the related resources you would like to receive in the `included` section of the response body. You can also retrieve related resources of included resources by using the dot notation, eg. `wished_items.variant`. [More information](https://jsonapi.org/format/#fetching-includes).
Token:
name: token
in: path
required: true
description: The token is a unique string used to identify the target resource.
schema:
type: string
example: vmJtMiMozBdFtn1VkdJ8dYen
WishlistIsVariantIncludedParam:
name: is_variant_included
in: query
schema:
type: string
example: '150'
description: Check for the presence of a variant in a wishlist by passing the variant ID, if the variant is present in the wishlist, the `variant_included` attribute will return `true`
PerPageParam:
name: per_page
in: query
description: Number of requested records per page when paginating collection
schema:
type: integer
example: 25
securitySchemes:
api_key:
type: apiKey
name: x-spree-api-key
in: header
description: Secret API key for admin access
bearer_auth:
type: http
scheme: bearer
bearerFormat: JWT
description: JWT token for admin user authentication
x-tagGroups:
- name: Authentication
tags:
- Authentication
- name: Products & Catalog
tags:
- Products
- Variants
- Option Types
- Custom Fields
- Channels
- name: Pricing
tags:
- Pricing
- Markets
- name: Orders & Fulfillment
tags:
- Orders
- Payments
- Fulfillments
- Refunds
- name: Customers
tags:
- Customers
- Customer Groups
- name: Promotions & Gift Cards
tags:
- Promotions
- Gift Cards
- name: Data
tags:
- Exports
- name: Configuration
tags:
- Settings
- Stock Locations
- Payment Methods
- Staff
- API Keys
- Allowed Origins
- Webhooks