Elastic Path Entry Relationships API

### Entry Relationships in Commerce When you create a field that uses `relationship` as a `field_type`, you update your entry values using the `Entry Relationship` endpoints. ### Entry Relationships in Product Experience Manager Once you have created your templates, you must associate them with your products using the `Entry Relationship` endpoints.

Operations 3

POST /v2/flows/{flowSlug}/entries/{flowEntryID}/relationships/{flowFieldSlug} Create an Entry Relationship #
PUT /v2/flows/{flowSlug}/entries/{flowEntryID}/relationships/{flowFieldSlug} Update an Entry Relationship #
DELETE /v2/flows/{flowSlug}/entries/{flowEntryID}/relationships/{flowFieldSlug} Delete an Entry Relationship #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/elastic-path-entry-relationships-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

elastic-path-entry-relationships-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Flows Service Introduction Entry Relationships API
  version: 25.1201.6902711
  x-version-timestamp: 2025-12-01 12:04:04+00:00
  description: "\nWith flows you can extend the capabilities of Commerce and Product Experience Manager at both organization and store level, and apply Composable Commerce to almost any use case.\n \n### Flows in Commerce\n \nYou can define custom data fields for the resources that you use in your store or organization, such as adding more fields to the `customer` resource. \n \n You can also create new resources, such as a `wishlist` resource to support wishlists in your store. \n \n:::note\n \n [Custom APIs](/docs/api/commerce-extensions/custom-ap-is#custom-apis-vs-non-core-flows) are the next generation of Non-Core Flows. Flows are not going anywhere, but Custom APIs offer enhanced capabilities. We recommend using Custom APIs for any of your new use cases.\n \n:::\n\n:::caution\n \n- In an organization, not all resources are available. See [**Extend a resource**](https://elasticpath.dev/guides/Custom%20Data/extend-any-resource) for a list of organization resources that can be extended.\n- If you store any sensitive Personal Identifiable Information (PII) or non-public data on your site, ensure that you do not use this data in flows to avoid potential unauthorized access to the data. For more information, see [**Permissions**](/docs/authentication/tokens/permissions).\n \n:::\n \n### Templates in Product Experience Manager\n \n Templates allow you to attach a specific set of attributes to your products.\n \n - You can use templates to define characteristics of your product, for example, a product specification. For example, a *Book* template might contain attributes, such as *ISBN*, *Author*, *Number of pages*, *Year Published*, or *Condition (New/Used)*.\n - You can use templates for Search Engine Optimization (SEO). When you assign template attributes such as, *care instructions* or *fabric*, to a shirt and a shopper searches for a specific item, attributes help stores to return the products that match the search criteria. For example, when a shopper searches for a large blue shirt, all shirts that are large and blue are returned in the search result.\n"
servers:
- url: https://euwest.api.elasticpath.com
  description: EU West Production Server
- url: https://useast.api.elasticpath.com
  description: US East Production Server
security:
- bearerAuth: []
tags:
- name: Entry Relationships
  description: "\n### Entry Relationships in Commerce\n\nWhen you create a field that uses `relationship` as a `field_type`, you update your entry values using the `Entry Relationship` endpoints. \n\n### Entry Relationships in Product Experience Manager\n\nOnce you have created your templates, you must associate them with your products using the `Entry Relationship` endpoints.\n"
