@poweredbysous/storefront-admin-sdk 3.2.0 → 3.3.0

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.cts CHANGED
@@ -577,6 +577,50 @@ interface paths {
577
577
  patch?: never;
578
578
  trace?: never;
579
579
  };
580
+ "/api/v1/admin/products/{product_id}/deposit/": {
581
+ parameters: {
582
+ query?: never;
583
+ header?: never;
584
+ path?: never;
585
+ cookie?: never;
586
+ };
587
+ /**
588
+ * Get a product's deposit (Pfand)
589
+ * @description Read or set one product's deposit (Pfand) from the Price tab.
590
+ *
591
+ * The portal sends an amount, not a surcharge id: this turns it into an
592
+ * attachment (``services.set_product_deposit``) and leaves the product's
593
+ * other surcharges alone, unlike ``AdminProductSurchargesView`` which
594
+ * replaces the whole set.
595
+ *
596
+ * Adding a deposit is refused unless the store's compliance profile offers
597
+ * one, so a store outside Germany — or with no country — cannot get a
598
+ * deposit by calling the API directly when the portal never shows the
599
+ * section. Removing one is always allowed.
600
+ */
601
+ get: operations["admin_products_deposit_retrieve"];
602
+ /**
603
+ * Set a product's deposit (Pfand)
604
+ * @description Read or set one product's deposit (Pfand) from the Price tab.
605
+ *
606
+ * The portal sends an amount, not a surcharge id: this turns it into an
607
+ * attachment (``services.set_product_deposit``) and leaves the product's
608
+ * other surcharges alone, unlike ``AdminProductSurchargesView`` which
609
+ * replaces the whole set.
610
+ *
611
+ * Adding a deposit is refused unless the store's compliance profile offers
612
+ * one, so a store outside Germany — or with no country — cannot get a
613
+ * deposit by calling the API directly when the portal never shows the
614
+ * section. Removing one is always allowed.
615
+ */
616
+ put: operations["admin_products_deposit_update"];
617
+ post?: never;
618
+ delete?: never;
619
+ options?: never;
620
+ head?: never;
621
+ patch?: never;
622
+ trace?: never;
623
+ };
580
624
  "/api/v1/admin/products/{product_id}/surcharges/": {
581
625
  parameters: {
582
626
  query?: never;
@@ -3164,6 +3208,7 @@ interface components {
3164
3208
  /** Format: decimal */
3165
3209
  value_numeric?: string | null;
3166
3210
  selected_choice_slugs?: string[];
3211
+ value_json?: unknown;
3167
3212
  };
3168
3213
  /**
3169
3214
  * @description The request body of the admin attribute-value upsert.
@@ -3183,6 +3228,21 @@ interface components {
3183
3228
  AdminAttributeValuesRequest: {
3184
3229
  values: components["schemas"]["AdminAttributeValueWrite"][];
3185
3230
  };
3231
+ /**
3232
+ * @description A product's deposit (Pfand) as the merchant portal's Price tab edits it.
3233
+ *
3234
+ * ``amount`` is the per-unit deposit in the store's currency, VAT-inclusive
3235
+ * like every surcharge amount: positive, in cents. Optional even when
3236
+ * ``applies`` is true — the amount is not hard-blocking (PAT-2275), and
3237
+ * ``{"applies": true, "amount": null}`` is a saved state in which nothing
3238
+ * is charged or shown until an amount is set. Ignored (and read back as
3239
+ * ``null``) when ``applies`` is false, and must be between 0.01 and 10.00.
3240
+ */
3241
+ AdminProductDeposit: {
3242
+ applies: boolean;
3243
+ /** Format: decimal */
3244
+ amount?: string | null;
3245
+ };
3186
3246
  /**
3187
3247
  * @description Lightweight product row for the merchant-portal product picker.
3188
3248
  *
@@ -3331,8 +3391,8 @@ interface components {
3331
3391
  AdminStoreComplianceDefaults: {
3332
3392
  /** @description Merchant-authored statement of how a customer returns a deposit-carrying container for the Pfand refund (D7). The platform charges and displays the deposit; the merchant runs the return — this is the platform's disclosure of that process, not the process itself. A store with any active deposit-charging product must set this before that product can list (see ``compliance.resolver.validate_products``). Empty means unset. */
3333
3393
  deposit_return_policy?: string;
3334
- /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A product-level value always takes precedence. Empty means unset. */
3335
- default_responsible_business?: string;
3394
+ /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A structured object of the operator's address sub-fields (company, street, postal_code, city, country). A product-level value always takes precedence. An empty object means unset. */
3395
+ default_responsible_business?: unknown;
3336
3396
  /** @description Fallback ``country_of_origin`` compliance value for this store's own prepacked products (D26). A product-level value always takes precedence. Empty means unset. */
3337
3397
  default_country_of_origin?: string;
3338
3398
  /** @description Whether this store offers reusable delivery packaging. German VerpackG §33 obliges eligible restaurants to offer and display the option; stores outside that scope leave it off and see no change. */
@@ -3609,12 +3669,13 @@ interface components {
3609
3669
  label: string;
3610
3670
  choices: components["schemas"]["ComplianceChoice"][];
3611
3671
  inherits_store_default: boolean;
3612
- inherited_value: string | null;
3672
+ inherited_value: unknown;
3613
3673
  };
3614
3674
  ComplianceSchemaResponse: {
3615
3675
  product_type: string;
3616
3676
  product_type_classified: boolean;
3617
3677
  requires_attestation: boolean;
3678
+ deposit_config_enabled: boolean;
3618
3679
  fields: components["schemas"]["ComplianceSchemaField"][];
3619
3680
  };
3620
3681
  ConfirmEdit: {
@@ -3964,12 +4025,14 @@ interface components {
3964
4025
  * * `datetime` - Date & Time
3965
4026
  * * `dropdown` - Dropdown
3966
4027
  * * `multiselect` - Multi-select
4028
+ * * `structured_list` - Structured List
4029
+ * * `structured_object` - Structured Object
3967
4030
  * * `file` - File
3968
4031
  * * `reference` - Reference
3969
4032
  * * `color` - Color
3970
4033
  * @enum {string}
3971
4034
  */
3972
- InputTypeEnum: "text" | "rich_text" | "numeric" | "boolean" | "date" | "datetime" | "dropdown" | "multiselect" | "file" | "reference" | "color";
4035
+ InputTypeEnum: "text" | "rich_text" | "numeric" | "boolean" | "date" | "datetime" | "dropdown" | "multiselect" | "structured_list" | "structured_object" | "file" | "reference" | "color";
3973
4036
  Invoice: {
3974
4037
  id: string;
3975
4038
  /** Format: int64 */
@@ -4253,6 +4316,11 @@ interface components {
4253
4316
  * @description Aggregated non-discountable surcharges (VAT-inclusive)
4254
4317
  */
4255
4318
  surcharge_total?: string;
4319
+ /**
4320
+ * Format: decimal
4321
+ * @description Deposits (subset of surcharge_total), shown separately.
4322
+ */
4323
+ deposit_total?: string;
4256
4324
  cancellation_reason?: string;
4257
4325
  /** Format: decimal */
4258
4326
  total: string;
@@ -4396,6 +4464,11 @@ interface components {
4396
4464
  tax_amount: string;
4397
4465
  /** Format: decimal */
4398
4466
  line_total: string;
4467
+ /**
4468
+ * Format: decimal
4469
+ * @description Deposit charged on this line, snapshotted at order time so removing the line refunds it.
4470
+ */
4471
+ deposit_amount?: string;
4399
4472
  fulfillment_type: string;
4400
4473
  /** Format: date */
4401
4474
  fulfillment_date?: string | null;
@@ -4776,8 +4849,8 @@ interface components {
4776
4849
  PatchedAdminStoreComplianceDefaults: {
4777
4850
  /** @description Merchant-authored statement of how a customer returns a deposit-carrying container for the Pfand refund (D7). The platform charges and displays the deposit; the merchant runs the return — this is the platform's disclosure of that process, not the process itself. A store with any active deposit-charging product must set this before that product can list (see ``compliance.resolver.validate_products``). Empty means unset. */
4778
4851
  deposit_return_policy?: string;
4779
- /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A product-level value always takes precedence. Empty means unset. */
4780
- default_responsible_business?: string;
4852
+ /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A structured object of the operator's address sub-fields (company, street, postal_code, city, country). A product-level value always takes precedence. An empty object means unset. */
4853
+ default_responsible_business?: unknown;
4781
4854
  /** @description Fallback ``country_of_origin`` compliance value for this store's own prepacked products (D26). A product-level value always takes precedence. Empty means unset. */
4782
4855
  default_country_of_origin?: string;
4783
4856
  /** @description Whether this store offers reusable delivery packaging. German VerpackG §33 obliges eligible restaurants to offer and display the option; stores outside that scope leave it off and see no change. */
@@ -5055,7 +5128,7 @@ interface components {
5055
5128
  amount?: string;
5056
5129
  /**
5057
5130
  * Format: decimal
5058
- * @description VAT rate for this surcharge, independent of the product's rate. German Pfand is charged at the standard rate (19%) while the food line is often reduced (7%), so the surcharge cannot inherit the product's rate. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5131
+ * @description VAT rate for this surcharge. Not used for a deposit attached to a product or modifier: German Pfand is an ancillary charge on the container and is taxed at the rate of the item it is attached to (UStAE A 10.1 Abs. 8). A deposit's rate here only applies when it is charged per order as the reusable-packaging deposit. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5059
5132
  */
5060
5133
  vat_rate?: string;
5061
5134
  /** @description Category: sup, deposit, bag_fee, packaging, etc. */
@@ -5130,6 +5203,7 @@ interface components {
5130
5203
  value_file?: string;
5131
5204
  /** Format: int64 */
5132
5205
  value_reference?: number | null;
5206
+ value_json?: unknown;
5133
5207
  readonly selected_choices: components["schemas"]["AttributeChoice"][];
5134
5208
  };
5135
5209
  /**
@@ -5259,6 +5333,8 @@ interface components {
5259
5333
  /** Format: decimal */
5260
5334
  price: string;
5261
5335
  /** Format: decimal */
5336
+ readonly deposit_amount: string | null;
5337
+ /** Format: decimal */
5262
5338
  compare_at_price?: string | null;
5263
5339
  currency?: string;
5264
5340
  /** Format: decimal */
@@ -5782,6 +5858,8 @@ interface components {
5782
5858
  price: string;
5783
5859
  currency: string;
5784
5860
  image_url: string;
5861
+ /** Format: decimal */
5862
+ deposit_amount?: string | null;
5785
5863
  reason: string;
5786
5864
  };
5787
5865
  Surcharge: {
@@ -5797,7 +5875,7 @@ interface components {
5797
5875
  amount: string;
5798
5876
  /**
5799
5877
  * Format: decimal
5800
- * @description VAT rate for this surcharge, independent of the product's rate. German Pfand is charged at the standard rate (19%) while the food line is often reduced (7%), so the surcharge cannot inherit the product's rate. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5878
+ * @description VAT rate for this surcharge. Not used for a deposit attached to a product or modifier: German Pfand is an ancillary charge on the container and is taxed at the rate of the item it is attached to (UStAE A 10.1 Abs. 8). A deposit's rate here only applies when it is charged per order as the reusable-packaging deposit. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5801
5879
  */
5802
5880
  vat_rate: string;
5803
5881
  /** @description Category: sup, deposit, bag_fee, packaging, etc. */
@@ -5948,6 +6026,7 @@ interface components {
5948
6026
  value_file?: string;
5949
6027
  /** Format: int64 */
5950
6028
  value_reference?: number | null;
6029
+ value_json?: unknown;
5951
6030
  readonly selected_choices: components["schemas"]["AttributeChoice"][];
5952
6031
  };
5953
6032
  VariantPriceOverride: {
@@ -8605,6 +8684,168 @@ interface operations {
8605
8684
  };
8606
8685
  };
8607
8686
  };
8687
+ admin_products_deposit_retrieve: {
8688
+ parameters: {
8689
+ query?: never;
8690
+ header?: {
8691
+ /** @description Company the request acts on. Ignored for merchant tokens (scoped to their own company); required for admin tokens to select a company. */
8692
+ "X-Sous-Company-Id"?: number;
8693
+ };
8694
+ path: {
8695
+ product_id: number;
8696
+ };
8697
+ cookie?: never;
8698
+ };
8699
+ requestBody?: never;
8700
+ responses: {
8701
+ 200: {
8702
+ headers: {
8703
+ [name: string]: unknown;
8704
+ };
8705
+ content: {
8706
+ "application/json": components["schemas"]["AdminProductDeposit"];
8707
+ };
8708
+ };
8709
+ /** @description Possible error codes include `VALIDATION_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8710
+ 400: {
8711
+ headers: {
8712
+ [name: string]: unknown;
8713
+ };
8714
+ content: {
8715
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8716
+ };
8717
+ };
8718
+ /** @description Possible error codes include `UNAUTHORIZED`. Use `x-error-codes` for machine-readable retryability metadata. */
8719
+ 401: {
8720
+ headers: {
8721
+ [name: string]: unknown;
8722
+ };
8723
+ content: {
8724
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8725
+ };
8726
+ };
8727
+ /** @description Possible error codes include `FORBIDDEN`. Use `x-error-codes` for machine-readable retryability metadata. */
8728
+ 403: {
8729
+ headers: {
8730
+ [name: string]: unknown;
8731
+ };
8732
+ content: {
8733
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8734
+ };
8735
+ };
8736
+ /** @description Possible error codes include `NOT_FOUND`. Use `x-error-codes` for machine-readable retryability metadata. */
8737
+ 404: {
8738
+ headers: {
8739
+ [name: string]: unknown;
8740
+ };
8741
+ content: {
8742
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8743
+ };
8744
+ };
8745
+ /** @description Possible error codes include `RATE_LIMITED`. Use `x-error-codes` for machine-readable retryability metadata. */
8746
+ 429: {
8747
+ headers: {
8748
+ [name: string]: unknown;
8749
+ };
8750
+ content: {
8751
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8752
+ };
8753
+ };
8754
+ /** @description Possible error codes include `INTERNAL_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8755
+ 500: {
8756
+ headers: {
8757
+ [name: string]: unknown;
8758
+ };
8759
+ content: {
8760
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8761
+ };
8762
+ };
8763
+ };
8764
+ };
8765
+ admin_products_deposit_update: {
8766
+ parameters: {
8767
+ query?: never;
8768
+ header?: {
8769
+ /** @description Company the request acts on. Ignored for merchant tokens (scoped to their own company); required for admin tokens to select a company. */
8770
+ "X-Sous-Company-Id"?: number;
8771
+ };
8772
+ path: {
8773
+ product_id: number;
8774
+ };
8775
+ cookie?: never;
8776
+ };
8777
+ requestBody: {
8778
+ content: {
8779
+ "application/json": components["schemas"]["AdminProductDeposit"];
8780
+ "application/x-www-form-urlencoded": components["schemas"]["AdminProductDeposit"];
8781
+ "multipart/form-data": components["schemas"]["AdminProductDeposit"];
8782
+ };
8783
+ };
8784
+ responses: {
8785
+ 200: {
8786
+ headers: {
8787
+ [name: string]: unknown;
8788
+ };
8789
+ content: {
8790
+ "application/json": components["schemas"]["AdminProductDeposit"];
8791
+ };
8792
+ };
8793
+ /** @description Possible error codes include `VALIDATION_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8794
+ 400: {
8795
+ headers: {
8796
+ [name: string]: unknown;
8797
+ };
8798
+ content: {
8799
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8800
+ };
8801
+ };
8802
+ /** @description Possible error codes include `UNAUTHORIZED`. Use `x-error-codes` for machine-readable retryability metadata. */
8803
+ 401: {
8804
+ headers: {
8805
+ [name: string]: unknown;
8806
+ };
8807
+ content: {
8808
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8809
+ };
8810
+ };
8811
+ /** @description Possible error codes include `FORBIDDEN`. Use `x-error-codes` for machine-readable retryability metadata. */
8812
+ 403: {
8813
+ headers: {
8814
+ [name: string]: unknown;
8815
+ };
8816
+ content: {
8817
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8818
+ };
8819
+ };
8820
+ /** @description Possible error codes include `NOT_FOUND`. Use `x-error-codes` for machine-readable retryability metadata. */
8821
+ 404: {
8822
+ headers: {
8823
+ [name: string]: unknown;
8824
+ };
8825
+ content: {
8826
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8827
+ };
8828
+ };
8829
+ /** @description Possible error codes include `RATE_LIMITED`. Use `x-error-codes` for machine-readable retryability metadata. */
8830
+ 429: {
8831
+ headers: {
8832
+ [name: string]: unknown;
8833
+ };
8834
+ content: {
8835
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8836
+ };
8837
+ };
8838
+ /** @description Possible error codes include `INTERNAL_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8839
+ 500: {
8840
+ headers: {
8841
+ [name: string]: unknown;
8842
+ };
8843
+ content: {
8844
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8845
+ };
8846
+ };
8847
+ };
8848
+ };
8608
8849
  admin_products_surcharges_update: {
8609
8850
  parameters: {
8610
8851
  query?: never;
package/dist/index.d.ts CHANGED
@@ -577,6 +577,50 @@ interface paths {
577
577
  patch?: never;
578
578
  trace?: never;
579
579
  };
580
+ "/api/v1/admin/products/{product_id}/deposit/": {
581
+ parameters: {
582
+ query?: never;
583
+ header?: never;
584
+ path?: never;
585
+ cookie?: never;
586
+ };
587
+ /**
588
+ * Get a product's deposit (Pfand)
589
+ * @description Read or set one product's deposit (Pfand) from the Price tab.
590
+ *
591
+ * The portal sends an amount, not a surcharge id: this turns it into an
592
+ * attachment (``services.set_product_deposit``) and leaves the product's
593
+ * other surcharges alone, unlike ``AdminProductSurchargesView`` which
594
+ * replaces the whole set.
595
+ *
596
+ * Adding a deposit is refused unless the store's compliance profile offers
597
+ * one, so a store outside Germany — or with no country — cannot get a
598
+ * deposit by calling the API directly when the portal never shows the
599
+ * section. Removing one is always allowed.
600
+ */
601
+ get: operations["admin_products_deposit_retrieve"];
602
+ /**
603
+ * Set a product's deposit (Pfand)
604
+ * @description Read or set one product's deposit (Pfand) from the Price tab.
605
+ *
606
+ * The portal sends an amount, not a surcharge id: this turns it into an
607
+ * attachment (``services.set_product_deposit``) and leaves the product's
608
+ * other surcharges alone, unlike ``AdminProductSurchargesView`` which
609
+ * replaces the whole set.
610
+ *
611
+ * Adding a deposit is refused unless the store's compliance profile offers
612
+ * one, so a store outside Germany — or with no country — cannot get a
613
+ * deposit by calling the API directly when the portal never shows the
614
+ * section. Removing one is always allowed.
615
+ */
616
+ put: operations["admin_products_deposit_update"];
617
+ post?: never;
618
+ delete?: never;
619
+ options?: never;
620
+ head?: never;
621
+ patch?: never;
622
+ trace?: never;
623
+ };
580
624
  "/api/v1/admin/products/{product_id}/surcharges/": {
581
625
  parameters: {
582
626
  query?: never;
@@ -3164,6 +3208,7 @@ interface components {
3164
3208
  /** Format: decimal */
3165
3209
  value_numeric?: string | null;
3166
3210
  selected_choice_slugs?: string[];
3211
+ value_json?: unknown;
3167
3212
  };
3168
3213
  /**
3169
3214
  * @description The request body of the admin attribute-value upsert.
@@ -3183,6 +3228,21 @@ interface components {
3183
3228
  AdminAttributeValuesRequest: {
3184
3229
  values: components["schemas"]["AdminAttributeValueWrite"][];
3185
3230
  };
3231
+ /**
3232
+ * @description A product's deposit (Pfand) as the merchant portal's Price tab edits it.
3233
+ *
3234
+ * ``amount`` is the per-unit deposit in the store's currency, VAT-inclusive
3235
+ * like every surcharge amount: positive, in cents. Optional even when
3236
+ * ``applies`` is true — the amount is not hard-blocking (PAT-2275), and
3237
+ * ``{"applies": true, "amount": null}`` is a saved state in which nothing
3238
+ * is charged or shown until an amount is set. Ignored (and read back as
3239
+ * ``null``) when ``applies`` is false, and must be between 0.01 and 10.00.
3240
+ */
3241
+ AdminProductDeposit: {
3242
+ applies: boolean;
3243
+ /** Format: decimal */
3244
+ amount?: string | null;
3245
+ };
3186
3246
  /**
3187
3247
  * @description Lightweight product row for the merchant-portal product picker.
3188
3248
  *
@@ -3331,8 +3391,8 @@ interface components {
3331
3391
  AdminStoreComplianceDefaults: {
3332
3392
  /** @description Merchant-authored statement of how a customer returns a deposit-carrying container for the Pfand refund (D7). The platform charges and displays the deposit; the merchant runs the return — this is the platform's disclosure of that process, not the process itself. A store with any active deposit-charging product must set this before that product can list (see ``compliance.resolver.validate_products``). Empty means unset. */
3333
3393
  deposit_return_policy?: string;
3334
- /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A product-level value always takes precedence. Empty means unset. */
3335
- default_responsible_business?: string;
3394
+ /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A structured object of the operator's address sub-fields (company, street, postal_code, city, country). A product-level value always takes precedence. An empty object means unset. */
3395
+ default_responsible_business?: unknown;
3336
3396
  /** @description Fallback ``country_of_origin`` compliance value for this store's own prepacked products (D26). A product-level value always takes precedence. Empty means unset. */
3337
3397
  default_country_of_origin?: string;
3338
3398
  /** @description Whether this store offers reusable delivery packaging. German VerpackG §33 obliges eligible restaurants to offer and display the option; stores outside that scope leave it off and see no change. */
@@ -3609,12 +3669,13 @@ interface components {
3609
3669
  label: string;
3610
3670
  choices: components["schemas"]["ComplianceChoice"][];
3611
3671
  inherits_store_default: boolean;
3612
- inherited_value: string | null;
3672
+ inherited_value: unknown;
3613
3673
  };
3614
3674
  ComplianceSchemaResponse: {
3615
3675
  product_type: string;
3616
3676
  product_type_classified: boolean;
3617
3677
  requires_attestation: boolean;
3678
+ deposit_config_enabled: boolean;
3618
3679
  fields: components["schemas"]["ComplianceSchemaField"][];
3619
3680
  };
3620
3681
  ConfirmEdit: {
@@ -3964,12 +4025,14 @@ interface components {
3964
4025
  * * `datetime` - Date & Time
3965
4026
  * * `dropdown` - Dropdown
3966
4027
  * * `multiselect` - Multi-select
4028
+ * * `structured_list` - Structured List
4029
+ * * `structured_object` - Structured Object
3967
4030
  * * `file` - File
3968
4031
  * * `reference` - Reference
3969
4032
  * * `color` - Color
3970
4033
  * @enum {string}
3971
4034
  */
3972
- InputTypeEnum: "text" | "rich_text" | "numeric" | "boolean" | "date" | "datetime" | "dropdown" | "multiselect" | "file" | "reference" | "color";
4035
+ InputTypeEnum: "text" | "rich_text" | "numeric" | "boolean" | "date" | "datetime" | "dropdown" | "multiselect" | "structured_list" | "structured_object" | "file" | "reference" | "color";
3973
4036
  Invoice: {
3974
4037
  id: string;
3975
4038
  /** Format: int64 */
@@ -4253,6 +4316,11 @@ interface components {
4253
4316
  * @description Aggregated non-discountable surcharges (VAT-inclusive)
4254
4317
  */
4255
4318
  surcharge_total?: string;
4319
+ /**
4320
+ * Format: decimal
4321
+ * @description Deposits (subset of surcharge_total), shown separately.
4322
+ */
4323
+ deposit_total?: string;
4256
4324
  cancellation_reason?: string;
4257
4325
  /** Format: decimal */
4258
4326
  total: string;
@@ -4396,6 +4464,11 @@ interface components {
4396
4464
  tax_amount: string;
4397
4465
  /** Format: decimal */
4398
4466
  line_total: string;
4467
+ /**
4468
+ * Format: decimal
4469
+ * @description Deposit charged on this line, snapshotted at order time so removing the line refunds it.
4470
+ */
4471
+ deposit_amount?: string;
4399
4472
  fulfillment_type: string;
4400
4473
  /** Format: date */
4401
4474
  fulfillment_date?: string | null;
@@ -4776,8 +4849,8 @@ interface components {
4776
4849
  PatchedAdminStoreComplianceDefaults: {
4777
4850
  /** @description Merchant-authored statement of how a customer returns a deposit-carrying container for the Pfand refund (D7). The platform charges and displays the deposit; the merchant runs the return — this is the platform's disclosure of that process, not the process itself. A store with any active deposit-charging product must set this before that product can list (see ``compliance.resolver.validate_products``). Empty means unset. */
4778
4851
  deposit_return_policy?: string;
4779
- /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A product-level value always takes precedence. Empty means unset. */
4780
- default_responsible_business?: string;
4852
+ /** @description Fallback ``responsible_business`` compliance value for this store's own prepacked products, so a merchant can supply it once instead of on every product (D26). A structured object of the operator's address sub-fields (company, street, postal_code, city, country). A product-level value always takes precedence. An empty object means unset. */
4853
+ default_responsible_business?: unknown;
4781
4854
  /** @description Fallback ``country_of_origin`` compliance value for this store's own prepacked products (D26). A product-level value always takes precedence. Empty means unset. */
4782
4855
  default_country_of_origin?: string;
4783
4856
  /** @description Whether this store offers reusable delivery packaging. German VerpackG §33 obliges eligible restaurants to offer and display the option; stores outside that scope leave it off and see no change. */
@@ -5055,7 +5128,7 @@ interface components {
5055
5128
  amount?: string;
5056
5129
  /**
5057
5130
  * Format: decimal
5058
- * @description VAT rate for this surcharge, independent of the product's rate. German Pfand is charged at the standard rate (19%) while the food line is often reduced (7%), so the surcharge cannot inherit the product's rate. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5131
+ * @description VAT rate for this surcharge. Not used for a deposit attached to a product or modifier: German Pfand is an ancillary charge on the container and is taxed at the rate of the item it is attached to (UStAE A 10.1 Abs. 8). A deposit's rate here only applies when it is charged per order as the reusable-packaging deposit. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5059
5132
  */
5060
5133
  vat_rate?: string;
5061
5134
  /** @description Category: sup, deposit, bag_fee, packaging, etc. */
@@ -5130,6 +5203,7 @@ interface components {
5130
5203
  value_file?: string;
5131
5204
  /** Format: int64 */
5132
5205
  value_reference?: number | null;
5206
+ value_json?: unknown;
5133
5207
  readonly selected_choices: components["schemas"]["AttributeChoice"][];
5134
5208
  };
5135
5209
  /**
@@ -5259,6 +5333,8 @@ interface components {
5259
5333
  /** Format: decimal */
5260
5334
  price: string;
5261
5335
  /** Format: decimal */
5336
+ readonly deposit_amount: string | null;
5337
+ /** Format: decimal */
5262
5338
  compare_at_price?: string | null;
5263
5339
  currency?: string;
5264
5340
  /** Format: decimal */
@@ -5782,6 +5858,8 @@ interface components {
5782
5858
  price: string;
5783
5859
  currency: string;
5784
5860
  image_url: string;
5861
+ /** Format: decimal */
5862
+ deposit_amount?: string | null;
5785
5863
  reason: string;
5786
5864
  };
5787
5865
  Surcharge: {
@@ -5797,7 +5875,7 @@ interface components {
5797
5875
  amount: string;
5798
5876
  /**
5799
5877
  * Format: decimal
5800
- * @description VAT rate for this surcharge, independent of the product's rate. German Pfand is charged at the standard rate (19%) while the food line is often reduced (7%), so the surcharge cannot inherit the product's rate. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5878
+ * @description VAT rate for this surcharge. Not used for a deposit attached to a product or modifier: German Pfand is an ancillary charge on the container and is taxed at the rate of the item it is attached to (UStAE A 10.1 Abs. 8). A deposit's rate here only applies when it is charged per order as the reusable-packaging deposit. Stored as a fraction — the convention every VAT rate in this codebase carries: 19% is stored as 0.19, never 19.00. Required, like Product.vat_rate and ProductModifier.vat_rate: a missing rate must fail loudly rather than silently invoice at 0%.
5801
5879
  */
5802
5880
  vat_rate: string;
5803
5881
  /** @description Category: sup, deposit, bag_fee, packaging, etc. */
@@ -5948,6 +6026,7 @@ interface components {
5948
6026
  value_file?: string;
5949
6027
  /** Format: int64 */
5950
6028
  value_reference?: number | null;
6029
+ value_json?: unknown;
5951
6030
  readonly selected_choices: components["schemas"]["AttributeChoice"][];
5952
6031
  };
5953
6032
  VariantPriceOverride: {
@@ -8605,6 +8684,168 @@ interface operations {
8605
8684
  };
8606
8685
  };
8607
8686
  };
8687
+ admin_products_deposit_retrieve: {
8688
+ parameters: {
8689
+ query?: never;
8690
+ header?: {
8691
+ /** @description Company the request acts on. Ignored for merchant tokens (scoped to their own company); required for admin tokens to select a company. */
8692
+ "X-Sous-Company-Id"?: number;
8693
+ };
8694
+ path: {
8695
+ product_id: number;
8696
+ };
8697
+ cookie?: never;
8698
+ };
8699
+ requestBody?: never;
8700
+ responses: {
8701
+ 200: {
8702
+ headers: {
8703
+ [name: string]: unknown;
8704
+ };
8705
+ content: {
8706
+ "application/json": components["schemas"]["AdminProductDeposit"];
8707
+ };
8708
+ };
8709
+ /** @description Possible error codes include `VALIDATION_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8710
+ 400: {
8711
+ headers: {
8712
+ [name: string]: unknown;
8713
+ };
8714
+ content: {
8715
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8716
+ };
8717
+ };
8718
+ /** @description Possible error codes include `UNAUTHORIZED`. Use `x-error-codes` for machine-readable retryability metadata. */
8719
+ 401: {
8720
+ headers: {
8721
+ [name: string]: unknown;
8722
+ };
8723
+ content: {
8724
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8725
+ };
8726
+ };
8727
+ /** @description Possible error codes include `FORBIDDEN`. Use `x-error-codes` for machine-readable retryability metadata. */
8728
+ 403: {
8729
+ headers: {
8730
+ [name: string]: unknown;
8731
+ };
8732
+ content: {
8733
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8734
+ };
8735
+ };
8736
+ /** @description Possible error codes include `NOT_FOUND`. Use `x-error-codes` for machine-readable retryability metadata. */
8737
+ 404: {
8738
+ headers: {
8739
+ [name: string]: unknown;
8740
+ };
8741
+ content: {
8742
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8743
+ };
8744
+ };
8745
+ /** @description Possible error codes include `RATE_LIMITED`. Use `x-error-codes` for machine-readable retryability metadata. */
8746
+ 429: {
8747
+ headers: {
8748
+ [name: string]: unknown;
8749
+ };
8750
+ content: {
8751
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8752
+ };
8753
+ };
8754
+ /** @description Possible error codes include `INTERNAL_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8755
+ 500: {
8756
+ headers: {
8757
+ [name: string]: unknown;
8758
+ };
8759
+ content: {
8760
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8761
+ };
8762
+ };
8763
+ };
8764
+ };
8765
+ admin_products_deposit_update: {
8766
+ parameters: {
8767
+ query?: never;
8768
+ header?: {
8769
+ /** @description Company the request acts on. Ignored for merchant tokens (scoped to their own company); required for admin tokens to select a company. */
8770
+ "X-Sous-Company-Id"?: number;
8771
+ };
8772
+ path: {
8773
+ product_id: number;
8774
+ };
8775
+ cookie?: never;
8776
+ };
8777
+ requestBody: {
8778
+ content: {
8779
+ "application/json": components["schemas"]["AdminProductDeposit"];
8780
+ "application/x-www-form-urlencoded": components["schemas"]["AdminProductDeposit"];
8781
+ "multipart/form-data": components["schemas"]["AdminProductDeposit"];
8782
+ };
8783
+ };
8784
+ responses: {
8785
+ 200: {
8786
+ headers: {
8787
+ [name: string]: unknown;
8788
+ };
8789
+ content: {
8790
+ "application/json": components["schemas"]["AdminProductDeposit"];
8791
+ };
8792
+ };
8793
+ /** @description Possible error codes include `VALIDATION_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8794
+ 400: {
8795
+ headers: {
8796
+ [name: string]: unknown;
8797
+ };
8798
+ content: {
8799
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8800
+ };
8801
+ };
8802
+ /** @description Possible error codes include `UNAUTHORIZED`. Use `x-error-codes` for machine-readable retryability metadata. */
8803
+ 401: {
8804
+ headers: {
8805
+ [name: string]: unknown;
8806
+ };
8807
+ content: {
8808
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8809
+ };
8810
+ };
8811
+ /** @description Possible error codes include `FORBIDDEN`. Use `x-error-codes` for machine-readable retryability metadata. */
8812
+ 403: {
8813
+ headers: {
8814
+ [name: string]: unknown;
8815
+ };
8816
+ content: {
8817
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8818
+ };
8819
+ };
8820
+ /** @description Possible error codes include `NOT_FOUND`. Use `x-error-codes` for machine-readable retryability metadata. */
8821
+ 404: {
8822
+ headers: {
8823
+ [name: string]: unknown;
8824
+ };
8825
+ content: {
8826
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8827
+ };
8828
+ };
8829
+ /** @description Possible error codes include `RATE_LIMITED`. Use `x-error-codes` for machine-readable retryability metadata. */
8830
+ 429: {
8831
+ headers: {
8832
+ [name: string]: unknown;
8833
+ };
8834
+ content: {
8835
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8836
+ };
8837
+ };
8838
+ /** @description Possible error codes include `INTERNAL_ERROR`. Use `x-error-codes` for machine-readable retryability metadata. */
8839
+ 500: {
8840
+ headers: {
8841
+ [name: string]: unknown;
8842
+ };
8843
+ content: {
8844
+ "application/json": components["schemas"]["APIErrorEnvelope"];
8845
+ };
8846
+ };
8847
+ };
8848
+ };
8608
8849
  admin_products_surcharges_update: {
8609
8850
  parameters: {
8610
8851
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@poweredbysous/storefront-admin-sdk",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "Type-safe TypeScript SDK for SOUS Storefront Backend admin endpoints",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,