產品

契約已確認 · 驗證中

詳細欄位參考以英文顯示;欄位名稱和 API 值保持不變。

Create a product, parent, variant or component product.

所需權限
{
  "anyOf": [
    {
      "allOf": [
        "products.write"
      ]
    }
  ]
}
參數
Idempotency-Key
header · 必填
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
請求
type
string · 必填
["single","parent","variant","bundle","assembly","virtual"]
sku
string · 選填
name
string · 必填
status
string · 選填
["active","inactive"]
description
string · 選填
barcode
string · 選填
upc
string · 選填
ean
string · 選填
gtin
string · 選填
brand
string · 選填
manufacturer
string · 選填
currency
string · 選填
salePrice
string · 選填
Non-negative decimal monetary amount as a string; never IEEE floating point.
trackInventory
boolean · 選填
parentId
string · 選填
Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number.
variantOptions
array · 選填
variantSelection
object · 選填
Selected axis/value pairs. Axis names and values must belong to the parent options; the normalized combination is unique within the parent.
components
array · 選填
shippingDefaults
object · 選填
Optional product shipping defaults, not an actual package or inventory quantity. Partial defaults can be stored; incomplete dimensions/weight do not create a valid shipping plan automatically.
customs
object · 選填
metadata
object · 選填
Client-owned string metadata only. No secrets or card data. Not used for authorization or business rules.
{
  "type": "single",
  "sku": "TEE-BLK-M",
  "name": "Black cotton T-shirt M",
  "currency": "USD",
  "salePrice": "19.95",
  "trackInventory": true
}
回傳結果
201Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
下載 V2 契約(JSON)

All six types are first-class products. parentId selects variants; component definitions are on bundle/assembly products. No separate variants or SKU inventory master is introduced.

所需權限
{
  "anyOf": [
    {
      "allOf": [
        "products.read"
      ]
    }
  ]
}
參數
cursor
query · 選填
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · 選填
integer
updatedAfter
query · 選填
Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan.
sku
query · 選填
string
parentId
query · 選填
string
type
query · 選填
string
status
query · 選填
string
query
query · 選填
string
回傳結果
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
下載 V2 契約(JSON)

Retrieve a product with options and components.

所需權限
{
  "anyOf": [
    {
      "allOf": [
        "products.read"
      ]
    }
  ]
}
參數
productId
path · 必填
string
回傳結果
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
下載 V2 契約(JSON)

Edit or inactivate a product.

所需權限
{
  "anyOf": [
    {
      "allOf": [
        "products.write"
      ]
    }
  ]
}
參數
productId
path · 必填
string
Idempotency-Key
header · 必填
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
If-Match
header · 必填
Exact strong ETag from the latest resource read. Required for PATCH; absent=428, stale=412. Quote/ship/split actions use explicit expectedVersion. An authorized idempotent replay returns its original committed result even if the resource is now newer.
請求
sku
string · 選填
name
string · 選填
status
string · 選填
["active","inactive"]
description
string · 選填
barcode
string · 選填
upc
string · 選填
ean
string · 選填
gtin
string · 選填
brand
string · 選填
manufacturer
string · 選填
currency
string · 選填
salePrice
string · 選填
Non-negative decimal monetary amount as a string; never IEEE floating point.
trackInventory
boolean · 選填
parentId
string · 選填
Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number.
variantOptions
array · 選填
variantSelection
object · 選填
Selected axis/value pairs. Axis names and values must belong to the parent options; the normalized combination is unique within the parent.
components
array · 選填
shippingDefaults
object · 選填
Optional product shipping defaults, not an actual package or inventory quantity. Partial defaults can be stored; incomplete dimensions/weight do not create a valid shipping plan automatically.
customs
object · 選填
metadata
object · 選填
Client-owned string metadata only. No secrets or card data. Not used for authorization or business rules.
{
  "status": "inactive"
}
回傳結果
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
412If-Match does not match the current resource revision.
422Field/business validation failed; details identify invalid fields.
428Required concurrency precondition missing.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
下載 V2 契約(JSON)

Sets status=inactive through the normal product service. Does not hard-delete, remove BOM links, cancel orders or mutate stock. Existing reference/type business guards still apply; replay returns the original result.

所需權限
{
  "anyOf": [
    {
      "allOf": [
        "products.write"
      ]
    }
  ]
}
參數
productId
path · 必填
string
Idempotency-Key
header · 必填
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
請求
reason
string · 必填
{
  "reason": "Product discontinued"
}
回傳結果
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
下載 V2 契約(JSON)