Product templates API
Esta página aún no está disponible en tu idioma.
Product templates API
GET /api/integrations/v2/{connection_id}/product-templates
The products customers see, each with its options and variants, keyset-paged on (updated_at, id).
A template’s updated_at moves with its name, description or options; a variant’s change moves that variant’s updated_at on /products.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
connection_id |
path | string (uuid) | yes | Your custom integration’s id; the connection whose secret signs the request. |
updated_since |
query | string (date-time), nullable | no | Only rows changed at or after this instant (inclusive). |
cursor |
query | string, nullable | no | The next_cursor of the previous page, as given. |
limit |
query | integer | no | Page size; at most 250 rows are answered whatever is asked. Default 50. |
Headers
| Header | Required | Description |
|---|---|---|
X-Yedran-Timestamp |
yes | Unix seconds; within five minutes of the server’s clock. |
X-Yedran-Signature |
yes | Lowercase hex HMAC-SHA256, keyed with the integration’s API secret, over METHOD\npath\ntimestamp\nsha256_hex(body). |
Yedran-Version |
no | Optional: the contract version, 2026-10 today; absent is 2026-10. Any other value is 400 unsupported_version. Every answer echoes the version served. |
Response 200
Schema ProductTemplatePageV2.
| Field | Type | Required | Description |
|---|---|---|---|
data |
array of ProductTemplateV2 | yes | |
next_cursor |
string, nullable | yes |
Example
curl -X GET "https://app.yedran.com/api/integrations/v2/{connection_id}/product-templates?limit=1" \ -H "X-Yedran-Timestamp: $TIMESTAMP" \ -H "X-Yedran-Signature: $SIGNATURE" \ -H "Yedran-Version: 2026-10"Response 200:
{ "data": [ { "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "external_id": "string", "name": "string", "description": "string", "options": [ { "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "name": "string", "values": [] } ], "variants": [ { "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "sku": "string", "active": false, "options": [] } ], "updated_at": "2026-10-02T09:00:00Z" } ], "next_cursor": "string"}Errors
| Code | Meaning |
|---|---|
| 400 | Bad Request |
| 401 | Unauthorized |
| 422 | Unprocessable Entity |
GET /api/integrations/v2/{connection_id}/product-templates/{template_id}
One template by our id (a product’s template_id).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
connection_id |
path | string (uuid) | yes | Your custom integration’s id; the connection whose secret signs the request. |
template_id |
path | string (uuid) | yes |
Headers
| Header | Required | Description |
|---|---|---|
X-Yedran-Timestamp |
yes | Unix seconds; within five minutes of the server’s clock. |
X-Yedran-Signature |
yes | Lowercase hex HMAC-SHA256, keyed with the integration’s API secret, over METHOD\npath\ntimestamp\nsha256_hex(body). |
Yedran-Version |
no | Optional: the contract version, 2026-10 today; absent is 2026-10. Any other value is 400 unsupported_version. Every answer echoes the version served. |
Response 200
Schema ProductTemplateV2.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | |
external_id |
string, nullable | yes | |
name |
string | yes | |
description |
string, nullable | yes | |
options |
array of TemplateOptionV2 | yes | |
variants |
array of TemplateVariantV2 | yes | |
updated_at |
string (date-time) | yes |
Example
curl -X GET "https://app.yedran.com/api/integrations/v2/{connection_id}/product-templates/3f2504e0-4f89-11d3-9a0c-0305e82c3301" \ -H "X-Yedran-Timestamp: $TIMESTAMP" \ -H "X-Yedran-Signature: $SIGNATURE" \ -H "Yedran-Version: 2026-10"Response 200:
{ "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "external_id": "string", "name": "string", "description": "string", "options": [ { "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "name": "string", "values": [ { "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "value": "string" } ] } ], "variants": [ { "id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "sku": "string", "active": false, "options": [ { "option_id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "name": "string", "value_id": "3f2504e0-4f89-11d3-9a0c-0305e82c3301", "value": "string" } ] } ], "updated_at": "2026-10-02T09:00:00Z"}Errors
| Code | Meaning |
|---|---|
| 400 | Bad Request |
| 401 | Unauthorized |
| 404 | Not Found |
| 422 | Unprocessable Entity |
Schemas
ProductTemplatePageV2
A page of the workspace’s templates, (updated_at, id) ascending.
| Field | Type | Required | Description |
|---|---|---|---|
data |
array of ProductTemplateV2 | yes | |
next_cursor |
string, nullable | yes |
ProductTemplateV2
The product a customer sees, over its variants (0177), as the v2 API shows it.
external_id is the caller’s id for it (its template_external_id), from the bindings’ product_templates resource. variants lists every variant, archived ones included (active: false), by position then sku; a template without options has exactly one. updated_at is the template row’s own: it moves when the name, the description or the options change, not when a variant is added, edited or archived — those move the variant’s updated_at on /products, which carries template_id.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | |
external_id |
string, nullable | yes | |
name |
string | yes | |
description |
string, nullable | yes | |
options |
array of TemplateOptionV2 | yes | |
variants |
array of TemplateVariantV2 | yes | |
updated_at |
string (date-time) | yes |
TemplateOptionV2
One option a template declares (“Color”), its values in display order.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | |
name |
string | yes | |
values |
array of TemplateOptionValueV2 | yes |
TemplateVariantV2
One variant of a template — a sellable unit, the id of GET /products/{id}.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | |
sku |
string | yes | |
active |
boolean | yes | |
options |
array of VariantOptionV2 | yes |
TemplateOptionValueV2
One value a template’s option offers, with the id a variant selects it by.
| Field | Type | Required | Description |
|---|---|---|---|
id |
string (uuid) | yes | |
value |
string | yes |
VariantOptionV2
A variant’s value of one option: the ids it is stored by, with today’s names.
| Field | Type | Required | Description |
|---|---|---|---|
option_id |
string (uuid) | yes | |
name |
string | yes | |
value_id |
string (uuid) | yes | |
value |
string | yes |