Spree Commerce Wishlists API

The Wishlists API from Spree Commerce — 9 operation(s) for wishlists.

OpenAPI Specification

spree-wishlists-api-openapi.yml Raw ↑
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: <a href="https://jsonapi.org/format/#fetching-includes">https://jsonapi.org/format/#fetching-includes</a>'
        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: <a href="https://jsonapi.org/format/#fetching-includes">https://jsonapi.org/format/#fetching-includes</a>'
        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: <a href="https://jsonapi.org/format/#fetching-includes">https://jsonapi.org/format/#fetching-includes</a>'
        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: <a href="https://jsonapi.org/format/#fetching-includes">https://jsonapi.org/format/#fetching-includes</a>'
        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: '<api-key>',\n})\n\nconst wishlists = await client.wishlists.list({}, {\n  token: '<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: '<api-key>',\n})\n\nconst wishlist = await client.wishlists.create({\n  name: 'Birthday Ideas',\n  is_private: true,\n}, {\n  token: '<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: '<api-key>',\n})\n\nconst wishlist = await client.wishlists.get('wl_abc123', {\n  expand: ['wished_items'],\n}, {\n  token: '<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: '<api-key>',\n})\n\nconst wishlist = await client.wishlists.update('wl_abc123', {\n  name: 'Updated Name',\n}, {\n  token: '<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: '<api-key>',\n})\n\nawait client.wishlists.delete('wl_abc123', {\n  token: '<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: '<api-key>',\n})\n\nconst item = await client.wishlists.items.create('wl_abc123', {\n  variant_id: 'variant_abc123',\n  quantity: 1,\n}, {\n  token: '<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: '<api-key>',\n})\n\nawait client.wishlists.items.delete('wl_abc123', 'wi_abc123', {\n  token: '<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

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spree/refs/heads/main/openapi/spree-wishlists-api-openapi.yml