paths:
  /v2/flows/{flowSlug}/entries/{flowEntryID}/relationships/{flowFieldSlug}:
    post:
      tags:
      - Entry Relationships
      summary: Create an Entry Relationship
      description: '- In Commerce, create an entry relationship to one or more resources. If any relationships already exist, the ones made in the request are added to them.

        - In Product Experience Manager, create an entry relationship with the product to which you want to associate the template.

        '
      operationId: createAnEntryRelationship
      parameters:
      - name: flowSlug
        in: path
        required: true
        description: The slug of the flow/template that the entry belongs to.
        style: simple
        schema:
          type: string
      - name: flowFieldSlug
        in: path
        required: true
        description: The slug of the field/attribute that the relationship belongs to.
        style: simple
        schema:
          type: string
      - name: flowEntryID
        in: path
        required: true
        description: The ID of the entry you are requesting.
        style: simple
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FlowsEntriesRelationshipsFieldSlugRequest'
              contentMediaType: application/json
            examples:
              default:
                value:
                  data:
                  - id: '{RESOURCE_ID}'
                    type: '{RESOURCE_TYPE}'
                  - id: '{RESOURCE_ID}'
                    type: '{RESOURCE_TYPE}'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Relationships'
              examples:
                default:
                  value:
                    data:
                    - type: brand
                      id: 0d28e5b6-f615-4e1c-b038-275cfde97927
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
      - Entry Relationships
      summary: Update an Entry Relationship
      description: '- In Commerce, updates an entry relationship to one or more resources. If any relationships already exist, the ones made in the request are added to them.

        - In Product Experience Manager, updates an entry relationship with the product to which you want to associate the template.

        '
      operationId: updateAnEntryRelationship
      parameters:
      - name: flowSlug
        in: path
        required: true
        description: The slug of the flow/template that the entry belongs to.
        style: simple
        schema:
          type: string
      - name: flowFieldSlug
        in: path
        required: true
        description: The slug of the field/attribute that the relationship belongs to.
        style: simple
        schema:
          type: string
      - name: flowEntryID
        in: path
        required: true
        description: The ID of the entry you are requesting.
        style: simple
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/FlowsEntriesRelationshipsFieldSlugRequest'
              contentMediaType: application/json
            examples:
              default:
                value:
                  data:
                  - id: '{RESOURCE_ID}'
                    type: '{RESOURCE_TYPE}'
                  - id: '{RESOURCE_ID}'
                    type: '{RESOURCE_TYPE}'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Relationships'
              examples:
                default:
                  value:
                    data:
                    - type: brand
                      id: 0d28e5b6-f615-4e1c-b038-275cfde97927
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - Entry Relationships
      summary: Delete an Entry Relationship
      description: "- In Commerce, deletes an entry relationship to one or more resources. \n- In Product Experience Manager, deletes an entry relationship with the product to which you want to associate the template.\n"
      operationId: deleteAnEntryRelationship
      parameters:
      - name: flowSlug
        in: path
        required: true
        description: The slug of the flow/template that the entry belongs to.
        style: simple
        schema:
          type: string
      - name: flowFieldSlug
        in: path
        required: true
        description: The slug of the field/attribute that the relationship belongs to.
        style: simple
        schema:
          type: string
      - name: flowEntryID
        in: path
        required: true
        description: The ID of the entry you are requesting.
        style: simple
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  responses:
    ValidationError:
      description: Bad request. The request failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missing-name:
              value:
                errors:
                - title: Validation Error
                  status: 400
                  detail: 'data.attributes.name: "name" is required'
    NotFound:
      description: Bad request. Not Found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internal-server-error:
              value:
                errors:
                - title: Not Found
                  status: 404
    InternalServerError:
      description: Internal server error. There was a system failure in the platform.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internal-server-error:
              value:
                errors:
                - status: 500
                  title: Internal Server Error
                  detail: There was an internal server error, you can report with your request id.
                  request_id: 635da56d-75a1-43cd-b696-7ab119756b3a
  schemas:
    ErrorResponse:
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    Relationships:
      title: Relationships
      type: object
      properties:
        id:
          $ref: '#/components/schemas/UUID'
        type:
          type: string
          description: Represents the type of object being returned.
          example: brand
    FlowsEntriesRelationshipsFieldSlugRequest:
      title: FlowsEntriesRelationshipsFieldSlugRequest
      type: object
      properties:
        data:
          type: array
          description: The data to be stored.
          items:
            type: object
            properties:
              id:
                $ref: '#/components/schemas/UUID'
              type:
                type: string
                description: The resource type of the object.
                examples:
                - customer
    Error:
      required:
      - status
      - title
      properties:
        status:
          type: integer
          format: int
          description: The HTTP response code of the error.
          example: 500
        title:
          type: string
          description: A brief summary of the error.
          example: Internal server error
        detail:
          type: string
          description: Optional additional detail about the error.
          example: An internal error has occurred.
        request_id:
          type: string
          description: Internal request ID.
          example: 00000000-0000-0000-0000-000000000000
        meta:
          type: object
          description: Additional supporting meta data for the error.
          example:
            missing_ids:
            - e7d50bd5-1833-43c0-9848-f9d325b08be8
    UUID:
      type: string
      description: A unique identifier for a resource.
      format: uuid
      example: 00000000-0000-0000-0000-000000000000
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer