@sixtyninecommerce/admin 0.9.0 → 0.11.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/README.md +4598 -128
- package/dist/catalog/assets.d.ts +120 -8
- package/dist/catalog/assets.js +98 -12
- package/dist/catalog/collections.d.ts +279 -14
- package/dist/catalog/collections.js +246 -15
- package/dist/catalog/index.d.ts +9 -2
- package/dist/catalog/index.js +4 -0
- package/dist/catalog/products.d.ts +318 -17
- package/dist/catalog/products.js +182 -14
- package/dist/catalog/properties.d.ts +102 -14
- package/dist/catalog/properties.js +13 -0
- package/dist/catalog/recommendations.d.ts +261 -0
- package/dist/catalog/recommendations.js +145 -0
- package/dist/catalog/reviews.d.ts +368 -0
- package/dist/catalog/reviews.js +318 -0
- package/dist/catalog/types.d.ts +17 -1
- package/dist/catalog/types.js +10 -0
- package/dist/catalog/variant-find.d.ts +136 -0
- package/dist/catalog/variant-find.js +239 -0
- package/dist/catalog/variants.d.ts +282 -25
- package/dist/catalog/variants.js +173 -25
- package/dist/catalog/visibility.d.ts +20 -5
- package/dist/catalog/visibility.js +19 -1
- package/dist/client.d.ts +116 -9
- package/dist/client.js +41 -7
- package/dist/content/assets.d.ts +286 -0
- package/dist/content/assets.js +181 -0
- package/dist/content/items.d.ts +269 -0
- package/dist/content/items.js +170 -0
- package/dist/content/types.d.ts +282 -0
- package/dist/content/types.js +100 -0
- package/dist/customers/age-verification.d.ts +66 -0
- package/dist/customers/age-verification.js +79 -0
- package/dist/customers/credit.d.ts +263 -0
- package/dist/customers/credit.js +244 -0
- package/dist/customers/delivery-preferences.d.ts +120 -0
- package/dist/customers/delivery-preferences.js +97 -0
- package/dist/customers/groups.d.ts +207 -0
- package/dist/customers/groups.js +438 -0
- package/dist/customers/index.d.ts +447 -37
- package/dist/customers/index.js +313 -40
- package/dist/customers/invitation-status.d.ts +57 -0
- package/dist/customers/invitation-status.js +21 -0
- package/dist/customers/notes.d.ts +67 -0
- package/dist/customers/notes.js +51 -0
- package/dist/customers/notification-recipients.d.ts +97 -0
- package/dist/customers/notification-recipients.js +84 -0
- package/dist/customers/saved-lists.d.ts +42 -0
- package/dist/customers/saved-lists.js +61 -0
- package/dist/customers/vat.d.ts +83 -0
- package/dist/customers/vat.js +46 -0
- package/dist/customers/wire.d.ts +20 -0
- package/dist/customers/wire.js +35 -0
- package/dist/documents/ar.d.ts +307 -0
- package/dist/documents/ar.js +254 -0
- package/dist/documents/index.d.ts +731 -21
- package/dist/documents/index.js +436 -24
- package/dist/documents/pdf.d.ts +2 -0
- package/dist/documents/pdf.js +11 -0
- package/dist/fulfillments/create.d.ts +167 -0
- package/dist/fulfillments/create.js +216 -0
- package/dist/fulfillments/index.d.ts +121 -10
- package/dist/fulfillments/index.js +120 -2
- package/dist/fulfillments/payment-policy.d.ts +64 -0
- package/dist/fulfillments/payment-policy.js +140 -0
- package/dist/fulfillments/warehouse.d.ts +724 -0
- package/dist/fulfillments/warehouse.js +914 -0
- package/dist/geo/index.d.ts +119 -0
- package/dist/geo/index.js +107 -0
- package/dist/index.d.ts +129 -30
- package/dist/index.js +47 -9
- package/dist/integrations/afas-actions.d.ts +234 -0
- package/dist/integrations/afas-actions.js +310 -0
- package/dist/integrations/afas-types.d.ts +483 -0
- package/dist/integrations/afas-types.js +5 -0
- package/dist/integrations/afas.d.ts +234 -0
- package/dist/integrations/afas.js +290 -0
- package/dist/integrations/connections.d.ts +103 -0
- package/dist/integrations/connections.js +55 -0
- package/dist/integrations/esp.d.ts +313 -0
- package/dist/integrations/esp.js +169 -0
- package/dist/integrations/exact-online-types.d.ts +423 -0
- package/dist/integrations/exact-online-types.js +6 -0
- package/dist/integrations/exact-online.d.ts +248 -0
- package/dist/integrations/exact-online.js +376 -0
- package/dist/integrations/index.d.ts +40 -0
- package/dist/integrations/index.js +24 -0
- package/dist/integrations/pipeline-keys.d.ts +13 -0
- package/dist/integrations/pipeline-keys.js +22 -0
- package/dist/integrations/pipelines.d.ts +114 -0
- package/dist/integrations/pipelines.js +46 -0
- package/dist/integrations/types.d.ts +322 -0
- package/dist/integrations/types.js +8 -0
- package/dist/jobs/bulk-action-run.d.ts +11 -2
- package/dist/jobs/bulk-action-run.js +4 -5
- package/dist/locations/index.d.ts +66 -0
- package/dist/locations/index.js +31 -0
- package/dist/meta/index.d.ts +162 -0
- package/dist/orders/bulk.d.ts +75 -0
- package/dist/orders/bulk.js +150 -0
- package/dist/orders/cancel-with-money.d.ts +227 -0
- package/dist/orders/cancel-with-money.js +153 -0
- package/dist/orders/commit-edit.d.ts +7 -1
- package/dist/orders/commit-edit.js +5 -1
- package/dist/orders/deposit-policy.d.ts +103 -0
- package/dist/orders/deposit-policy.js +202 -0
- package/dist/orders/drafts.d.ts +800 -0
- package/dist/orders/drafts.js +771 -0
- package/dist/orders/fields.d.ts +245 -0
- package/dist/orders/fields.js +188 -0
- package/dist/orders/get.d.ts +29 -19
- package/dist/orders/get.js +17 -8
- package/dist/orders/index.d.ts +125 -5
- package/dist/orders/index.js +35 -2
- package/dist/orders/lifecycle.d.ts +128 -0
- package/dist/orders/lifecycle.js +158 -0
- package/dist/orders/line-price-preview.d.ts +7 -2
- package/dist/orders/list.d.ts +222 -0
- package/dist/orders/list.js +377 -0
- package/dist/orders/manual-discounts.d.ts +11 -2
- package/dist/orders/manual-discounts.js +2 -0
- package/dist/orders/manual-pricing.d.ts +5 -0
- package/dist/orders/order-entry.d.ts +20 -7
- package/dist/orders/plan-edit.d.ts +1 -1
- package/dist/orders/plan-edit.js +4 -1
- package/dist/orders/settings.d.ts +201 -0
- package/dist/orders/settings.js +325 -0
- package/dist/orders/status.d.ts +159 -13
- package/dist/orders/status.js +21 -0
- package/dist/orders/surcharges.d.ts +8 -1
- package/dist/orders/surcharges.js +3 -2
- package/dist/payments/account-credit.d.ts +30 -0
- package/dist/payments/account-credit.js +19 -0
- package/dist/payments/ar.d.ts +292 -0
- package/dist/payments/ar.js +223 -0
- package/dist/payments/connected-account.d.ts +47 -0
- package/dist/payments/connected-account.js +61 -0
- package/dist/payments/credit-noted-fields.d.ts +12 -0
- package/dist/payments/credit-noted-fields.js +37 -0
- package/dist/payments/index.d.ts +263 -10
- package/dist/payments/index.js +133 -1
- package/dist/payments/methods.d.ts +332 -0
- package/dist/payments/methods.js +363 -0
- package/dist/payments/mollie-methods.d.ts +159 -0
- package/dist/payments/mollie-methods.js +141 -0
- package/dist/payments/payment-links.d.ts +180 -0
- package/dist/payments/payment-links.js +97 -0
- package/dist/payments/provider-keys.d.ts +150 -0
- package/dist/payments/provider-keys.js +118 -0
- package/dist/payments/providers.d.ts +86 -11
- package/dist/payments/providers.js +29 -0
- package/dist/payments/requests.d.ts +144 -0
- package/dist/payments/requests.js +92 -0
- package/dist/payments/store-credit-fields.d.ts +15 -0
- package/dist/payments/store-credit-fields.js +51 -0
- package/dist/pickups/index.d.ts +104 -0
- package/dist/pickups/index.js +105 -0
- package/dist/platform/channels.d.ts +132 -0
- package/dist/platform/channels.js +128 -0
- package/dist/platform/geo.d.ts +123 -0
- package/dist/platform/geo.js +144 -0
- package/dist/platform/tax.d.ts +154 -0
- package/dist/platform/tax.js +139 -0
- package/dist/pos/anomalies.d.ts +158 -0
- package/dist/pos/anomalies.js +64 -0
- package/dist/pos/assisted-selling.d.ts +79 -0
- package/dist/pos/assisted-selling.js +38 -0
- package/dist/pos/exchanges.d.ts +103 -0
- package/dist/pos/exchanges.js +22 -0
- package/dist/pos/gift-cards.d.ts +135 -0
- package/dist/pos/gift-cards.js +47 -0
- package/dist/pos/index.d.ts +2125 -32
- package/dist/pos/index.js +742 -4
- package/dist/pos/no-receipt.d.ts +94 -0
- package/dist/pos/no-receipt.js +25 -0
- package/dist/pos/offline-sales.d.ts +187 -0
- package/dist/pos/offline-sales.js +116 -0
- package/dist/pos/pay-by-link.d.ts +143 -0
- package/dist/pos/pay-by-link.js +57 -0
- package/dist/pos/quick-keys.d.ts +103 -0
- package/dist/pos/quick-keys.js +45 -0
- package/dist/pos/reports.d.ts +360 -0
- package/dist/pos/reports.js +62 -0
- package/dist/pos/returns.d.ts +217 -0
- package/dist/pos/returns.js +53 -0
- package/dist/pricing/bulk-coupons.d.ts +139 -0
- package/dist/pricing/bulk-coupons.js +112 -0
- package/dist/pricing/index.d.ts +177 -4
- package/dist/pricing/index.js +176 -1
- package/dist/pricing/price-lists.d.ts +604 -0
- package/dist/pricing/price-lists.js +600 -0
- package/dist/pricing/vouchers.d.ts +103 -0
- package/dist/pricing/vouchers.js +69 -0
- package/dist/purchasing/alerts.d.ts +89 -0
- package/dist/purchasing/alerts.js +62 -0
- package/dist/purchasing/cost.d.ts +110 -0
- package/dist/purchasing/cost.js +86 -0
- package/dist/purchasing/index.d.ts +36 -0
- package/dist/purchasing/index.js +16 -0
- package/dist/purchasing/purchase-orders.d.ts +548 -0
- package/dist/purchasing/purchase-orders.js +491 -0
- package/dist/purchasing/replenishment.d.ts +281 -0
- package/dist/purchasing/replenishment.js +240 -0
- package/dist/purchasing/settings.d.ts +152 -0
- package/dist/purchasing/settings.js +181 -0
- package/dist/purchasing/suppliers.d.ts +476 -0
- package/dist/purchasing/suppliers.js +438 -0
- package/dist/quotes/index.d.ts +501 -0
- package/dist/quotes/index.js +439 -0
- package/dist/reports/index.d.ts +71 -8
- package/dist/reports/index.js +74 -11
- package/dist/returns/index.d.ts +818 -0
- package/dist/returns/index.js +844 -0
- package/dist/search/index.d.ts +174 -0
- package/dist/search/index.js +125 -0
- package/dist/shipping/definitions.d.ts +29 -0
- package/dist/shipping/definitions.js +47 -0
- package/dist/shipping/fulfillment-profiles.d.ts +174 -0
- package/dist/shipping/fulfillment-profiles.js +104 -0
- package/dist/shipping/hendriks.d.ts +97 -0
- package/dist/shipping/hendriks.js +50 -0
- package/dist/shipping/index.d.ts +48 -0
- package/dist/shipping/index.js +25 -0
- package/dist/shipping/methods.d.ts +198 -0
- package/dist/shipping/methods.js +240 -0
- package/dist/shipping/myparcel.d.ts +254 -0
- package/dist/shipping/myparcel.js +178 -0
- package/dist/shipping/parcel-count-suggestion.d.ts +2 -0
- package/dist/shipping/parcel-rule.d.ts +6 -5
- package/dist/shipping/parcel-rule.js +21 -23
- package/dist/shipping/rate-tables.d.ts +179 -0
- package/dist/shipping/rate-tables.js +184 -0
- package/dist/stock/index.d.ts +10 -3
- package/dist/stock/index.js +3 -0
- package/dist/stock/locations.d.ts +144 -0
- package/dist/stock/locations.js +168 -0
- package/dist/stock/transfers.d.ts +216 -43
- package/dist/stock/transfers.js +140 -13
- package/dist/stored-value/index.d.ts +214 -4
- package/dist/stored-value/index.js +152 -0
- package/dist/subscriptions/index.d.ts +682 -0
- package/dist/subscriptions/index.js +815 -0
- package/dist/tax/index.d.ts +76 -1
- package/dist/tax/index.js +50 -0
- package/dist/tenant/email-style.d.ts +102 -0
- package/dist/tenant/email-style.js +72 -0
- package/dist/tenant/email-templates.d.ts +66 -0
- package/dist/tenant/email-templates.js +54 -0
- package/dist/tenant/notifications.d.ts +23 -17
- package/dist/tenant/settings-sources.d.ts +1 -1
- package/dist/tenant/time-zone.d.ts +17 -0
- package/dist/tenant/time-zone.js +11 -0
- package/dist/types.d.ts +51 -4
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.js +2 -0
- package/dist/users/warehouses.d.ts +50 -0
- package/dist/users/warehouses.js +51 -0
- package/package.json +2 -2
|
@@ -2,7 +2,8 @@ import { type Page, type Transport } from '@sixtyninecommerce/core';
|
|
|
2
2
|
import type { JobHandle } from '../jobs/index.js';
|
|
3
3
|
import type { Call, ListOptions } from '../types.js';
|
|
4
4
|
import { type ProductBulkInput, type ProductBulkRun } from './products-bulk.js';
|
|
5
|
-
import { type AssetRef, type Availability, type AvailabilityInput, type CatalogueOwnership, type FacetValueRef, type LanguageCode, type ProductAvailabilityState, type TranslationInput } from './types.js';
|
|
5
|
+
import { type AssetRef, type Availability, type AvailabilityInput, type CatalogueOwnership, type FacetValueRef, type LanguageCode, type PriceBasis, type ProductAvailabilityState, type TranslationInput, type VariantAvailabilityState, type WireAssetRef } from './types.js';
|
|
6
|
+
import { type ParcelPacking, type VariantBackorderPolicy, type VariantPriceInput, type VariantStorePrice } from './variants.js';
|
|
6
7
|
export interface ProductOptionRef {
|
|
7
8
|
id: string;
|
|
8
9
|
code: string;
|
|
@@ -12,7 +13,18 @@ export interface ProductOptionGroupRef {
|
|
|
12
13
|
id: string;
|
|
13
14
|
code: string;
|
|
14
15
|
name: string;
|
|
16
|
+
/**
|
|
17
|
+
* The group is offered for reuse on the store's other products (the option-group editor's
|
|
18
|
+
* "shared" switch); false for a group made for this product alone.
|
|
19
|
+
*/
|
|
20
|
+
isShared: boolean;
|
|
15
21
|
options: ProductOptionRef[];
|
|
22
|
+
/** The group's name in each language it has one in. */
|
|
23
|
+
translations: Array<{
|
|
24
|
+
id: string;
|
|
25
|
+
languageCode: LanguageCode;
|
|
26
|
+
name: string;
|
|
27
|
+
}>;
|
|
16
28
|
}
|
|
17
29
|
export interface ProductTranslation {
|
|
18
30
|
id: string;
|
|
@@ -50,6 +62,27 @@ export interface Product extends Availability<ProductAvailabilityState> {
|
|
|
50
62
|
* product and in an organization's workspace.
|
|
51
63
|
*/
|
|
52
64
|
excludedFromStore: boolean;
|
|
65
|
+
/** The brand feeds name; null when none is set. */
|
|
66
|
+
brand: string | null;
|
|
67
|
+
/**
|
|
68
|
+
* The condition feeds state; null when none is set. A string on the wire: a stored value
|
|
69
|
+
* outside {@link ProductCondition} is answered as it is.
|
|
70
|
+
*/
|
|
71
|
+
condition: ProductCondition | (string & {}) | null;
|
|
72
|
+
}
|
|
73
|
+
/** A collection a product is in, as {@link ProductsModule.get} names it. */
|
|
74
|
+
export interface ProductCollectionRef {
|
|
75
|
+
id: string;
|
|
76
|
+
name: string;
|
|
77
|
+
slug: string;
|
|
78
|
+
}
|
|
79
|
+
/** A product as {@link ProductsModule.get} reads it: the {@link Product} and its collections. */
|
|
80
|
+
export interface ProductDetail extends Product {
|
|
81
|
+
/**
|
|
82
|
+
* Every collection of the store the product is in, by hand or through a collection's other
|
|
83
|
+
* filters, in the language the call asked for.
|
|
84
|
+
*/
|
|
85
|
+
collections: ProductCollectionRef[];
|
|
53
86
|
}
|
|
54
87
|
export interface ProductTranslationInput extends TranslationInput {
|
|
55
88
|
name?: string;
|
|
@@ -67,7 +100,15 @@ export interface CreateProductInput extends AvailabilityInput<ProductAvailabilit
|
|
|
67
100
|
assetIds?: string[];
|
|
68
101
|
/** Replaces the product's facet values on update — send the whole set. */
|
|
69
102
|
facetValueIds?: string[];
|
|
103
|
+
/**
|
|
104
|
+
* The brand feeds name; at most 70 characters when new or changed (`FEED_IDENTIFIER_INVALID`
|
|
105
|
+
* otherwise). Null or blank clears it. A stored value sent back unchanged is never judged.
|
|
106
|
+
*/
|
|
107
|
+
brand?: string | null;
|
|
108
|
+
condition?: ProductCondition;
|
|
70
109
|
}
|
|
110
|
+
/** A product's condition, as feeds state it. */
|
|
111
|
+
export type ProductCondition = 'new' | 'refurbished' | 'used';
|
|
71
112
|
/** A PATCH: omitted fields are left alone. */
|
|
72
113
|
export interface UpdateProductInput extends Partial<CreateProductInput> {
|
|
73
114
|
id: string;
|
|
@@ -93,6 +134,24 @@ export interface ProductListOptions extends ListOptions {
|
|
|
93
134
|
}
|
|
94
135
|
/** The engine's bound on one `exclude` or `include` call (`STORE_EXCLUSION_BATCH_LIMIT`). */
|
|
95
136
|
export declare const MAX_STORE_EXCLUSION_PRODUCTS = 500;
|
|
137
|
+
/** At most this many distinct products per {@link ProductsModule.storePriceRanges} call. */
|
|
138
|
+
export declare const MAX_STORE_PRICE_RANGE_PRODUCTS = 100;
|
|
139
|
+
/**
|
|
140
|
+
* The cheapest and the dearest of a product's variants in the ACTIVE store and the request's
|
|
141
|
+
* currency, as `ProductVariant.storePrice` prices them (stored prices and prices converted at the
|
|
142
|
+
* store's rate, compared). `price` is net and `priceWithTax` gross, as on `storePrice`.
|
|
143
|
+
*/
|
|
144
|
+
export interface ProductStorePriceRange {
|
|
145
|
+
min: VariantStorePrice;
|
|
146
|
+
max: VariantStorePrice;
|
|
147
|
+
/** At least one variant the store holds has no price in it; it is left out of min and max, never counted as 0. */
|
|
148
|
+
someVariantsUnpriced: boolean;
|
|
149
|
+
}
|
|
150
|
+
export interface ProductStorePriceRangeEntry {
|
|
151
|
+
productId: string;
|
|
152
|
+
/** Null when the store prices none of the product's variants it holds. */
|
|
153
|
+
range: ProductStorePriceRange | null;
|
|
154
|
+
}
|
|
96
155
|
/**
|
|
97
156
|
* The engine's bounds on one `setAvailabilityInStores` or `availabilityInStores` call
|
|
98
157
|
* (`AVAILABILITY_*_LIMIT`).
|
|
@@ -195,6 +254,109 @@ export interface ProductCollectionsResult {
|
|
|
195
254
|
reason: ProductCollectionNotRemovedReason | (string & {});
|
|
196
255
|
}>;
|
|
197
256
|
}
|
|
257
|
+
/** The product's own fields in a {@link ProductsModule.save}; a PATCH. */
|
|
258
|
+
export interface SaveProductFieldsInput extends AvailabilityInput<ProductAvailabilityState> {
|
|
259
|
+
/** In the save's `languageCode`. */
|
|
260
|
+
name?: string;
|
|
261
|
+
slug?: string;
|
|
262
|
+
description?: string;
|
|
263
|
+
enabled?: boolean;
|
|
264
|
+
/** Null: no featured image. */
|
|
265
|
+
featuredAssetId?: string | null;
|
|
266
|
+
/** The product's images, in display order; replaces the list. */
|
|
267
|
+
assetIds?: string[];
|
|
268
|
+
/** At most 70 characters when new or changed; null or blank clears it. */
|
|
269
|
+
brand?: string | null;
|
|
270
|
+
condition?: ProductCondition;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* One variant in a {@link ProductsModule.save}; a PATCH. A price (`price` or `prices`) travels
|
|
274
|
+
* with `priceBasis`, the store's basis, exactly as for `catalog.variants.update`.
|
|
275
|
+
*/
|
|
276
|
+
export interface SaveProductVariantInput extends AvailabilityInput<VariantAvailabilityState> {
|
|
277
|
+
id: string;
|
|
278
|
+
/** In the save's `languageCode`; trimmed. */
|
|
279
|
+
name?: string;
|
|
280
|
+
sku?: string;
|
|
281
|
+
enabled?: boolean;
|
|
282
|
+
/** Integer minor units of the store's default currency. */
|
|
283
|
+
price?: number;
|
|
284
|
+
/**
|
|
285
|
+
* The price in each named currency. A currency left out keeps its stored price (the list
|
|
286
|
+
* removes nothing), and one equal to what is stored is no change. Its default-currency entry
|
|
287
|
+
* must equal `price` when both are sent.
|
|
288
|
+
*/
|
|
289
|
+
prices?: VariantPriceInput[];
|
|
290
|
+
priceBasis?: PriceBasis;
|
|
291
|
+
taxCategoryId?: string;
|
|
292
|
+
/** Compared as a set. */
|
|
293
|
+
facetValueIds?: string[];
|
|
294
|
+
/** Null: no featured image. */
|
|
295
|
+
featuredAssetId?: string | null;
|
|
296
|
+
assetIds?: string[];
|
|
297
|
+
minOrderQuantity?: number | null;
|
|
298
|
+
salesUnit?: number | null;
|
|
299
|
+
/** Integer minor units of the store's default currency. */
|
|
300
|
+
cost?: number | null;
|
|
301
|
+
packageWeightGrams?: number | null;
|
|
302
|
+
packageLengthCm?: number | null;
|
|
303
|
+
packageWidthCm?: number | null;
|
|
304
|
+
packageHeightCm?: number | null;
|
|
305
|
+
/** 1 to 10,000; null: the store's items per parcel. */
|
|
306
|
+
parcelCapacity?: number | null;
|
|
307
|
+
/** Null: `shared`. */
|
|
308
|
+
parcelPacking?: ParcelPacking | null;
|
|
309
|
+
/** Null: `inherit`. */
|
|
310
|
+
backorderPolicy?: VariantBackorderPolicy | null;
|
|
311
|
+
backorderLimit?: number | null;
|
|
312
|
+
/** 8, 12, 13 or 14 digits when new or changed; null or blank clears it. */
|
|
313
|
+
gtin?: string | null;
|
|
314
|
+
mpn?: string | null;
|
|
315
|
+
}
|
|
316
|
+
/** One property value in a {@link ProductsModule.save}. */
|
|
317
|
+
export interface SaveProductPropertyValueInput {
|
|
318
|
+
propertyId: string;
|
|
319
|
+
/** A translatable property's language; the save's `languageCode` when left out. */
|
|
320
|
+
languageCode?: LanguageCode;
|
|
321
|
+
/** Null, `''` or `[]` clears it; a content-item or product property takes a list of ids. */
|
|
322
|
+
value: unknown;
|
|
323
|
+
}
|
|
324
|
+
/** A product page's whole change, for {@link ProductsModule.save}. */
|
|
325
|
+
export interface SaveProductInput {
|
|
326
|
+
id: string;
|
|
327
|
+
/** The editing language: names, slugs, descriptions and text values are written in it. */
|
|
328
|
+
languageCode: LanguageCode;
|
|
329
|
+
product?: SaveProductFieldsInput;
|
|
330
|
+
variants?: SaveProductVariantInput[];
|
|
331
|
+
/** The collections the product is in by hand: the whole wanted list. */
|
|
332
|
+
collectionIds?: string[];
|
|
333
|
+
/**
|
|
334
|
+
* The collections the caller last read the product in: only the difference is applied, so a
|
|
335
|
+
* change someone else made meanwhile stands (as `setCollections`' `from`). Needs `collectionIds`.
|
|
336
|
+
*/
|
|
337
|
+
fromCollectionIds?: string[];
|
|
338
|
+
/** An absent property keeps its value. */
|
|
339
|
+
propertyValues?: SaveProductPropertyValueInput[];
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Something a save did not do although everything it wrote is saved. A string on the wire: a
|
|
343
|
+
* newer engine may add a code.
|
|
344
|
+
* - `CONTENT_LABELS_NOT_SYNCED`: the content system did not answer, so the filter values of the
|
|
345
|
+
* properties in `propertyIds` were saved without their titles; run
|
|
346
|
+
* `catalog.syncContentFacets(propertyId)` on them once it is back.
|
|
347
|
+
*/
|
|
348
|
+
export interface SaveProductWarning {
|
|
349
|
+
code: 'CONTENT_LABELS_NOT_SYNCED' | (string & {});
|
|
350
|
+
message: string;
|
|
351
|
+
propertyIds: string[];
|
|
352
|
+
}
|
|
353
|
+
export interface SaveProductResult {
|
|
354
|
+
/** The product as saved. */
|
|
355
|
+
product: Product;
|
|
356
|
+
/** What the collection step did; null when the save changed no collection. */
|
|
357
|
+
collections: ProductCollectionsResult | null;
|
|
358
|
+
warnings: SaveProductWarning[];
|
|
359
|
+
}
|
|
198
360
|
/**
|
|
199
361
|
* Product-level catalog writes. Reading needs `ReadCatalog` (or `ReadProduct`),
|
|
200
362
|
* creating `CreateCatalog`, updating `UpdateCatalog`, deleting `DeleteCatalog`.
|
|
@@ -208,14 +370,66 @@ export interface ProductCollectionsResult {
|
|
|
208
370
|
* refuses".
|
|
209
371
|
*/
|
|
210
372
|
export interface ProductsModule {
|
|
373
|
+
/** @effect read */
|
|
211
374
|
list(options?: ProductListOptions): Promise<Page<Product>>;
|
|
212
|
-
/**
|
|
213
|
-
|
|
375
|
+
/**
|
|
376
|
+
* One product with the collections it is in; null for an id this store does not have — the
|
|
377
|
+
* same answer another tenant's product gets. Its variants are not part of it, however few: read
|
|
378
|
+
* them a page at a time with `catalog.variants.list(productId)` (a product can have 100,000).
|
|
379
|
+
*
|
|
380
|
+
* @effect read
|
|
381
|
+
*/
|
|
382
|
+
get(id: string, options?: Call): Promise<ProductDetail | null>;
|
|
383
|
+
/**
|
|
384
|
+
* Create a product, without variants (`catalog.variants.create` adds them). Needs
|
|
385
|
+
* `CreateCatalog` or `CreateProduct`.
|
|
386
|
+
*
|
|
387
|
+
* A new translation needs a name; its slug, when left out, is made from the name in that
|
|
388
|
+
* language, and its description is `''` (multi-region decision 106).
|
|
389
|
+
*
|
|
390
|
+
* Refusals (nothing is written):
|
|
391
|
+
* - `INVALID_PRODUCT_INPUT` → `ValidationError` (400): no translation; refused before sending.
|
|
392
|
+
* - `TRANSLATION_INPUT_INVALID` → `ValidationError` (400): a translation without a name, or
|
|
393
|
+
* with a name no slug can be made from (`!!!`) and no slug. One `details` entry per refused
|
|
394
|
+
* field, each message naming the language and the field; the entries carry no `field`
|
|
395
|
+
* pointer (the engine refuses below the call's arguments).
|
|
396
|
+
* - `TRANSLATION_LANGUAGE_NOT_OFFERED` → `BusinessRuleError` (422): a translation in a
|
|
397
|
+
* language the store does not offer. `details[].field` points at the translation entry
|
|
398
|
+
* (`/input/translations/<i>`); `message` names the language and the ones the store offers.
|
|
399
|
+
* - `FEED_IDENTIFIER_INVALID` → `ValidationError` (400): a brand over 70 characters.
|
|
400
|
+
* - `INVALID_DATETIME` → `ValidationError` (400): an `availableFrom` without an offset;
|
|
401
|
+
* refused before sending.
|
|
402
|
+
*
|
|
403
|
+
* @effect write
|
|
404
|
+
*/
|
|
214
405
|
create(input: CreateProductInput, options?: Call): Promise<Product>;
|
|
406
|
+
/**
|
|
407
|
+
* A PATCH of the product's own fields. A translation for a language the product has no row in
|
|
408
|
+
* is a NEW row, judged as on {@link create}; an existing row keeps what the input leaves out,
|
|
409
|
+
* and setting its name or slug to null is refused `TRANSLATION_INPUT_INVALID`. The other
|
|
410
|
+
* refusals are {@link create}'s, plus `FIELD_GROUP_LOCKED` and `MANAGED_BY_ORGANIZATION`
|
|
411
|
+
* (see above).
|
|
412
|
+
*
|
|
413
|
+
* @effect write
|
|
414
|
+
*/
|
|
215
415
|
update(input: UpdateProductInput, options?: Call): Promise<Product>;
|
|
216
416
|
/**
|
|
217
|
-
* Soft-deletes the product and its variants
|
|
218
|
-
*
|
|
417
|
+
* Soft-deletes the product and its variants: they are no longer listed, and orders keep the
|
|
418
|
+
* lines that name them. Nothing in this SDK restores it. Needs `DeleteCatalog` or
|
|
419
|
+
* `DeleteProduct`.
|
|
420
|
+
*
|
|
421
|
+
* Refusals (nothing is deleted):
|
|
422
|
+
* - `PRODUCT_NOT_DELETED` → `ConflictError` (409): the engine declined, in its own words.
|
|
423
|
+
* - `ENTITY_NOT_FOUND` → `NotFoundError` (404): a product this store does not hold.
|
|
424
|
+
* - `SHARED_PRODUCT_NOT_ALLOWED` → `PermissionDeniedError` (403): another store also holds it,
|
|
425
|
+
* and you may not delete there.
|
|
426
|
+
* - `MANAGED_BY_ORGANIZATION` → `BusinessRuleError` (422): a product of the store's
|
|
427
|
+
* organization.
|
|
428
|
+
* - `FIELD_GROUP_LOCKED` → `BusinessRuleError` (422): an app or API token owns a field group of
|
|
429
|
+
* the product or its variants.
|
|
430
|
+
* - `EXTERNAL_LINE_CARRIER_PROTECTED` → `BusinessRuleError` (422): the platform's carrier.
|
|
431
|
+
*
|
|
432
|
+
* @effect destructive
|
|
219
433
|
*/
|
|
220
434
|
delete(id: string, options?: Call): Promise<void>;
|
|
221
435
|
/**
|
|
@@ -316,6 +530,23 @@ export interface ProductsModule {
|
|
|
316
530
|
* store that is not a member.
|
|
317
531
|
*/
|
|
318
532
|
availabilityInStores(input: AvailabilityInStoresInput, options?: Call): Promise<OrganizationProductStoreAvailability[]>;
|
|
533
|
+
/**
|
|
534
|
+
* Each product's price range in the ACTIVE store and the request's currency
|
|
535
|
+
* (`Product.storePriceRange`), for a page of products in ONE request: the engine ranks only the
|
|
536
|
+
* variants the store holds, by the store's own prices. Use it rather than the first and last
|
|
537
|
+
* variant of a price-sorted variant list, which cannot compare stored prices with converted ones
|
|
538
|
+
* nor say that some variants are unpriced. One entry per distinct product, in the order named;
|
|
539
|
+
* a product the store does not hold is left out, the same answer another tenant's product gets.
|
|
540
|
+
* No ids answers none, without a request. Needs `ReadCatalog`.
|
|
541
|
+
*
|
|
542
|
+
* Refusals:
|
|
543
|
+
* - `PRODUCT_STORE_PRICE_RANGE_INPUT_INVALID` → `ValidationError` (400): more than
|
|
544
|
+
* {@link MAX_STORE_PRICE_RANGE_PRODUCTS} distinct ids; refused before sending.
|
|
545
|
+
* - An engine without `Product.storePriceRange` (vendure-server before #1580) refuses the
|
|
546
|
+
* document before running it: `ValidationError`, `GRAPHQL_VALIDATION_FAILED` (or
|
|
547
|
+
* `BAD_REQUEST`), never an empty answer.
|
|
548
|
+
*/
|
|
549
|
+
storePriceRanges(productIds: string[], options?: Call): Promise<ProductStorePriceRangeEntry[]>;
|
|
319
550
|
/**
|
|
320
551
|
* Make the ACTIVE member store's own copy of a product its organization shares with it, and
|
|
321
552
|
* stop offering the shared one, in one step (a local copy, or detach; spec §7.2.8). The copy
|
|
@@ -403,6 +634,54 @@ export interface ProductsModule {
|
|
|
403
634
|
setCollections(productId: string, collectionIds: readonly string[], options?: Call & {
|
|
404
635
|
from?: readonly string[];
|
|
405
636
|
}): Promise<ProductCollectionsResult>;
|
|
637
|
+
/**
|
|
638
|
+
* Save a product page's whole change in ONE engine transaction: all of it, or none of it
|
|
639
|
+
* (headless spec §7 `products.save`). In this order: the variants, the hand-picked collections
|
|
640
|
+
* (as {@link setCollections}), the property values (and the filter-label sync of each
|
|
641
|
+
* filterable product property), the product. Every step's check runs before the first write.
|
|
642
|
+
*
|
|
643
|
+
* A PATCH with an echo rule: only what the input names is compared, and only what differs from
|
|
644
|
+
* what the store holds is written. A head may send the whole form: an unchanged value is not a
|
|
645
|
+
* write, so it never records a change of its field group, and a product the store's
|
|
646
|
+
* organization shares is not refused for a shared field sent back unchanged.
|
|
647
|
+
*
|
|
648
|
+
* Labels of content-item values are read from the content system before the transaction. When
|
|
649
|
+
* it does not answer, the save still goes through and `warnings` names the properties whose
|
|
650
|
+
* filter values were saved without their titles.
|
|
651
|
+
*
|
|
652
|
+
* Needs `UpdateCatalog` or `UpdateProduct`, plus `UpdateCatalog` or `UpdateCollection` when it
|
|
653
|
+
* changes collections and `UpdateCatalog` when it changes property values. `idempotencyKey`: a
|
|
654
|
+
* repeat answers the first call's result. Platform releases before this method do not have the
|
|
655
|
+
* mutation and refuse it as `ValidationError` `GRAPHQL_VALIDATION_FAILED` (400): deploy the
|
|
656
|
+
* engine first.
|
|
657
|
+
*
|
|
658
|
+
* Refusals (nothing is written), GraphQL errors mapped by `core`:
|
|
659
|
+
* - `PRICE_BASIS_REQUIRED` / `PRICE_BASIS_MISMATCH` / `INVALID_PRICE` → `ValidationError`
|
|
660
|
+
* (400): a variant price without the store's basis; refused before sending.
|
|
661
|
+
* - `PRODUCT_SAVE_INPUT_INVALID` → `ValidationError` (400): the input names nothing, names a
|
|
662
|
+
* variant, currency or property value twice, uses a language the store does not offer, gives
|
|
663
|
+
* a value outside its field's range, or `price` and the default-currency entry of `prices`
|
|
664
|
+
* differ. `error.details` names each (`field` is a pointer into the call).
|
|
665
|
+
* - `PRODUCT_COLLECTIONS_INPUT_INVALID` → `ValidationError` (400): a collection list names one
|
|
666
|
+
* twice, or more than {@link MAX_PRODUCT_COLLECTION_IDS}; refused before sending too.
|
|
667
|
+
* - `FEED_IDENTIFIER_INVALID` → `ValidationError` (400): a new or changed brand over 70
|
|
668
|
+
* characters, or a GTIN of another shape.
|
|
669
|
+
* - `ENTITY_NOT_FOUND` → `NotFoundError` (404): a product, variant (of another product
|
|
670
|
+
* included), collection or property this store does not hold.
|
|
671
|
+
* - `FORBIDDEN` → `PermissionDeniedError` (403): a step's permission above is missing.
|
|
672
|
+
* - `SHARED_PRODUCT_NOT_ALLOWED`, `SHARED_PRODUCT_VARIANT_NOT_ALLOWED`,
|
|
673
|
+
* `SHARED_COLLECTION_NOT_ALLOWED` → `PermissionDeniedError` (403): a row another store also
|
|
674
|
+
* holds, which you cannot change there.
|
|
675
|
+
* - `MANAGED_BY_ORGANIZATION` → `BusinessRuleError` (422): a CHANGED field of a product, variant,
|
|
676
|
+
* collection or property value the store's organization holds. The store's own price, its own
|
|
677
|
+
* facet values, its own collections and its own property values pass.
|
|
678
|
+
* - `FIELD_GROUP_LOCKED` → `BusinessRuleError` (422): a field group an app or API token owns.
|
|
679
|
+
* - `PRODUCT_COLLECTION_FILTER_INVALID` → `ValidationError` (400): a collection whose
|
|
680
|
+
* hand-picked list cannot be read.
|
|
681
|
+
* - `EXTERNAL_LINE_CARRIER_PROTECTED` → `BusinessRuleError` (422): the platform's carrier.
|
|
682
|
+
* - `INVALID_TAX_CATEGORY_FOR_CLASS` → `ValidationError` (400).
|
|
683
|
+
*/
|
|
684
|
+
save(input: SaveProductInput, options?: Call): Promise<SaveProductResult>;
|
|
406
685
|
/**
|
|
407
686
|
* Enable, disable, delete or clone up to `MAX_BULK_PRODUCTS` (50) products of the store in ONE
|
|
408
687
|
* call (headless spec §7 `products.bulkClone`; §6.11).
|
|
@@ -457,27 +736,46 @@ export interface ProductsModule {
|
|
|
457
736
|
*/
|
|
458
737
|
bulkRun(runId: string, options?: Call): Promise<ProductBulkRun>;
|
|
459
738
|
}
|
|
460
|
-
export declare const PRODUCT_FIELDS = "\n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n";
|
|
461
|
-
export declare const PRODUCTS_QUERY = "\n query CatalogProducts($options: ProductListOptions) {\n products(options: $options) {\n items { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n }\n totalItems\n }\n }\n";
|
|
462
|
-
export declare const
|
|
463
|
-
|
|
464
|
-
|
|
739
|
+
export declare const PRODUCT_FIELDS = "\n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n";
|
|
740
|
+
export declare const PRODUCTS_QUERY = "\n query CatalogProducts($options: ProductListOptions) {\n products(options: $options) {\n items { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n totalItems\n }\n }\n";
|
|
741
|
+
export declare const PRODUCT_STORE_PRICE_RANGES_QUERY = "\n query CatalogProductStorePriceRanges($options: ProductListOptions) {\n products(options: $options) {\n items {\n id\n storePriceRange {\n min { price priceWithTax currencyCode }\n max { price priceWithTax currencyCode }\n someVariantsUnpriced\n }\n }\n }\n }\n";
|
|
742
|
+
/**
|
|
743
|
+
* One product, with the collections it is in. No variant data beyond `variantList`'s count: a
|
|
744
|
+
* product can have 100,000 variants, and core's `variants` would hand back the first 1,000 with
|
|
745
|
+
* no sign of the rest (`catalog.variants.list` pages them).
|
|
746
|
+
*/
|
|
747
|
+
export declare const PRODUCT_QUERY = "\n query CatalogProduct($id: ID!) {\n product(id: $id) {\n \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n\n collections {\n id\n name\n slug\n }\n }\n }\n";
|
|
748
|
+
export declare const CREATE_PRODUCT_MUTATION = "\n mutation CatalogCreateProduct($input: CreateProductInput!) {\n createProduct(input: $input) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n }\n";
|
|
749
|
+
export declare const UPDATE_PRODUCT_MUTATION = "\n mutation CatalogUpdateProduct($input: UpdateProductInput!) {\n updateProduct(input: $input) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n }\n";
|
|
465
750
|
export declare const DELETE_PRODUCT_MUTATION = "\n mutation CatalogDeleteProduct($id: ID!) {\n deleteProduct(id: $id) { \n result\n message\n }\n }\n";
|
|
466
751
|
export declare const CLONE_PRODUCT_MUTATION = "\n mutation CatalogCloneProduct($id: ID!) {\n cloneProduct(id: $id)\n }\n";
|
|
467
|
-
export declare const ADD_OPTION_GROUP_MUTATION = "\n mutation CatalogAddOptionGroup($productId: ID!, $optionGroupId: ID!) {\n addOptionGroupToProduct(productId: $productId, optionGroupId: $optionGroupId) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n }\n }\n";
|
|
468
|
-
export declare const REMOVE_OPTION_GROUP_MUTATION = "\n mutation CatalogRemoveOptionGroup($productId: ID!, $optionGroupId: ID!, $force: Boolean) {\n removeOptionGroupFromProduct(productId: $productId, optionGroupId: $optionGroupId, force: $force) {\n ... on Product { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n }\n ... on ErrorResult {\n errorCode\n message\n }\n }\n }\n";
|
|
469
|
-
export declare const EXCLUDE_PRODUCTS_FROM_STORE_MUTATION = "\n mutation CatalogExcludeProductsFromStore($productIds: [ID!]!) {\n excludeProductsFromStore(productIds: $productIds) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n }\n }\n";
|
|
470
|
-
export declare const INCLUDE_PRODUCTS_IN_STORE_MUTATION = "\n mutation CatalogIncludeProductsInStore($productIds: [ID!]!) {\n includeProductsInStore(productIds: $productIds) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n }\n }\n";
|
|
752
|
+
export declare const ADD_OPTION_GROUP_MUTATION = "\n mutation CatalogAddOptionGroup($productId: ID!, $optionGroupId: ID!) {\n addOptionGroupToProduct(productId: $productId, optionGroupId: $optionGroupId) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n }\n";
|
|
753
|
+
export declare const REMOVE_OPTION_GROUP_MUTATION = "\n mutation CatalogRemoveOptionGroup($productId: ID!, $optionGroupId: ID!, $force: Boolean) {\n removeOptionGroupFromProduct(productId: $productId, optionGroupId: $optionGroupId, force: $force) {\n ... on Product { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n ... on ErrorResult {\n errorCode\n message\n }\n }\n }\n";
|
|
754
|
+
export declare const EXCLUDE_PRODUCTS_FROM_STORE_MUTATION = "\n mutation CatalogExcludeProductsFromStore($productIds: [ID!]!) {\n excludeProductsFromStore(productIds: $productIds) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n }\n";
|
|
755
|
+
export declare const INCLUDE_PRODUCTS_IN_STORE_MUTATION = "\n mutation CatalogIncludeProductsInStore($productIds: [ID!]!) {\n includeProductsInStore(productIds: $productIds) { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n }\n";
|
|
471
756
|
export declare const SET_ORGANIZATION_PRODUCT_AVAILABILITY_MUTATION = "\n mutation CatalogSetOrganizationProductAvailability(\n $productIds: [ID!]!\n $channelIds: [ID!]!\n $available: Boolean!\n ) {\n setOrganizationProductAvailability(\n productIds: $productIds\n channelIds: $channelIds\n available: $available\n ) {\n productId\n channelId\n action\n }\n }\n";
|
|
472
757
|
export declare const ORGANIZATION_PRODUCT_AVAILABILITY_QUERY = "\n query CatalogOrganizationProductAvailability($productIds: [ID!]!, $channelIds: [ID!]!) {\n organizationProductAvailability(productIds: $productIds, channelIds: $channelIds) {\n productId\n channelId\n state\n localCopyId\n }\n }\n";
|
|
473
|
-
export declare const MAKE_LOCAL_COPY_MUTATION = "\n mutation CatalogMakeLocalCopy($productId: ID!, $skus: [LocalCopySkuInput!]) {\n makeLocalCopy(productId: $productId, skus: $skus) {\n product { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n }\n assets { \n id\n name\n preview\n source\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n options {\n id\n code\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n }\n }\n originalProductId\n original\n droppedOrganizationPropertyCount\n }\n }\n";
|
|
758
|
+
export declare const MAKE_LOCAL_COPY_MUTATION = "\n mutation CatalogMakeLocalCopy($productId: ID!, $skus: [LocalCopySkuInput!]) {\n makeLocalCopy(productId: $productId, skus: $skus) {\n product { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n originalProductId\n original\n droppedOrganizationPropertyCount\n }\n }\n";
|
|
474
759
|
export declare const SET_PRODUCT_COLLECTIONS_MUTATION = "\n mutation CatalogSetProductCollections(\n $productId: ID!\n $collectionIds: [ID!]!\n $fromCollectionIds: [ID!]\n ) {\n setProductCollections(\n productId: $productId\n collectionIds: $collectionIds\n fromCollectionIds: $fromCollectionIds\n ) {\n added\n removed\n unchanged\n notRemoved {\n collectionId\n reason\n }\n }\n }\n";
|
|
760
|
+
export declare const SAVE_PRODUCT_MUTATION = "\n mutation CatalogSaveProduct($input: SaveProductInput!, $idempotencyKey: String) {\n saveProduct(input: $input, idempotencyKey: $idempotencyKey) {\n product { \n id\n \n catalogueOwnership {\n state\n organizationName\n editableHere\n }\n\n createdAt\n updatedAt\n languageCode\n name\n slug\n description\n enabled\n featuredAsset { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n assets { \n id\n name\n preview\n source\n type\n mimeType\n customFields {\n altText\n }\n }\n facetValues { \n id\n code\n name\n facet {\n id\n code\n name\n }\n }\n optionGroups {\n id\n code\n name\n customFields {\n isShared\n }\n options {\n id\n code\n name\n }\n translations {\n id\n languageCode\n name\n }\n }\n translations {\n id\n languageCode\n name\n slug\n description\n }\n excludedFromStore\n variantList(options: { take: 1 }) {\n totalItems\n }\n customFields {\n availabilityState\n availableFrom\n preorderLimit\n brand\n condition\n }\n }\n collections {\n added\n removed\n unchanged\n notRemoved {\n collectionId\n reason\n }\n }\n warnings {\n code\n message\n propertyIds\n }\n }\n }\n";
|
|
761
|
+
/** An option group as the Admin API answers it inside a product, before `toProduct`. */
|
|
762
|
+
interface WireProductOptionGroup extends Omit<ProductOptionGroupRef, 'isShared'> {
|
|
763
|
+
customFields: {
|
|
764
|
+
isShared?: boolean | null;
|
|
765
|
+
} | null;
|
|
766
|
+
}
|
|
475
767
|
/** The product as the Admin API answers it, before `toProduct`. */
|
|
476
|
-
export interface WireProduct extends Omit<Product, keyof Availability<string> | 'variantCount'> {
|
|
768
|
+
export interface WireProduct extends Omit<Product, keyof Availability<string> | 'variantCount' | 'featuredAsset' | 'assets' | 'optionGroups' | 'brand' | 'condition'> {
|
|
769
|
+
featuredAsset: WireAssetRef | null;
|
|
770
|
+
assets: WireAssetRef[];
|
|
771
|
+
optionGroups: WireProductOptionGroup[];
|
|
477
772
|
variantList: {
|
|
478
773
|
totalItems: number;
|
|
479
774
|
};
|
|
480
|
-
customFields: Partial<Availability<ProductAvailabilityState>>
|
|
775
|
+
customFields: (Partial<Availability<ProductAvailabilityState>> & {
|
|
776
|
+
brand?: string | null;
|
|
777
|
+
condition?: string | null;
|
|
778
|
+
}) | null;
|
|
481
779
|
}
|
|
482
780
|
/**
|
|
483
781
|
* Lift the availability custom fields to first-class fields. A server older
|
|
@@ -486,4 +784,7 @@ export interface WireProduct extends Omit<Product, keyof Availability<string> |
|
|
|
486
784
|
*/
|
|
487
785
|
export declare function toProduct(wire: WireProduct): Product;
|
|
488
786
|
export declare function productFilter(filter: ProductListFilter | undefined): Record<string, unknown>;
|
|
787
|
+
/** The engine's `ProductListOptions` for one page of {@link ProductListOptions}. */
|
|
788
|
+
export declare function productListOptions(options: ProductListOptions | undefined, skip: number, take: number): Record<string, unknown>;
|
|
489
789
|
export declare function createProductsModule(transport: Transport): ProductsModule;
|
|
790
|
+
export {};
|