Elastic Path Extending Products with Templates API

```mdx-code-block import TemplatesOverview from '/docs/partials/pxm/templates/extendingproducts.mdx'; ```

OpenAPI Specification

elastic-path-extending-products-with-templates-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: 25.1126.6886238
  x-version-timestamp: 2025-11-26 19:10:23+00:00
  title: Addresses Introduction Account Addresses Extending Products with Templates API
  description: 'The Addresses API allows you to organize account addresses. Addresses are a sub-resource of `account` resources, an account can have multiple addresses, such as home, work, and neighbour.


    You can use an account address with either [client_credentials access token](/docs/api/authentication/create-an-access-token) or a combination of [implicit access token](/docs/api/authentication/create-an-access-token) and [Account Management authentication](/docs/api/accounts/post-v-2-account-members-tokens) token.

    '
  contact:
    name: Elastic Path
    url: https://www.elasticpath.com
    email: support@elasticpath.com
  license:
    url: https://elasticpath.dev
    name: MIT
servers:
- url: https://useast.api.elasticpath.com
  description: US East
- url: https://euwest.api.elasticpath.com
  description: EU West
security:
- BearerToken: []
tags:
- name: Extending Products with Templates
  description: '```mdx-code-block

    import TemplatesOverview from ''/docs/partials/pxm/templates/extendingproducts.mdx'';


    <TemplatesOverview />

    ```

    '
paths:
  /pcm/products/{productID}/relationships/templates:
    post:
      summary: Create a product template relationship
      description: Retrieves all the templates that are associated with the specified product.
      operationId: createProductTemplateRelationship
      parameters:
      - $ref: '#/components/parameters/product_id'
      tags:
      - Extending Products with Templates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_templates_request'
            examples:
              create-product-template-relationship:
                $ref: '#/components/examples/templates_relationship_request'
      responses:
        '201':
          description: Returns a created product template relationship.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/template_response'
              examples:
                product-templates:
                  $ref: '#/components/examples/template_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '409':
          $ref: '#/components/responses/write_conflict'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
    get:
      summary: Get all product template relationships
      operationId: getProductTemplateRelationships
      parameters:
      - $ref: '#/components/parameters/product_id'
      tags:
      - Extending Products with Templates
      responses:
        '200':
          description: Returns all product template relationships.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/template_response'
              examples:
                product-template-relationships:
                  $ref: '#/components/examples/template_response'
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '409':
          $ref: '#/components/responses/write_conflict'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
    delete:
      summary: Delete a product template relationship
      operationId: deleteProductTemplateRelationship
      parameters:
      - $ref: '#/components/parameters/product_id'
      tags:
      - Extending Products with Templates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_templates_request'
            examples:
              delete-product-template-relationship:
                $ref: '#/components/examples/templates_relationship_request'
      responses:
        '204':
          description: No Content
        '400':
          $ref: '#/components/responses/bad_request'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '409':
          $ref: '#/components/responses/write_conflict'
        '422':
          $ref: '#/components/responses/unprocessable_entity'
        '500':
          $ref: '#/components/responses/internal'
components:
  responses:
    bad_request:
      description: Bad request. The request failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            bad-request:
              value:
                errors:
                - title: Bad Request
                  detail: Could not parse the supplied filter
                  status: '400'
    write_conflict:
      description: Write conflict detected
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            internal-server-error:
              value:
                errors:
                - title: Conflict
                  status: '409'
                  detail: write conflict detected
    not_found:
      description: Bad Request. Not Found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            internal-server-error:
              value:
                errors:
                - title: Not Found
                  status: '404'
    unprocessable_entity:
      description: Bad request. The request failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            failed-validation:
              value:
                errors:
                - title: Failed Validation
                  status: '422'
                  detail: <XYZ> can not be empty
    forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          examples:
            internal-server-error:
              value:
                errors:
                - title: Forbidden
                  status: '403'
                  detail: entity owned by organization
    internal:
      description: Internal server error. There was a system failure in the platform.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          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:
    template_response:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                description: A unique identifier for a template generated when a template is created.
                type: string
              type:
                description: This represents the type of resource object being returned. Always `template`.
                type: string
                enum:
                - template
    error:
      required:
      - errors
      properties:
        errors:
          type: array
          items:
            required:
            - status
            - title
            properties:
              status:
                type: string
                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
    product_templates_request:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: The unique identifier of a template.
              type:
                type: string
                enum:
                - template
                description: This represents the type of resource object being returned. Always `template`.
  examples:
    template_response:
      value:
        data:
        - id: 43903bfa-5352-4a3d-9496-c9ab1229a175
          type: template
        - id: 50f56ce9-9381-43f6-8a52-5369a8b42e52
          type: template
    templates_relationship_request:
      value:
        data:
        - id: 43903bfa-5352-4a3d-9496-c9ab1229a175
          type: template
        - id: 50f56ce9-9381-43f6-8a52-5369a8b42e52
          type: template
  parameters:
    product_id:
      name: productID
      in: path
      schema:
        type: string
        example: 00000000-0000-0000-0000-000000000000
        x-postman-example: '{{productID}}'
      required: true
      description: A unique identifier for the product.
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer