Elastic Path Product File Relationships API

Products are the items or services that you might want to sell in your store. In Product Experience Manager, products can also have associated rich media assets, such as product images or a file containing additional product details. You can do this using [Files API](/docs/api/pxm/files). Once you have created your files, you associate files with your products using the [Create Product-File Relationships API](/docs/api/pxm/products/create-product-file-relationships).

Operations 4

GET /pcm/products/{productID}/relationships/files Get all product file relationships #
POST /pcm/products/{productID}/relationships/files Create a product file relationship #
PUT /pcm/products/{productID}/relationships/files Replace a product file relationship #
DELETE /pcm/products/{productID}/relationships/files Delete a product file relationships #

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-product-file-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-product-file-relationships-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Product Experience Manager Introduction Product File Relationships API
  description: '

    Product Experience Manager uses the PIM service to manage product information, hierarchies, and price books. Ideally, Product Experience Manager becomes the single source of truth for product data across your organization.


    In Commerce, the product data is stored separately from pricing, catalogs, and inventory. This separation means that you retrieve all product data only when you are managing product data and assets. Otherwise, when setting prices or managing inventory, you retrieve a reference to the product rather than the entire product, which makes the response times very fast.


    You also have the flexibility to create catalogs for different scenarios by combining hierarchies of products with a price book. Scenarios might include:


    - **Multiple geographical regions**. Display different catalogs in different regions with suitable pricing or combine product hierarchies from two different regions to display in a third region.

    - **Multiple channels**. Display different catalogs based on how a shopper accesses your store, such as through a mobile app or a web storefront.

    - **Direct to business versus direct to customers**. Offer different products and prices for business customers versus retail customers.

    - **Preferred customers**. Offer special pricing to preferred customers while displaying a standard price catalog to all other shoppers.

    - **Reward programs**. Enable reward programs where catalog prices drop after a certain spending level is reached.

    - **Product sales**. Offer sale items for a limited time.


    Scenarios are created by defining the context within which a catalog is displays. Contexts can be a customer ID, a channel, or any other user-defined tag that can be passed to the APIs from the front-end shopper experiences.

    '
  version: 26.0612.7739142
  x-version-timestamp: 2026-06-12 10:52:50+00:00
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: Product File Relationships
  description: 'Products are the items or services that you might want to sell in your store. In Product Experience Manager, products can also have associated rich media assets, such as product images or a file containing additional product details.


    You can do this using [Files API](/docs/api/pxm/files).


    Once you have created your files, you associate files with your products using the [Create Product-File Relationships API](/docs/api/pxm/products/create-product-file-relationships).

    '
paths:
  /pcm/products/{productID}/relationships/files:
    get:
      summary: Get all product file relationships
      description: Retrieves all files that are associated with the specified product.
      operationId: getProductFileRelationships
      tags:
      - Product File Relationships
      parameters:
      - $ref: '#/components/parameters/product_id'
      responses:
        '200':
          description: Returns all product file relationships.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/file_response'
              examples:
                product-file-relationships:
                  $ref: '#/components/examples/file_relationship_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'
    post:
      summary: Create a product file relationship
      operationId: createProductFileRelationships
      tags:
      - Product File Relationships
      parameters:
      - $ref: '#/components/parameters/product_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_files_request'
            examples:
              create-product-file-relationship:
                $ref: '#/components/examples/file_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'
    put:
      summary: Replace a product file relationship
      operationId: updateProductFileRelationships
      tags:
      - Product File Relationships
      parameters:
      - $ref: '#/components/parameters/product_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_files_request'
            examples:
              replace-product-file-relationship:
                $ref: '#/components/examples/file_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'
    delete:
      summary: Delete a product file relationships
      operationId: deleteProductFileRelationships
      tags:
      - Product File Relationships
      parameters:
      - $ref: '#/components/parameters/product_id'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/product_files_request'
            examples:
              delete-product-file-relationships:
                $ref: '#/components/examples/file_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:
  examples:
    file_relationship_request:
      value:
        data:
        - id: 43903bfa-5352-4a3d-9496-c9ab1229a175
          type: file
        - id: 50f56ce9-9381-43f6-8a52-5369a8b42e52
          type: file
    file_relationship_response:
      value:
        data:
        - id: 43903bfa-5352-4a3d-9496-c9ab1229a175
          type: file
        - id: 50f56ce9-9381-43f6-8a52-5369a8b42e52
          type: file
  responses:
    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'
    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
    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
    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
    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'
  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.
  schemas:
    product_files_request:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                description: A unique identifier for a file generated when a file is created.
                type: string
              type:
                description: This represents the type of resource being returned. Always `file`.
                type: string
                enum:
                - file
              meta:
                type: object
                properties:
                  tags:
                    description: The files associated with a product.
                    type: array
                    items:
                      type: string
                additionalProperties: false
    file_response:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: The unique identifier of the file.
              type:
                type: string
                description: This represents the type of resource object being returned. Always `file`.
                enum:
                - file
              meta:
                type: object
                properties:
                  created_at:
                    type:
                    - string
                    - 'null'
                    description: The date and time the file relationship was created.
                    format: date-time
                  tags:
                    type: array
                    description: The file tags.
                    items:
                      type: string
    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
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer