@vitrina/api 15.11.2 → 15.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -10496,7 +10496,7 @@ interface paths {
10496
10496
  name: string;
10497
10497
  /** Format: uuid */
10498
10498
  tenant_id?: string;
10499
- scopes: ("ai_agents:read" | "ai_agents:write" | "ai_agents:simulate" | "conversations:read" | "conversations:write" | "contacts:read" | "contacts:write" | "tickets:read" | "tickets:write" | "tickets:claim" | "leads:read" | "leads:write" | "leads:intake" | "pipelines:read" | "pipelines:write" | "stages:read" | "stages:write" | "functions:read" | "functions:write" | "kb:read" | "kb:write" | "messages:read" | "messages:write" | "messages:send" | "tools:read" | "tags:read" | "tags:write" | "api_keys:read" | "api_keys:write" | "personal_tokens:read" | "personal_tokens:write" | "notifications:read" | "notifications:write" | "audit:read" | "analytics:read" | "analytics:write" | "dealer_reports:read" | "tenant:read" | "tenant:write" | "tenant:delete" | "webhooks:read" | "webhooks:write" | "messaging_accounts:read" | "messaging_accounts:write" | "provisioning:read" | "provisioning:write" | "voice_drift:read" | "worker_failures:read" | "worker_failures:write" | "dealer_sites:read" | "dealer_sites:write" | "mcp_servers:read" | "mcp_servers:write" | "memberships:read" | "memberships:write" | "teams:read" | "teams:write" | "help_centers:read" | "help_centers:write" | "labels:read" | "labels:write" | "macros:read" | "macros:write" | "slas:read" | "slas:write" | "routing:read" | "routing:write" | "triggers:read" | "triggers:write" | "followups:read" | "followups:write" | "followups:manage" | "custom_attributes:read" | "custom_attributes:write" | "companies:read" | "companies:write" | "roles:read" | "roles:write" | "integrations:read" | "integrations:write" | "clinic:read" | "clinic:write" | "clinic_patients:read" | "clinic_patients:write" | "clinic_record:read" | "clinic_record:write" | "clinic_money:read" | "clinic_money:write" | "clinic_admin:write" | "clinic_insights:read" | "sandbox:read" | "sandbox:write" | "ads:read" | "ads:write" | "healthatom:read" | "healthatom:write" | "reservo:read" | "reservo:write" | "rexplus:read" | "rexplus:write" | "billing:read" | "billing:write" | "copilot:read" | "copilot:write" | "erp_copilot:use" | "tool_credentials:read" | "tool_credentials:write" | "tool_invocations:read" | "corrections:read" | "corrections:write" | "marketplace:read" | "marketplace:write" | "stock:read" | "storefront_events:write" | "pricing:read" | "pricing:write" | "roi:read" | "appointments:read" | "appointments:write" | "appointments:delete" | "schedule_config:write" | "appointments:intake" | "appointment_types:read" | "appointment_types:write" | "service_lifecycle:read" | "service_lifecycle:write" | "outbound_approvals:read" | "outbound_approvals:write" | "outbound_holds:read" | "outbound_holds:write" | "campaigns:read" | "campaigns:write" | "consignments:read" | "consignments:write" | "stock_dedup:read" | "stock_dedup:write" | "stock_photo_mirror:read" | "stock_photo_mirror:write" | "stock_retirement:read" | "stock_retirement:write" | "dealership_economics:read" | "dealership_economics:write" | "document_templates:read" | "document_templates:write" | "vehicle_registry:read" | "vehicle_registry:write" | "vehicle_pipeline:read" | "vehicle_pipeline:write" | "sale_notes:read" | "sale_notes:write" | "sale_notes:void" | "transfer_cases:read" | "transfer_cases:write" | "credit_applications:read" | "credit_applications:write" | "seller_compensation:read" | "seller_compensation:write" | "sales_leaderboard:read" | "quotes:read" | "quotes:write" | "quotes:void" | "reservations:read" | "reservations:write" | "reservations:void" | "reservations:dispose_abono" | "organization_legal:read" | "organization_legal:write" | "purchase_notes:read" | "purchase_notes:write" | "purchase_notes:void" | "document_payments:read" | "document_payments:write" | "tenant_bank_accounts:read" | "tenant_bank_accounts:write" | "bank_movements:read" | "bank_movements:write" | "payments:read" | "payments:write" | "payments:reverse" | "orders:read" | "orders:write" | "price_approval:read" | "price_approval:request" | "price_approval:approve" | "cotizacion_discount:approve" | "legal:read" | "legal:write")[];
10499
+ scopes: ("ai_agents:read" | "ai_agents:write" | "ai_agents:simulate" | "conversations:read" | "conversations:write" | "contacts:read" | "contacts:write" | "tickets:read" | "tickets:write" | "tickets:claim" | "leads:read" | "leads:write" | "leads:intake" | "pipelines:read" | "pipelines:write" | "stages:read" | "stages:write" | "functions:read" | "functions:write" | "kb:read" | "kb:write" | "messages:read" | "messages:write" | "messages:send" | "tools:read" | "tags:read" | "tags:write" | "api_keys:read" | "api_keys:write" | "personal_tokens:read" | "personal_tokens:write" | "notifications:read" | "notifications:write" | "audit:read" | "analytics:read" | "analytics:write" | "dealer_reports:read" | "tenant:read" | "tenant:write" | "tenant:delete" | "webhooks:read" | "webhooks:write" | "messaging_accounts:read" | "messaging_accounts:write" | "provisioning:read" | "provisioning:write" | "voice_drift:read" | "worker_failures:read" | "worker_failures:write" | "dealer_sites:read" | "dealer_sites:write" | "mcp_servers:read" | "mcp_servers:write" | "memberships:read" | "memberships:write" | "teams:read" | "teams:write" | "help_centers:read" | "help_centers:write" | "labels:read" | "labels:write" | "macros:read" | "macros:write" | "slas:read" | "slas:write" | "routing:read" | "routing:write" | "triggers:read" | "triggers:write" | "followups:read" | "followups:write" | "followups:manage" | "custom_attributes:read" | "custom_attributes:write" | "companies:read" | "companies:write" | "roles:read" | "roles:write" | "integrations:read" | "integrations:write" | "clinic:read" | "clinic:write" | "clinic_patients:read" | "clinic_patients:write" | "clinic_record:read" | "clinic_record:write" | "clinic_money:read" | "clinic_money:write" | "clinic_admin:write" | "clinic_insights:read" | "sandbox:read" | "sandbox:write" | "ads:read" | "ads:write" | "healthatom:read" | "healthatom:write" | "reservo:read" | "reservo:write" | "rexplus:read" | "rexplus:write" | "billing:read" | "billing:write" | "copilot:read" | "copilot:write" | "erp_copilot:use" | "tool_credentials:read" | "tool_credentials:write" | "tool_invocations:read" | "corrections:read" | "corrections:write" | "marketplace:read" | "marketplace:write" | "stock:read" | "storefront_events:write" | "pricing:read" | "pricing:write" | "roi:read" | "appointments:read" | "appointments:write" | "appointments:delete" | "schedule_config:write" | "appointments:intake" | "appointment_types:read" | "appointment_types:write" | "service_lifecycle:read" | "service_lifecycle:write" | "outbound_approvals:read" | "outbound_approvals:write" | "outbound_holds:read" | "outbound_holds:write" | "campaigns:read" | "campaigns:write" | "consignments:read" | "consignments:write" | "stock_dedup:read" | "stock_dedup:write" | "stock_photo_mirror:read" | "stock_photo_mirror:write" | "stock_retirement:read" | "stock_retirement:write" | "dealership_economics:read" | "dealership_economics:write" | "document_templates:read" | "document_templates:write" | "vehicle_registry:read" | "vehicle_registry:write" | "vehicle_pipeline:read" | "vehicle_pipeline:write" | "sale_notes:read" | "sale_notes:write" | "sale_notes:void" | "transfer_cases:read" | "transfer_cases:write" | "credit_applications:read" | "credit_applications:write" | "seller_compensation:read" | "seller_compensation:write" | "sales_leaderboard:read" | "quotes:read" | "quotes:write" | "quotes:void" | "reservations:read" | "reservations:write" | "reservations:void" | "reservations:dispose_abono" | "organization_legal:read" | "organization_legal:write" | "purchase_notes:read" | "purchase_notes:write" | "purchase_notes:void" | "document_payments:read" | "document_payments:write" | "tenant_bank_accounts:read" | "tenant_bank_accounts:write" | "bank_movements:read" | "bank_movements:write" | "payments:read" | "payments:write" | "payments:reverse" | "orders:read" | "orders:write" | "orders:checkout" | "price_approval:read" | "price_approval:request" | "price_approval:approve" | "cotizacion_discount:approve" | "legal:read" | "legal:write")[];
10500
10500
  /** Format: date-time */
10501
10501
  expires_at?: string;
10502
10502
  /** @description false mints an `sk_test_` key bound to this workspace's sandbox (409 SANDBOX_NOT_PROVISIONED when it has none yet). Default true. */
@@ -121002,7 +121002,7 @@ interface paths {
121002
121002
  */
121003
121003
  "application/json": {
121004
121004
  name: string;
121005
- scopes?: ("ai_agents:read" | "ai_agents:write" | "ai_agents:simulate" | "conversations:read" | "conversations:write" | "contacts:read" | "contacts:write" | "tickets:read" | "tickets:write" | "tickets:claim" | "leads:read" | "leads:write" | "leads:intake" | "pipelines:read" | "pipelines:write" | "stages:read" | "stages:write" | "functions:read" | "functions:write" | "kb:read" | "kb:write" | "messages:read" | "messages:write" | "messages:send" | "tools:read" | "tags:read" | "tags:write" | "api_keys:read" | "api_keys:write" | "personal_tokens:read" | "personal_tokens:write" | "notifications:read" | "notifications:write" | "audit:read" | "analytics:read" | "analytics:write" | "dealer_reports:read" | "tenant:read" | "tenant:write" | "tenant:delete" | "webhooks:read" | "webhooks:write" | "messaging_accounts:read" | "messaging_accounts:write" | "provisioning:read" | "provisioning:write" | "voice_drift:read" | "worker_failures:read" | "worker_failures:write" | "dealer_sites:read" | "dealer_sites:write" | "mcp_servers:read" | "mcp_servers:write" | "memberships:read" | "memberships:write" | "teams:read" | "teams:write" | "help_centers:read" | "help_centers:write" | "labels:read" | "labels:write" | "macros:read" | "macros:write" | "slas:read" | "slas:write" | "routing:read" | "routing:write" | "triggers:read" | "triggers:write" | "followups:read" | "followups:write" | "followups:manage" | "custom_attributes:read" | "custom_attributes:write" | "companies:read" | "companies:write" | "roles:read" | "roles:write" | "integrations:read" | "integrations:write" | "clinic:read" | "clinic:write" | "clinic_patients:read" | "clinic_patients:write" | "clinic_record:read" | "clinic_record:write" | "clinic_money:read" | "clinic_money:write" | "clinic_admin:write" | "clinic_insights:read" | "sandbox:read" | "sandbox:write" | "ads:read" | "ads:write" | "healthatom:read" | "healthatom:write" | "reservo:read" | "reservo:write" | "rexplus:read" | "rexplus:write" | "billing:read" | "billing:write" | "copilot:read" | "copilot:write" | "erp_copilot:use" | "tool_credentials:read" | "tool_credentials:write" | "tool_invocations:read" | "corrections:read" | "corrections:write" | "marketplace:read" | "marketplace:write" | "stock:read" | "storefront_events:write" | "pricing:read" | "pricing:write" | "roi:read" | "appointments:read" | "appointments:write" | "appointments:delete" | "schedule_config:write" | "appointments:intake" | "appointment_types:read" | "appointment_types:write" | "service_lifecycle:read" | "service_lifecycle:write" | "outbound_approvals:read" | "outbound_approvals:write" | "outbound_holds:read" | "outbound_holds:write" | "campaigns:read" | "campaigns:write" | "consignments:read" | "consignments:write" | "stock_dedup:read" | "stock_dedup:write" | "stock_photo_mirror:read" | "stock_photo_mirror:write" | "stock_retirement:read" | "stock_retirement:write" | "dealership_economics:read" | "dealership_economics:write" | "document_templates:read" | "document_templates:write" | "vehicle_registry:read" | "vehicle_registry:write" | "vehicle_pipeline:read" | "vehicle_pipeline:write" | "sale_notes:read" | "sale_notes:write" | "sale_notes:void" | "transfer_cases:read" | "transfer_cases:write" | "credit_applications:read" | "credit_applications:write" | "seller_compensation:read" | "seller_compensation:write" | "sales_leaderboard:read" | "quotes:read" | "quotes:write" | "quotes:void" | "reservations:read" | "reservations:write" | "reservations:void" | "reservations:dispose_abono" | "organization_legal:read" | "organization_legal:write" | "purchase_notes:read" | "purchase_notes:write" | "purchase_notes:void" | "document_payments:read" | "document_payments:write" | "tenant_bank_accounts:read" | "tenant_bank_accounts:write" | "bank_movements:read" | "bank_movements:write" | "payments:read" | "payments:write" | "payments:reverse" | "orders:read" | "orders:write" | "price_approval:read" | "price_approval:request" | "price_approval:approve" | "cotizacion_discount:approve" | "legal:read" | "legal:write")[];
121005
+ scopes?: ("ai_agents:read" | "ai_agents:write" | "ai_agents:simulate" | "conversations:read" | "conversations:write" | "contacts:read" | "contacts:write" | "tickets:read" | "tickets:write" | "tickets:claim" | "leads:read" | "leads:write" | "leads:intake" | "pipelines:read" | "pipelines:write" | "stages:read" | "stages:write" | "functions:read" | "functions:write" | "kb:read" | "kb:write" | "messages:read" | "messages:write" | "messages:send" | "tools:read" | "tags:read" | "tags:write" | "api_keys:read" | "api_keys:write" | "personal_tokens:read" | "personal_tokens:write" | "notifications:read" | "notifications:write" | "audit:read" | "analytics:read" | "analytics:write" | "dealer_reports:read" | "tenant:read" | "tenant:write" | "tenant:delete" | "webhooks:read" | "webhooks:write" | "messaging_accounts:read" | "messaging_accounts:write" | "provisioning:read" | "provisioning:write" | "voice_drift:read" | "worker_failures:read" | "worker_failures:write" | "dealer_sites:read" | "dealer_sites:write" | "mcp_servers:read" | "mcp_servers:write" | "memberships:read" | "memberships:write" | "teams:read" | "teams:write" | "help_centers:read" | "help_centers:write" | "labels:read" | "labels:write" | "macros:read" | "macros:write" | "slas:read" | "slas:write" | "routing:read" | "routing:write" | "triggers:read" | "triggers:write" | "followups:read" | "followups:write" | "followups:manage" | "custom_attributes:read" | "custom_attributes:write" | "companies:read" | "companies:write" | "roles:read" | "roles:write" | "integrations:read" | "integrations:write" | "clinic:read" | "clinic:write" | "clinic_patients:read" | "clinic_patients:write" | "clinic_record:read" | "clinic_record:write" | "clinic_money:read" | "clinic_money:write" | "clinic_admin:write" | "clinic_insights:read" | "sandbox:read" | "sandbox:write" | "ads:read" | "ads:write" | "healthatom:read" | "healthatom:write" | "reservo:read" | "reservo:write" | "rexplus:read" | "rexplus:write" | "billing:read" | "billing:write" | "copilot:read" | "copilot:write" | "erp_copilot:use" | "tool_credentials:read" | "tool_credentials:write" | "tool_invocations:read" | "corrections:read" | "corrections:write" | "marketplace:read" | "marketplace:write" | "stock:read" | "storefront_events:write" | "pricing:read" | "pricing:write" | "roi:read" | "appointments:read" | "appointments:write" | "appointments:delete" | "schedule_config:write" | "appointments:intake" | "appointment_types:read" | "appointment_types:write" | "service_lifecycle:read" | "service_lifecycle:write" | "outbound_approvals:read" | "outbound_approvals:write" | "outbound_holds:read" | "outbound_holds:write" | "campaigns:read" | "campaigns:write" | "consignments:read" | "consignments:write" | "stock_dedup:read" | "stock_dedup:write" | "stock_photo_mirror:read" | "stock_photo_mirror:write" | "stock_retirement:read" | "stock_retirement:write" | "dealership_economics:read" | "dealership_economics:write" | "document_templates:read" | "document_templates:write" | "vehicle_registry:read" | "vehicle_registry:write" | "vehicle_pipeline:read" | "vehicle_pipeline:write" | "sale_notes:read" | "sale_notes:write" | "sale_notes:void" | "transfer_cases:read" | "transfer_cases:write" | "credit_applications:read" | "credit_applications:write" | "seller_compensation:read" | "seller_compensation:write" | "sales_leaderboard:read" | "quotes:read" | "quotes:write" | "quotes:void" | "reservations:read" | "reservations:write" | "reservations:void" | "reservations:dispose_abono" | "organization_legal:read" | "organization_legal:write" | "purchase_notes:read" | "purchase_notes:write" | "purchase_notes:void" | "document_payments:read" | "document_payments:write" | "tenant_bank_accounts:read" | "tenant_bank_accounts:write" | "bank_movements:read" | "bank_movements:write" | "payments:read" | "payments:write" | "payments:reverse" | "orders:read" | "orders:write" | "orders:checkout" | "price_approval:read" | "price_approval:request" | "price_approval:approve" | "cotizacion_discount:approve" | "legal:read" | "legal:write")[];
121006
121006
  /** Format: date-time */
121007
121007
  expires_at?: string | null;
121008
121008
  };
@@ -183566,6 +183566,8 @@ interface paths {
183566
183566
  *
183567
183567
  * Each row carries `origin` (`native` | `shopify` | `woocommerce`), `external_id`, and `variants[]` — every variant with its own `sku`, `price_clp` (null = the product’s price), `available_quantity`, `available` and a display `label`. A product’s `available_quantity` is the sum of its active variants’ stock when it has variants.
183568
183568
  *
183569
+ * Read `available_quantity` is what can be SOLD now: `on_hand_quantity` (the counted units, what a stock sync writes) minus `held_quantity` (units kept 15 minutes for unpaid storefront checkouts, `POST /orders/checkout`).
183570
+ *
183569
183571
  * Two defaults worth stating because they differ. `active` defaults to **true** — inactive products are hidden unless you ask for them. `in_stock` defaults to **false**, so products with `available_quantity: 0` ARE included; pass `in_stock=true` for the sellable-today list. `sort` defaults to `price_asc`.
183570
183572
  *
183571
183573
  * The response carries rows and nothing else — there is no `total`, so paginate by asking for `limit + 1` rather than by counting.
@@ -183796,6 +183798,9 @@ interface paths {
183796
183798
  name: string;
183797
183799
  value: string;
183798
183800
  }[];
183801
+ attributes?: {
183802
+ [key: string]: string | number | boolean;
183803
+ };
183799
183804
  price_amount?: number | null;
183800
183805
  available_quantity?: number;
183801
183806
  inventory_tracked?: boolean;
@@ -184473,7 +184478,7 @@ interface paths {
184473
184478
  put?: never;
184474
184479
  /**
184475
184480
  * Add a variant to a product
184476
- * @description One purchasable variant (a talla × color combination) with its own `options` (ordered `[{name, value}]`), `sku`, `price_amount` (whole CLP; null = the product’s price) and `available_quantity`. The product’s `available_quantity` becomes the sum of its active variants’ stock. `inventory_tracked: false` or `inventory_policy: "continue"` keep a variant sellable at zero stock.
184481
+ * @description One purchasable variant (a talla × color combination) with its own `options` (ordered `[{name, value}]`), `sku`, `price_amount` (whole CLP; null = the product’s price) and `available_quantity`. The product’s `available_quantity` becomes the sum of its active variants’ stock. `inventory_tracked: false` or `inventory_policy: "continue"` keep a variant sellable at zero stock. `attributes` is a small flat map of per-variant facts (string → string | number | boolean; at most 20 keys, 2 KB), e.g. `{"battery_min_pct": 99, "battery_max_pct": 100}`; it reads `{}` when none.
184477
184482
  *
184478
184483
  * Only a native product’s variants are edited here: a synced product answers 409. Answers 201 with the variant (`available`, `label`).
184479
184484
  */
@@ -184504,6 +184509,10 @@ interface paths {
184504
184509
  * "value": "M"
184505
184510
  * }
184506
184511
  * ],
184512
+ * "attributes": {
184513
+ * "battery_min_pct": 99,
184514
+ * "battery_max_pct": 100
184515
+ * },
184507
184516
  * "available_quantity": 4
184508
184517
  * }
184509
184518
  */
@@ -184515,6 +184524,9 @@ interface paths {
184515
184524
  name: string;
184516
184525
  value: string;
184517
184526
  }[];
184527
+ attributes?: {
184528
+ [key: string]: string | number | boolean;
184529
+ };
184518
184530
  price_amount?: number | null;
184519
184531
  available_quantity?: number;
184520
184532
  inventory_tracked?: boolean;
@@ -184558,6 +184570,10 @@ interface paths {
184558
184570
  * "m",
184559
184571
  * "negr"
184560
184572
  * ],
184573
+ * "attributes": {
184574
+ * "battery_min_pct": 99,
184575
+ * "battery_max_pct": 100
184576
+ * },
184561
184577
  * "price_clp": null,
184562
184578
  * "available_quantity": 4,
184563
184579
  * "inventory_tracked": true,
@@ -184732,7 +184748,9 @@ interface paths {
184732
184748
  head?: never;
184733
184749
  /**
184734
184750
  * Update a variant
184735
- * @description Applies only the fields present. `options` is replaced wholesale. Setting `available_quantity` updates the product’s rolled-up stock in the same write. A synced product answers 409; a variant of another product answers 404.
184751
+ * @description Applies only the fields present. `options` and `attributes` are replaced wholesale (send the full map; `{}` clears it). Setting `available_quantity` updates the product’s rolled-up stock in the same write. A synced product answers 409; a variant of another product answers 404.
184752
+ *
184753
+ * `available_quantity` WRITTEN here is the ON-HAND count (the units you have). Units held for unpaid storefront checkouts are separate rows a write never erases: the response (and every read) returns `on_hand_quantity`, `held_quantity` and `available_quantity` = on hand − held.
184736
184754
  */
184737
184755
  patch: {
184738
184756
  parameters: {
@@ -184759,6 +184777,9 @@ interface paths {
184759
184777
  name: string;
184760
184778
  value: string;
184761
184779
  }[];
184780
+ attributes?: {
184781
+ [key: string]: string | number | boolean;
184782
+ };
184762
184783
  price_amount?: number | null;
184763
184784
  available_quantity?: number;
184764
184785
  inventory_tracked?: boolean;
@@ -184802,6 +184823,10 @@ interface paths {
184802
184823
  * "m",
184803
184824
  * "negr"
184804
184825
  * ],
184826
+ * "attributes": {
184827
+ * "battery_min_pct": 99,
184828
+ * "battery_max_pct": 100
184829
+ * },
184805
184830
  * "price_clp": null,
184806
184831
  * "available_quantity": 2,
184807
184832
  * "inventory_tracked": true,
@@ -212398,6 +212423,452 @@ interface paths {
212398
212423
  patch?: never;
212399
212424
  trace?: never;
212400
212425
  };
212426
+ "/orders/checkout": {
212427
+ parameters: {
212428
+ query?: never;
212429
+ header?: never;
212430
+ path?: never;
212431
+ cookie?: never;
212432
+ };
212433
+ get?: never;
212434
+ put?: never;
212435
+ /**
212436
+ * Open a storefront guest checkout
212437
+ * @description A tenant’s own website (server side) sells with one call: the buyer (name, RUT, phone and/or email), the variants and the delivery method in; an order and its Mercado Pago link out. The buyer is found by email, then phone, or created; their RUT fills the contact’s empty one; an opt-in is recorded; the visit’s ad touch is kept for the Purchase. **Prices come from the catalog** (no price field); only native products.
212438
+ *
212439
+ * **Holds.** A variant with inventory policy `deny` («Solo con stock») holds the requested units for 15 minutes: available = on hand − active holds, and the link stops taking money when the hold ends. With fewer units available the call is refused with 409 `insufficient_stock` (`details.available`). Two checkouts for the last unit: exactly one succeeds. A `continue` variant (made to order) never refuses and holds nothing. The hold ends when the payment settles (the sale: on hand goes down by the units), when the order is cancelled, or when it expires (the order is then cancelled and `order.status_changed` fires).
212440
+ *
212441
+ * **event_id** is the browser InitiateCheckout `eventID`: the server InitiateCheckout (when the buyer opens `checkout_url`) and the Purchase ship under it, so Meta deduplicates. It is also the idempotency key (200 + `replayed: true`).
212442
+ *
212443
+ * Refusals (`error.details.reason`): 400 `buyer_contact_required` · `invalid_phone` · `invalid_rut` · `delivery_method_unavailable` · `unknown_item` · `inactive_item` · `no_price` · `variant_required`; 409 `insufficient_stock` · `store_item` · `event_id_reused` · `checkout_closed` · `already_paid` · `payment_not_connected`; 502 `payment_provider_unavailable`. Fires `order.created`. Requires `orders:checkout`.
212444
+ */
212445
+ post: {
212446
+ parameters: {
212447
+ query?: never;
212448
+ header?: {
212449
+ /** @description Replay-safe retries: resending the SAME key with the SAME body returns the original response (`X-Idempotent-Replay: 1`) instead of creating a second copy — safe to send whenever a response might not have arrived. The same key with a DIFFERENT body answers `409 IDEMPOTENCY_KEY_CONFLICT`; use a fresh key per operation. */
212450
+ "Idempotency-Key"?: string;
212451
+ };
212452
+ path?: never;
212453
+ cookie?: never;
212454
+ };
212455
+ requestBody?: {
212456
+ content: {
212457
+ /**
212458
+ * @example {
212459
+ * "event_id": "ck_01JBX4W7Q2M5Z8",
212460
+ * "buyer": {
212461
+ * "name": "Camila Rojas",
212462
+ * "rut": "12.345.678-5",
212463
+ * "phone": "+56 9 1234 5678",
212464
+ * "email": "camila@example.com"
212465
+ * },
212466
+ * "items": [
212467
+ * {
212468
+ * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212469
+ * "quantity": 1
212470
+ * }
212471
+ * ],
212472
+ * "delivery": {
212473
+ * "method": "pickup"
212474
+ * },
212475
+ * "consent": {
212476
+ * "granted": true,
212477
+ * "source_url": "https://tienda.example.cl/checkout",
212478
+ * "text_version": "v1"
212479
+ * },
212480
+ * "attribution": {
212481
+ * "utm_source": "facebook",
212482
+ * "utm_medium": "paid",
212483
+ * "utm_campaign": "iphone14",
212484
+ * "fbclid": "IwAR0abc",
212485
+ * "anonymous_id": "anon_7f3c9a1b2d",
212486
+ * "fbp": "fb.1.1730000000000.1234567890"
212487
+ * },
212488
+ * "return_urls": {
212489
+ * "success": "https://tienda.example.cl/compra/ok",
212490
+ * "failure": "https://tienda.example.cl/compra/error",
212491
+ * "pending": "https://tienda.example.cl/compra/pendiente"
212492
+ * }
212493
+ * }
212494
+ */
212495
+ "application/json": {
212496
+ /**
212497
+ * @description The id the site gave its browser InitiateCheckout (Meta Pixel `eventID`), one per purchase attempt. The server-side InitiateCheckout and Purchase of this order ship under the same id, so Meta deduplicates browser and server. Also the idempotency key: the same `event_id` with the same items returns the same order and link (`replayed: true`); with other items it is refused (`event_id_reused`).
212498
+ * @example ck_01JBX4W7Q2M5Z8
212499
+ */
212500
+ event_id: string;
212501
+ /** @description Who buys. Phone or email is required: the contact is found by email, then phone, or created. */
212502
+ buyer: {
212503
+ name: string;
212504
+ /** @description Chilean RUT, any format (`12.345.678-5`). Stored canonical on the order; fills the contact’s empty RUT. */
212505
+ rut?: string | null;
212506
+ /** @description Any Chilean format; stored E.164. */
212507
+ phone?: string | null;
212508
+ /** Format: email */
212509
+ email?: string | null;
212510
+ };
212511
+ /** @description What is bought: variants of NATIVE products, priced from the catalog (there is no price field). */
212512
+ items: {
212513
+ /** Format: uuid */
212514
+ variant_id: string;
212515
+ /** @default 1 */
212516
+ quantity?: number;
212517
+ }[];
212518
+ delivery: {
212519
+ /**
212520
+ * @description `pickup` (the buyer collects it at the store). `shipping` is refused with `delivery_method_unavailable` until the courier integration ships; it will then take a `quote_id` and the address fields additively.
212521
+ * @enum {string}
212522
+ */
212523
+ method: "pickup" | "shipping";
212524
+ };
212525
+ /** @description The buyer’s opt-in to marketing messages as the site recorded it (Ley 21.719). Omit when the site asked nothing. */
212526
+ consent?: {
212527
+ granted: boolean;
212528
+ /** Format: uri */
212529
+ source_url: string;
212530
+ text_version: string;
212531
+ };
212532
+ /** @description The visit’s ad touch. Malformed values are dropped, never refused. */
212533
+ attribution?: {
212534
+ utm_source?: string | null;
212535
+ utm_medium?: string | null;
212536
+ utm_campaign?: string | null;
212537
+ utm_content?: string | null;
212538
+ utm_term?: string | null;
212539
+ utm_id?: string | null;
212540
+ fbclid?: string | null;
212541
+ gclid?: string | null;
212542
+ /** @description The ad tracker’s anonymous visitor id, as read on the site. */
212543
+ anonymous_id?: string | null;
212544
+ /** @description Meta’s `_fbp` cookie, as read on the site. */
212545
+ fbp?: string | null;
212546
+ /** @description Meta’s `_fbc` cookie, as read on the site. */
212547
+ fbc?: string | null;
212548
+ };
212549
+ /** @description The site’s own pages Mercado Pago returns the buyer to (`pending` defaults to `success`). Mercado Pago appends its own query (`collection_status`, `payment_id`, `external_reference` = the checkout id). Show the result from `GET /orders/checkout/{id}`, never from the query string. */
212550
+ return_urls: {
212551
+ /** Format: uri */
212552
+ success: string;
212553
+ /** Format: uri */
212554
+ failure: string;
212555
+ /** Format: uri */
212556
+ pending?: string;
212557
+ };
212558
+ notes?: string;
212559
+ };
212560
+ };
212561
+ };
212562
+ responses: {
212563
+ /** @description The same event_id again: the same order and link */
212564
+ 200: {
212565
+ headers: {
212566
+ [name: string]: unknown;
212567
+ };
212568
+ content: {
212569
+ /**
212570
+ * @example {
212571
+ * "data": {
212572
+ * "order": {
212573
+ * "order_id": "0199e3b0-0000-7000-8000-000000000001",
212574
+ * "display_id": "O-42",
212575
+ * "status": "pending_payment",
212576
+ * "total_clp": 459990,
212577
+ * "currency": "CLP",
212578
+ * "lines": [
212579
+ * {
212580
+ * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212581
+ * "sku": "IP14-128-NEG",
212582
+ * "title": "iPhone 14 128 GB",
212583
+ * "variant_title": "Negro",
212584
+ * "options": [
212585
+ * {
212586
+ * "name": "Color",
212587
+ * "value": "Negro"
212588
+ * }
212589
+ * ],
212590
+ * "quantity": 1,
212591
+ * "unit_price_clp": 459990
212592
+ * }
212593
+ * ],
212594
+ * "delivery_method": "pickup",
212595
+ * "paid_at": null,
212596
+ * "cancelled_at": null,
212597
+ * "hold_expires_at": "2026-10-29T15:15:00.000Z",
212598
+ * "created_at": "2026-10-29T15:00:00.000Z"
212599
+ * },
212600
+ * "checkout": {
212601
+ * "checkout_id": "0199e3b0-0000-7000-8000-0000000000b1",
212602
+ * "checkout_url": "https://api.vitrinadev.com/p/0199e3b0-0000-7000-8000-0000000000b1",
212603
+ * "amount_clp": 459990,
212604
+ * "expires_at": "2026-10-29T15:15:00.000Z"
212605
+ * },
212606
+ * "hold": {
212607
+ * "expires_at": "2026-10-29T15:15:00.000Z",
212608
+ * "variant_ids": [
212609
+ * "0199e3b0-0000-7000-8000-0000000000f1"
212610
+ * ]
212611
+ * },
212612
+ * "contact_id": "0199e3b0-0000-7000-8000-0000000000c1",
212613
+ * "replayed": true
212614
+ * }
212615
+ * }
212616
+ */
212617
+ "application/json": {
212618
+ data: components["schemas"]["GuestCheckout"];
212619
+ };
212620
+ };
212621
+ };
212622
+ /** @description The order, its link and its hold */
212623
+ 201: {
212624
+ headers: {
212625
+ [name: string]: unknown;
212626
+ };
212627
+ content: {
212628
+ /**
212629
+ * @example {
212630
+ * "data": {
212631
+ * "order": {
212632
+ * "order_id": "0199e3b0-0000-7000-8000-000000000001",
212633
+ * "display_id": "O-42",
212634
+ * "status": "pending_payment",
212635
+ * "total_clp": 459990,
212636
+ * "currency": "CLP",
212637
+ * "lines": [
212638
+ * {
212639
+ * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212640
+ * "sku": "IP14-128-NEG",
212641
+ * "title": "iPhone 14 128 GB",
212642
+ * "variant_title": "Negro",
212643
+ * "options": [
212644
+ * {
212645
+ * "name": "Color",
212646
+ * "value": "Negro"
212647
+ * }
212648
+ * ],
212649
+ * "quantity": 1,
212650
+ * "unit_price_clp": 459990
212651
+ * }
212652
+ * ],
212653
+ * "delivery_method": "pickup",
212654
+ * "paid_at": null,
212655
+ * "cancelled_at": null,
212656
+ * "hold_expires_at": "2026-10-29T15:15:00.000Z",
212657
+ * "created_at": "2026-10-29T15:00:00.000Z"
212658
+ * },
212659
+ * "checkout": {
212660
+ * "checkout_id": "0199e3b0-0000-7000-8000-0000000000b1",
212661
+ * "checkout_url": "https://api.vitrinadev.com/p/0199e3b0-0000-7000-8000-0000000000b1",
212662
+ * "amount_clp": 459990,
212663
+ * "expires_at": "2026-10-29T15:15:00.000Z"
212664
+ * },
212665
+ * "hold": {
212666
+ * "expires_at": "2026-10-29T15:15:00.000Z",
212667
+ * "variant_ids": [
212668
+ * "0199e3b0-0000-7000-8000-0000000000f1"
212669
+ * ]
212670
+ * },
212671
+ * "contact_id": "0199e3b0-0000-7000-8000-0000000000c1",
212672
+ * "replayed": false
212673
+ * }
212674
+ * }
212675
+ */
212676
+ "application/json": {
212677
+ data: components["schemas"]["GuestCheckout"];
212678
+ };
212679
+ };
212680
+ };
212681
+ /** @description Validation error */
212682
+ 400: {
212683
+ headers: {
212684
+ [name: string]: unknown;
212685
+ };
212686
+ content: {
212687
+ "application/json": components["schemas"]["Error"];
212688
+ };
212689
+ };
212690
+ /** @description Unauthorized */
212691
+ 401: {
212692
+ headers: {
212693
+ [name: string]: unknown;
212694
+ };
212695
+ content: {
212696
+ "application/json": components["schemas"]["Error"];
212697
+ };
212698
+ };
212699
+ /** @description Forbidden */
212700
+ 403: {
212701
+ headers: {
212702
+ [name: string]: unknown;
212703
+ };
212704
+ content: {
212705
+ "application/json": components["schemas"]["Error"];
212706
+ };
212707
+ };
212708
+ /** @description Not found */
212709
+ 404: {
212710
+ headers: {
212711
+ [name: string]: unknown;
212712
+ };
212713
+ content: {
212714
+ "application/json": components["schemas"]["Error"];
212715
+ };
212716
+ };
212717
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
212718
+ 409: {
212719
+ headers: {
212720
+ [name: string]: unknown;
212721
+ };
212722
+ content: {
212723
+ "application/json": components["schemas"]["Error"];
212724
+ };
212725
+ };
212726
+ /** @description Rate limited */
212727
+ 429: {
212728
+ headers: {
212729
+ [name: string]: unknown;
212730
+ };
212731
+ content: {
212732
+ "application/json": components["schemas"]["Error"];
212733
+ };
212734
+ };
212735
+ };
212736
+ };
212737
+ delete?: never;
212738
+ options?: never;
212739
+ head?: never;
212740
+ patch?: never;
212741
+ trace?: never;
212742
+ };
212743
+ "/orders/checkout/{id}": {
212744
+ parameters: {
212745
+ query?: never;
212746
+ header?: never;
212747
+ path?: never;
212748
+ cookie?: never;
212749
+ };
212750
+ /**
212751
+ * Get a storefront checkout’s status
212752
+ * @description The status of an order opened by `POST /orders/checkout` (uuid or `O-42`), for the site’s return page: `pending_payment` (with `hold_expires_at`), `paid`, `cancelled` (expired or cancelled). No buyer data. Any other order answers 404. Requires `orders:checkout`.
212753
+ */
212754
+ get: {
212755
+ parameters: {
212756
+ query?: never;
212757
+ header?: never;
212758
+ path: {
212759
+ id: string;
212760
+ };
212761
+ cookie?: never;
212762
+ };
212763
+ requestBody?: never;
212764
+ responses: {
212765
+ /** @description The checkout’s order */
212766
+ 200: {
212767
+ headers: {
212768
+ [name: string]: unknown;
212769
+ };
212770
+ content: {
212771
+ /**
212772
+ * @example {
212773
+ * "data": {
212774
+ * "order_id": "0199e3b0-0000-7000-8000-000000000001",
212775
+ * "display_id": "O-42",
212776
+ * "status": "pending_payment",
212777
+ * "total_clp": 459990,
212778
+ * "currency": "CLP",
212779
+ * "lines": [
212780
+ * {
212781
+ * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212782
+ * "sku": "IP14-128-NEG",
212783
+ * "title": "iPhone 14 128 GB",
212784
+ * "variant_title": "Negro",
212785
+ * "options": [
212786
+ * {
212787
+ * "name": "Color",
212788
+ * "value": "Negro"
212789
+ * }
212790
+ * ],
212791
+ * "quantity": 1,
212792
+ * "unit_price_clp": 459990
212793
+ * }
212794
+ * ],
212795
+ * "delivery_method": "pickup",
212796
+ * "paid_at": null,
212797
+ * "cancelled_at": null,
212798
+ * "hold_expires_at": "2026-10-29T15:15:00.000Z",
212799
+ * "created_at": "2026-10-29T15:00:00.000Z"
212800
+ * }
212801
+ * }
212802
+ */
212803
+ "application/json": {
212804
+ data: components["schemas"]["GuestCheckoutOrder"];
212805
+ };
212806
+ };
212807
+ };
212808
+ /** @description Validation error */
212809
+ 400: {
212810
+ headers: {
212811
+ [name: string]: unknown;
212812
+ };
212813
+ content: {
212814
+ "application/json": components["schemas"]["Error"];
212815
+ };
212816
+ };
212817
+ /** @description Unauthorized */
212818
+ 401: {
212819
+ headers: {
212820
+ [name: string]: unknown;
212821
+ };
212822
+ content: {
212823
+ "application/json": components["schemas"]["Error"];
212824
+ };
212825
+ };
212826
+ /** @description Forbidden */
212827
+ 403: {
212828
+ headers: {
212829
+ [name: string]: unknown;
212830
+ };
212831
+ content: {
212832
+ "application/json": components["schemas"]["Error"];
212833
+ };
212834
+ };
212835
+ /** @description Not found */
212836
+ 404: {
212837
+ headers: {
212838
+ [name: string]: unknown;
212839
+ };
212840
+ content: {
212841
+ "application/json": components["schemas"]["Error"];
212842
+ };
212843
+ };
212844
+ /** @description Conflict (incl. Idempotency-Key reuse with different body) */
212845
+ 409: {
212846
+ headers: {
212847
+ [name: string]: unknown;
212848
+ };
212849
+ content: {
212850
+ "application/json": components["schemas"]["Error"];
212851
+ };
212852
+ };
212853
+ /** @description Rate limited */
212854
+ 429: {
212855
+ headers: {
212856
+ [name: string]: unknown;
212857
+ };
212858
+ content: {
212859
+ "application/json": components["schemas"]["Error"];
212860
+ };
212861
+ };
212862
+ };
212863
+ };
212864
+ put?: never;
212865
+ post?: never;
212866
+ delete?: never;
212867
+ options?: never;
212868
+ head?: never;
212869
+ patch?: never;
212870
+ trace?: never;
212871
+ };
212401
212872
  "/orders": {
212402
212873
  parameters: {
212403
212874
  query?: never;
@@ -212462,6 +212933,10 @@ interface paths {
212462
212933
  * "delivered_at": null,
212463
212934
  * "cancelled_at": null,
212464
212935
  * "cancelled_reason": null,
212936
+ * "buyer": {},
212937
+ * "attribution": {},
212938
+ * "client_event_id": null,
212939
+ * "return_urls": null,
212465
212940
  * "created_by": "0199e3b0-0000-7000-8000-0000000000bb",
212466
212941
  * "created_at": "2026-10-15T12:00:00.000Z",
212467
212942
  * "updated_at": "2026-10-15T12:00:00.000Z",
@@ -212473,6 +212948,16 @@ interface paths {
212473
212948
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212474
212949
  * "title": "Polera básica",
212475
212950
  * "variant_title": "M / Negro",
212951
+ * "variant_options": [
212952
+ * {
212953
+ * "name": "Talla",
212954
+ * "value": "M"
212955
+ * },
212956
+ * {
212957
+ * "name": "Color",
212958
+ * "value": "Negro"
212959
+ * }
212960
+ * ],
212476
212961
  * "sku": "POL-M-NEG",
212477
212962
  * "unit_price_clp": 9990,
212478
212963
  * "quantity": 2,
@@ -212486,6 +212971,16 @@ interface paths {
212486
212971
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f2",
212487
212972
  * "title": "Polera básica",
212488
212973
  * "variant_title": "L / Blanco",
212974
+ * "variant_options": [
212975
+ * {
212976
+ * "name": "Talla",
212977
+ * "value": "L"
212978
+ * },
212979
+ * {
212980
+ * "name": "Color",
212981
+ * "value": "Blanco"
212982
+ * }
212983
+ * ],
212489
212984
  * "sku": "POL-L-BLA",
212490
212985
  * "unit_price_clp": 20000,
212491
212986
  * "quantity": 1,
@@ -212693,6 +213188,10 @@ interface paths {
212693
213188
  * "delivered_at": null,
212694
213189
  * "cancelled_at": null,
212695
213190
  * "cancelled_reason": null,
213191
+ * "buyer": {},
213192
+ * "attribution": {},
213193
+ * "client_event_id": null,
213194
+ * "return_urls": null,
212696
213195
  * "created_by": "0199e3b0-0000-7000-8000-0000000000bb",
212697
213196
  * "created_at": "2026-10-15T12:00:00.000Z",
212698
213197
  * "updated_at": "2026-10-15T12:00:00.000Z",
@@ -212704,6 +213203,16 @@ interface paths {
212704
213203
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212705
213204
  * "title": "Polera básica",
212706
213205
  * "variant_title": "M / Negro",
213206
+ * "variant_options": [
213207
+ * {
213208
+ * "name": "Talla",
213209
+ * "value": "M"
213210
+ * },
213211
+ * {
213212
+ * "name": "Color",
213213
+ * "value": "Negro"
213214
+ * }
213215
+ * ],
212707
213216
  * "sku": "POL-M-NEG",
212708
213217
  * "unit_price_clp": 9990,
212709
213218
  * "quantity": 2,
@@ -212717,6 +213226,16 @@ interface paths {
212717
213226
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f2",
212718
213227
  * "title": "Polera básica",
212719
213228
  * "variant_title": "L / Blanco",
213229
+ * "variant_options": [
213230
+ * {
213231
+ * "name": "Talla",
213232
+ * "value": "L"
213233
+ * },
213234
+ * {
213235
+ * "name": "Color",
213236
+ * "value": "Blanco"
213237
+ * }
213238
+ * ],
212720
213239
  * "sku": "POL-L-BLA",
212721
213240
  * "unit_price_clp": 20000,
212722
213241
  * "quantity": 1,
@@ -212851,6 +213370,10 @@ interface paths {
212851
213370
  * "delivered_at": null,
212852
213371
  * "cancelled_at": null,
212853
213372
  * "cancelled_reason": null,
213373
+ * "buyer": {},
213374
+ * "attribution": {},
213375
+ * "client_event_id": null,
213376
+ * "return_urls": null,
212854
213377
  * "created_by": "0199e3b0-0000-7000-8000-0000000000bb",
212855
213378
  * "created_at": "2026-10-15T12:00:00.000Z",
212856
213379
  * "updated_at": "2026-10-15T12:00:00.000Z",
@@ -212862,6 +213385,16 @@ interface paths {
212862
213385
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
212863
213386
  * "title": "Polera básica",
212864
213387
  * "variant_title": "M / Negro",
213388
+ * "variant_options": [
213389
+ * {
213390
+ * "name": "Talla",
213391
+ * "value": "M"
213392
+ * },
213393
+ * {
213394
+ * "name": "Color",
213395
+ * "value": "Negro"
213396
+ * }
213397
+ * ],
212865
213398
  * "sku": "POL-M-NEG",
212866
213399
  * "unit_price_clp": 9990,
212867
213400
  * "quantity": 2,
@@ -212875,6 +213408,16 @@ interface paths {
212875
213408
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f2",
212876
213409
  * "title": "Polera básica",
212877
213410
  * "variant_title": "L / Blanco",
213411
+ * "variant_options": [
213412
+ * {
213413
+ * "name": "Talla",
213414
+ * "value": "L"
213415
+ * },
213416
+ * {
213417
+ * "name": "Color",
213418
+ * "value": "Blanco"
213419
+ * }
213420
+ * ],
212878
213421
  * "sku": "POL-L-BLA",
212879
213422
  * "unit_price_clp": 20000,
212880
213423
  * "quantity": 1,
@@ -213016,6 +213559,10 @@ interface paths {
213016
213559
  * "delivered_at": null,
213017
213560
  * "cancelled_at": null,
213018
213561
  * "cancelled_reason": null,
213562
+ * "buyer": {},
213563
+ * "attribution": {},
213564
+ * "client_event_id": null,
213565
+ * "return_urls": null,
213019
213566
  * "created_by": "0199e3b0-0000-7000-8000-0000000000bb",
213020
213567
  * "created_at": "2026-10-15T12:00:00.000Z",
213021
213568
  * "updated_at": "2026-10-15T12:00:00.000Z",
@@ -213027,6 +213574,16 @@ interface paths {
213027
213574
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
213028
213575
  * "title": "Polera básica",
213029
213576
  * "variant_title": "M / Negro",
213577
+ * "variant_options": [
213578
+ * {
213579
+ * "name": "Talla",
213580
+ * "value": "M"
213581
+ * },
213582
+ * {
213583
+ * "name": "Color",
213584
+ * "value": "Negro"
213585
+ * }
213586
+ * ],
213030
213587
  * "sku": "POL-M-NEG",
213031
213588
  * "unit_price_clp": 9990,
213032
213589
  * "quantity": 2,
@@ -213040,6 +213597,16 @@ interface paths {
213040
213597
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f2",
213041
213598
  * "title": "Polera básica",
213042
213599
  * "variant_title": "L / Blanco",
213600
+ * "variant_options": [
213601
+ * {
213602
+ * "name": "Talla",
213603
+ * "value": "L"
213604
+ * },
213605
+ * {
213606
+ * "name": "Color",
213607
+ * "value": "Blanco"
213608
+ * }
213609
+ * ],
213043
213610
  * "sku": "POL-L-BLA",
213044
213611
  * "unit_price_clp": 20000,
213045
213612
  * "quantity": 1,
@@ -213318,6 +213885,10 @@ interface paths {
213318
213885
  * "delivered_at": null,
213319
213886
  * "cancelled_at": null,
213320
213887
  * "cancelled_reason": null,
213888
+ * "buyer": {},
213889
+ * "attribution": {},
213890
+ * "client_event_id": null,
213891
+ * "return_urls": null,
213321
213892
  * "created_by": "0199e3b0-0000-7000-8000-0000000000bb",
213322
213893
  * "created_at": "2026-10-15T12:00:00.000Z",
213323
213894
  * "updated_at": "2026-10-15T12:00:00.000Z",
@@ -213329,6 +213900,16 @@ interface paths {
213329
213900
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
213330
213901
  * "title": "Polera básica",
213331
213902
  * "variant_title": "M / Negro",
213903
+ * "variant_options": [
213904
+ * {
213905
+ * "name": "Talla",
213906
+ * "value": "M"
213907
+ * },
213908
+ * {
213909
+ * "name": "Color",
213910
+ * "value": "Negro"
213911
+ * }
213912
+ * ],
213332
213913
  * "sku": "POL-M-NEG",
213333
213914
  * "unit_price_clp": 9990,
213334
213915
  * "quantity": 2,
@@ -213342,6 +213923,16 @@ interface paths {
213342
213923
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f2",
213343
213924
  * "title": "Polera básica",
213344
213925
  * "variant_title": "L / Blanco",
213926
+ * "variant_options": [
213927
+ * {
213928
+ * "name": "Talla",
213929
+ * "value": "L"
213930
+ * },
213931
+ * {
213932
+ * "name": "Color",
213933
+ * "value": "Blanco"
213934
+ * }
213935
+ * ],
213345
213936
  * "sku": "POL-L-BLA",
213346
213937
  * "unit_price_clp": 20000,
213347
213938
  * "quantity": 1,
@@ -213493,6 +214084,10 @@ interface paths {
213493
214084
  * "delivered_at": null,
213494
214085
  * "cancelled_at": "2026-10-15T12:30:00.000Z",
213495
214086
  * "cancelled_reason": "El cliente se arrepintió antes de pagar",
214087
+ * "buyer": {},
214088
+ * "attribution": {},
214089
+ * "client_event_id": null,
214090
+ * "return_urls": null,
213496
214091
  * "created_by": "0199e3b0-0000-7000-8000-0000000000bb",
213497
214092
  * "created_at": "2026-10-15T12:00:00.000Z",
213498
214093
  * "updated_at": "2026-10-15T12:00:00.000Z",
@@ -213504,6 +214099,16 @@ interface paths {
213504
214099
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f1",
213505
214100
  * "title": "Polera básica",
213506
214101
  * "variant_title": "M / Negro",
214102
+ * "variant_options": [
214103
+ * {
214104
+ * "name": "Talla",
214105
+ * "value": "M"
214106
+ * },
214107
+ * {
214108
+ * "name": "Color",
214109
+ * "value": "Negro"
214110
+ * }
214111
+ * ],
213507
214112
  * "sku": "POL-M-NEG",
213508
214113
  * "unit_price_clp": 9990,
213509
214114
  * "quantity": 2,
@@ -213517,6 +214122,16 @@ interface paths {
213517
214122
  * "variant_id": "0199e3b0-0000-7000-8000-0000000000f2",
213518
214123
  * "title": "Polera básica",
213519
214124
  * "variant_title": "L / Blanco",
214125
+ * "variant_options": [
214126
+ * {
214127
+ * "name": "Talla",
214128
+ * "value": "L"
214129
+ * },
214130
+ * {
214131
+ * "name": "Color",
214132
+ * "value": "Blanco"
214133
+ * }
214134
+ * ],
213520
214135
  * "sku": "POL-L-BLA",
213521
214136
  * "unit_price_clp": 20000,
213522
214137
  * "quantity": 1,
@@ -246185,6 +246800,52 @@ interface components {
246185
246800
  }[];
246186
246801
  }[];
246187
246802
  };
246803
+ GuestCheckoutOrder: {
246804
+ /** Format: uuid */
246805
+ order_id: string;
246806
+ display_id: string;
246807
+ /** @enum {string} */
246808
+ status: "draft" | "pending_payment" | "paid" | "preparing" | "shipped" | "delivered" | "cancelled";
246809
+ total_clp: number;
246810
+ currency: string;
246811
+ lines: {
246812
+ /** Format: uuid */
246813
+ variant_id: string | null;
246814
+ sku: string | null;
246815
+ title: string;
246816
+ variant_title: string | null;
246817
+ options: {
246818
+ name: string;
246819
+ value: string;
246820
+ }[];
246821
+ quantity: number;
246822
+ unit_price_clp: number;
246823
+ }[];
246824
+ delivery_method: string | null;
246825
+ paid_at: string | null;
246826
+ cancelled_at: string | null;
246827
+ /** @description While unpaid: when the held units are released and the link stops taking money. */
246828
+ hold_expires_at: string | null;
246829
+ created_at: string;
246830
+ };
246831
+ GuestCheckout: {
246832
+ order: components["schemas"]["GuestCheckoutOrder"];
246833
+ checkout: {
246834
+ /** Format: uuid */
246835
+ checkout_id: string;
246836
+ /** @description Send the buyer here: Vitrina’s tracked redirect to the Mercado Pago checkout (records the server-side InitiateCheckout). */
246837
+ checkout_url: string;
246838
+ amount_clp: number;
246839
+ expires_at: string | null;
246840
+ };
246841
+ hold: {
246842
+ expires_at: string;
246843
+ variant_ids: string[];
246844
+ } | null;
246845
+ /** Format: uuid */
246846
+ contact_id: string | null;
246847
+ replayed: boolean;
246848
+ };
246188
246849
  CommerceOrder: {
246189
246850
  /** Format: uuid */
246190
246851
  id: string;
@@ -246223,6 +246884,25 @@ interface components {
246223
246884
  delivered_at: string | null;
246224
246885
  cancelled_at: string | null;
246225
246886
  cancelled_reason: string | null;
246887
+ /** @description A storefront checkout’s buyer as declared at purchase (`POST /orders/checkout`). `{}` for orders created by staff or the agent: the contact is the buyer. */
246888
+ buyer: {
246889
+ name?: string | null;
246890
+ rut?: string | null;
246891
+ phone?: string | null;
246892
+ email?: string | null;
246893
+ };
246894
+ /** @description A storefront checkout’s ad touch (utm_*, fbclid, gclid, anonymous_id, fbp, fbc). `{}` otherwise. */
246895
+ attribution: {
246896
+ [key: string]: string;
246897
+ };
246898
+ /** @description A storefront checkout’s browser InitiateCheckout `eventID` (the server InitiateCheckout and Purchase reuse it). Null otherwise. */
246899
+ client_event_id: string | null;
246900
+ /** @description A storefront checkout’s return pages. Null = the Vitrina receipt page. */
246901
+ return_urls: {
246902
+ success: string;
246903
+ failure: string;
246904
+ pending: string;
246905
+ } | null;
246226
246906
  /** Format: uuid */
246227
246907
  created_by: string | null;
246228
246908
  created_at: string;
@@ -246237,6 +246917,11 @@ interface components {
246237
246917
  variant_id: string | null;
246238
246918
  title: string;
246239
246919
  variant_title: string | null;
246920
+ /** @description The variant’s option values frozen at creation (`[{name: "Color", value: "Negro"}]`). Empty for a simple product and for lines created before 2026-10-29. */
246921
+ variant_options: {
246922
+ name: string;
246923
+ value: string;
246924
+ }[];
246240
246925
  sku: string | null;
246241
246926
  unit_price_clp: number;
246242
246927
  quantity: number;