Elastic Path Extending Products with Templates API
```mdx-code-block import TemplatesOverview from '/docs/partials/pxm/templates/extendingproducts.mdx'; ```
```mdx-code-block import TemplatesOverview from '/docs/partials/pxm/templates/extendingproducts.mdx'; ```
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