Commerce Enabled contract

List provider-neutral sellable catalog items

Returns partner-facing product and variant facts without POS inventory rows, reservation counts, company IDs, or provider-specific identifiers.

Runtime status: unavailable. This is a source contract, not a live access or availability guarantee. Learn more
GET/partner/ecom/v1/catalog/items

Authority

Profile
partner-service
Data class
partner_operational
Required operation
listPartnerCatalogItems
Subject scopes
No subject scopes declared for this operation.
partnerServiceBearer security scheme
{
  "type": "http",
  "scheme": "bearer",
  "bearerFormat": "JWT",
  "description": "Single-use, short-lived server credential with kid, issuer, token-use, audience, purpose, exact operation, assignment, partner, tenant, store, and channel claims. Browser code must never receive it."
}

Request

Request parameters
ParameterLocationRequirementSchema
audience

queryRequired{"type":"string","enum":["REC","MED"]}
search

queryOptional{"type":"string","minLength":1,"maxLength":200}
category

queryOptional{"type":"string","minLength":1,"maxLength":200}
limit

queryOptional{"type":"integer","minimum":1,"maximum":100,"default":50}
cursor

queryOptional{"type":"string","pattern":"^[A-Za-z0-9._~-]{1,2048}$"}
smokestack-api-version

headerRequired{"type":"string","const":"2026-07-28"}
x-request-id

headerOptional{"type":"string","pattern":"^[A-Za-z0-9._:~-]{1,128}$"}
x-correlation-id

headerOptional{"type":"string","pattern":"^[A-Za-z0-9._:~-]{1,128}$"}

Idempotency

{
  "required": false
}

Request examples

Templates for your server, not browser code. Replace every placeholder and use your approved origin. For requests with a body, construct request.json / requestBody / request_body from the schema.

# Replace placeholders using your approved server-side integration.
curl --request GET 'https://partner-api.invalid/partner/ecom/v1/catalog/items?audience=<audience>' \
  --header 'smokestack-api-version: 2026-07-28' \
  --header 'Authorization: Bearer <SERVER_ONLY_TOKEN>'

Responses

200 Successful partner response.
{
  "description": "Successful partner response.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerCatalogResponse"
      }
    }
  }
}
400 Invalid request, cursor, or missing idempotency key.
{
  "description": "Invalid request, cursor, or missing idempotency key.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
401 Partner authentication required.
{
  "description": "Partner authentication required.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
403 Partner authority does not permit this operation.
{
  "description": "Partner authority does not permit this operation.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
404 Partner-safe resource not found.
{
  "description": "Partner-safe resource not found.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
406 Requested API revision is unsupported.
{
  "description": "Requested API revision is unsupported.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
409 Idempotency, expiry, or stale-resource conflict.
{
  "description": "Idempotency, expiry, or stale-resource conflict.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
422 The request is valid JSON but cannot be accepted as commerce authority.
{
  "description": "The request is valid JSON but cannot be accepted as commerce authority.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
429 Partner rate limit exceeded.
{
  "description": "Partner rate limit exceeded.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    },
    "Retry-After": {
      "description": "Seconds until the caller may retry.",
      "schema": {
        "type": "integer",
        "minimum": 0
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
500 An unexpected error occurred without exposing internal details.
{
  "description": "An unexpected error occurred without exposing internal details.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
501 The contract operation is published but is not enabled for this partner. Contract publication is not provider activation.
{
  "description": "The contract operation is published but is not enabled for this partner. Contract publication is not provider activation.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}
503 An authoritative dependency is unavailable; the service does not guess.
{
  "description": "An authoritative dependency is unavailable; the service does not guess.",
  "headers": {
    "SMOKESTACK-API-Version": {
      "description": "The negotiated compatible contract revision.",
      "schema": {
        "type": "string",
        "const": "2026-07-28"
      }
    },
    "X-Request-ID": {
      "description": "The request identifier accepted from the caller or generated by SMOKESTACK.",
      "schema": {
        "type": "string"
      }
    },
    "X-Correlation-ID": {
      "description": "The end-to-end correlation identifier.",
      "schema": {
        "type": "string"
      }
    },
    "Deprecation": {
      "description": "RFC 9745 Structured Field Date (`@` followed by Unix seconds) when an operation or revision is deprecated.",
      "schema": {
        "type": "string",
        "pattern": "^@[0-9]+$",
        "example": "@1814400000"
      }
    },
    "Sunset": {
      "description": "RFC 8594 HTTP-date when a deprecated operation has a scheduled retirement; servers emit IMF-fixdate in GMT.",
      "schema": {
        "type": "string",
        "example": "Fri, 28 Jan 2028 00:00:00 GMT"
      }
    },
    "Link": {
      "description": "Deprecation or successor documentation link; deprecation notices include rel=\"deprecation\".",
      "schema": {
        "type": "string"
      }
    },
    "Retry-After": {
      "description": "Seconds until the caller may retry when known.",
      "schema": {
        "type": "integer",
        "minimum": 0
      }
    }
  },
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/EcomPartnerError"
      }
    }
  }
}

Referenced schemas

Only schemas reachable from this operation are shown. The revision-pinned OpenAPI download includes their complete definitions.

EcomPartnerCatalogResponse
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "productId": {
            "type": "string",
            "format": "uuid"
          },
          "variantId": {
            "type": "string",
            "format": "uuid"
          },
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "variantName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "description": {
            "type": "string",
            "maxLength": 10000
          },
          "category": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "brand": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "audiences": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "REC",
                "MED"
              ]
            },
            "minItems": 1
          },
          "media": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "altText": {
                  "type": "string",
                  "maxLength": 500
                },
                "sortOrder": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "url",
                "sortOrder"
              ],
              "additionalProperties": {}
            }
          },
          "packagePotency": {
            "type": "object",
            "properties": {
              "thcMg": {
                "type": "number",
                "minimum": 0
              },
              "cbdMg": {
                "type": "number",
                "minimum": 0
              },
              "cbnMg": {
                "type": "number",
                "minimum": 0
              },
              "cbgMg": {
                "type": "number",
                "minimum": 0
              },
              "thcvMg": {
                "type": "number",
                "minimum": 0
              },
              "cbcMg": {
                "type": "number",
                "minimum": 0
              }
            },
            "additionalProperties": false
          },
          "price": {
            "type": "object",
            "properties": {
              "unitPrice": {
                "type": "object",
                "properties": {
                  "amountMinor": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "currency": {
                    "type": "string",
                    "enum": [
                      "USD"
                    ]
                  }
                },
                "required": [
                  "amountMinor",
                  "currency"
                ],
                "additionalProperties": {}
              },
              "effectiveUnitPrice": {
                "type": "object",
                "properties": {
                  "amountMinor": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "currency": {
                    "type": "string",
                    "enum": [
                      "USD"
                    ]
                  }
                },
                "required": [
                  "amountMinor",
                  "currency"
                ],
                "additionalProperties": {}
              },
              "compareAtPrice": {
                "type": "object",
                "properties": {
                  "amountMinor": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "currency": {
                    "type": "string",
                    "enum": [
                      "USD"
                    ]
                  }
                },
                "required": [
                  "amountMinor",
                  "currency"
                ],
                "additionalProperties": {}
              },
              "discounts": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 128
                    },
                    "label": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 200
                    },
                    "amount": {
                      "type": "object",
                      "properties": {
                        "amountMinor": {
                          "type": "integer",
                          "minimum": 0
                        },
                        "currency": {
                          "type": "string",
                          "enum": [
                            "USD"
                          ]
                        }
                      },
                      "required": [
                        "amountMinor",
                        "currency"
                      ],
                      "additionalProperties": {}
                    }
                  },
                  "required": [
                    "code",
                    "label",
                    "amount"
                  ],
                  "additionalProperties": {}
                }
              },
              "freshness": {
                "type": "object",
                "properties": {
                  "observedAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "staleAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "expiresAt": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "observedAt",
                  "staleAt",
                  "expiresAt"
                ],
                "additionalProperties": {}
              }
            },
            "required": [
              "unitPrice",
              "effectiveUnitPrice",
              "discounts",
              "freshness"
            ],
            "additionalProperties": {}
          },
          "availability": {
            "type": "object",
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "IN_STOCK",
                  "LOW_STOCK",
                  "OUT_OF_STOCK",
                  "UNAVAILABLE"
                ]
              },
              "quantityAvailable": {
                "type": "integer",
                "minimum": 0
              },
              "fulfillmentMethods": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "PICKUP",
                    "CURBSIDE",
                    "DELIVERY"
                  ]
                }
              },
              "freshness": {
                "type": "object",
                "properties": {
                  "observedAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "staleAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "expiresAt": {
                    "type": "string",
                    "format": "date-time"
                  }
                },
                "required": [
                  "observedAt",
                  "staleAt",
                  "expiresAt"
                ],
                "additionalProperties": {}
              }
            },
            "required": [
              "state",
              "fulfillmentMethods",
              "freshness"
            ],
            "additionalProperties": {}
          },
          "sourceTimestamps": {
            "type": "object",
            "properties": {
              "catalogAt": {
                "type": "string",
                "format": "date-time"
              },
              "pricingAt": {
                "type": "string",
                "format": "date-time"
              },
              "availabilityAt": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "catalogAt",
              "pricingAt",
              "availabilityAt"
            ],
            "additionalProperties": {}
          }
        },
        "required": [
          "productId",
          "variantId",
          "sku",
          "name",
          "variantName",
          "tags",
          "audiences",
          "media",
          "price",
          "availability",
          "sourceTimestamps"
        ],
        "additionalProperties": {}
      }
    },
    "page": {
      "type": "object",
      "properties": {
        "nextCursor": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._~-]{1,2048}$"
        },
        "cursorExpiresAt": {
          "type": "string",
          "format": "date-time"
        }
      },
      "additionalProperties": {}
    },
    "meta": {
      "type": "object",
      "properties": {
        "requestId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:~-]{1,128}$"
        },
        "correlationId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:~-]{1,128}$"
        },
        "apiVersion": {
          "type": "string",
          "enum": [
            "2026-07-28",
            "2026-08-09"
          ]
        },
        "generatedAt": {
          "type": "string",
          "format": "date-time"
        }
      },
      "required": [
        "requestId",
        "correlationId",
        "apiVersion",
        "generatedAt"
      ],
      "additionalProperties": {}
    }
  },
  "required": [
    "data",
    "page",
    "meta"
  ],
  "additionalProperties": {}
}
EcomPartnerError
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "enum": [
        "invalid_request",
        "authentication_required",
        "permission_denied",
        "resource_not_found",
        "api_version_not_supported",
        "invalid_cursor",
        "idempotency_key_required",
        "idempotency_conflict",
        "quote_rejected",
        "quote_expired",
        "resource_stale",
        "unsupported_currency",
        "rate_limited",
        "capability_unavailable",
        "upstream_unavailable",
        "internal_error"
      ]
    },
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "requestId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:~-]{1,128}$"
    },
    "correlationId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:~-]{1,128}$"
    },
    "details": {
      "type": "object",
      "additionalProperties": {}
    },
    "retryable": {
      "type": "boolean"
    }
  },
  "required": [
    "code",
    "message",
    "requestId",
    "correlationId",
    "retryable"
  ],
  "additionalProperties": {}
}