@elasticpath/js-sdk 7.0.0 → 8.1.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 CHANGED
@@ -322,7 +322,7 @@ We love community contributions. Here's a quick guide if you want to submit a pu
322
322
  2. Add a test for your change (it should fail)
323
323
  3. Make the tests pass
324
324
  4. Commit your changes (see note below)
325
- 5. Submit your PR with a brief description explaining your changes
325
+ 5. Submit your PR with a brief description explaining your changes
326
326
 
327
327
  > **Note:** Commits should adhere to the [Angular commit conventions](https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#-git-commit-guidelines).
328
328
 
package/dist/index.cjs.js CHANGED
@@ -530,7 +530,7 @@ if (!globalThis.fetch) {
530
530
  globalThis.Response = fetch$1.Response;
531
531
  }
532
532
 
533
- var version = "7.0.0";
533
+ var version = "8.1.0";
534
534
 
535
535
  var LocalStorageFactory = /*#__PURE__*/function () {
536
536
  function LocalStorageFactory() {
@@ -1801,6 +1801,53 @@ var PCMJobs = /*#__PURE__*/function (_CRUDExtend) {
1801
1801
  return PCMJobs;
1802
1802
  }(CRUDExtend);
1803
1803
 
1804
+ var PCMCustomRelationshipEndpoint = /*#__PURE__*/function () {
1805
+ function PCMCustomRelationshipEndpoint(endpoint) {
1806
+ _classCallCheck(this, PCMCustomRelationshipEndpoint);
1807
+ var config = _objectSpread2({}, endpoint);
1808
+ this.request = new RequestFactory(config);
1809
+ config.version = 'pcm';
1810
+ this.endpoint = 'custom-relationships';
1811
+ }
1812
+ _createClass(PCMCustomRelationshipEndpoint, [{
1813
+ key: "All",
1814
+ value: function All(productId) {
1815
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'GET');
1816
+ }
1817
+ }, {
1818
+ key: "AttachCustomRelationship",
1819
+ value: function AttachCustomRelationship(productId, body) {
1820
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'POST', body);
1821
+ }
1822
+ }, {
1823
+ key: "DetachCustomRelationship",
1824
+ value: function DetachCustomRelationship(productId, body) {
1825
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'DELETE', body);
1826
+ }
1827
+ }, {
1828
+ key: "AssociateProductsToCustomRelationship",
1829
+ value: function AssociateProductsToCustomRelationship(productId, customRelationshipSlug, productsToAssociate) {
1830
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'POST', productsToAssociate);
1831
+ }
1832
+ }, {
1833
+ key: "DissociateProductsFromCustomRelationship",
1834
+ value: function DissociateProductsFromCustomRelationship(productId, customRelationshipSlug, productsToDissociate) {
1835
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'DELETE', productsToDissociate);
1836
+ }
1837
+ }, {
1838
+ key: "GetProductsForCustomRelationship",
1839
+ value: function GetProductsForCustomRelationship(productId, customRelationshipSlug) {
1840
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug, "/products"), 'GET');
1841
+ }
1842
+ }, {
1843
+ key: "GetProductIdsForCustomRelationship",
1844
+ value: function GetProductIdsForCustomRelationship(productId, customRelationshipSlug) {
1845
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'GET');
1846
+ }
1847
+ }]);
1848
+ return PCMCustomRelationshipEndpoint;
1849
+ }();
1850
+
1804
1851
  var PCMEndpoint = /*#__PURE__*/function (_CRUDExtend) {
1805
1852
  _inherits(PCMEndpoint, _CRUDExtend);
1806
1853
  var _super = _createSuper(PCMEndpoint);
@@ -1814,6 +1861,7 @@ var PCMEndpoint = /*#__PURE__*/function (_CRUDExtend) {
1814
1861
  _this.VariationsRelationships = new PCMVariationsRelationshipsEndpoint(config);
1815
1862
  _this.TemplateRelationships = new PCMTemplateRelationshipEndpoint(config);
1816
1863
  _this.MainImageRelationships = new PCMMainImageRelationshipEndpoint(config);
1864
+ _this.CustomRelationships = new PCMCustomRelationshipEndpoint(config);
1817
1865
  _this.Jobs = new PCMJobs(config);
1818
1866
  _this.endpoint = 'products';
1819
1867
  return _this;
package/dist/index.d.ts CHANGED
@@ -673,6 +673,221 @@ interface PcmMainImageRelationshipEndpoint {
673
673
  ): Promise<void>
674
674
  }
675
675
 
676
+ /**
677
+ * Custom Relationships
678
+ * Description: Custom Relationships
679
+ */
680
+
681
+
682
+ interface CustomRelationshipBaseAttributes {
683
+ name: string
684
+ description?: string
685
+ slug: string
686
+ }
687
+
688
+ interface CustomRelationshipBase {
689
+ type: 'custom-relationship'
690
+ attributes: CustomRelationshipBaseAttributes
691
+ meta: {
692
+ owner: 'organization' | 'store'
693
+ timestamps: {
694
+ created_at: string
695
+ updated_at: string
696
+ }
697
+ }
698
+ }
699
+
700
+ interface CustomRelationship
701
+ extends Identifiable,
702
+ CustomRelationshipBase {}
703
+
704
+ interface CreateCustomRelationshipBody
705
+ extends Pick<CustomRelationshipBase, 'attributes'> {}
706
+
707
+ interface UpdateCustomRelationshipBody
708
+ extends Identifiable,
709
+ Pick<CustomRelationshipBase, 'attributes'> {}
710
+
711
+ interface CustomRelationshipsFilter {
712
+ eq?: {
713
+ owner?: 'organization' | 'store'
714
+ }
715
+ }
716
+
717
+ interface CustomRelationshipsListResponse
718
+ extends ResourceList<CustomRelationship> {
719
+ links?: { [key: string]: string | null } | {}
720
+ meta: {
721
+ results: {
722
+ total: number
723
+ }
724
+ }
725
+ }
726
+
727
+ interface CustomRelationshipsEndpoint {
728
+ endpoint: 'custom-relationships'
729
+ /**
730
+ * List Custom Relationships
731
+ */
732
+ All(): Promise<CustomRelationshipsListResponse>
733
+
734
+ /**
735
+ * Get Custom Relationship
736
+ * @param slug - The slug of the Custom Relationship. It should always be prefixed with 'CRP_'
737
+ */
738
+ Get(slug: string): Promise<Resource<CustomRelationship>>
739
+
740
+ /**
741
+ * Create Custom Relationship
742
+ * @param body - The base attributes of the Custom Relationships
743
+ */
744
+ Create(
745
+ body: CreateCustomRelationshipBody
746
+ ): Promise<Resource<CustomRelationship>>
747
+
748
+ /**
749
+ * Update Custom Relationship
750
+ * @param slug - The slug of the Custom Relationship. It should always be prefixed with 'CRP_'
751
+ * @param body - The base attributes of the Custom Relationships.
752
+ * The Slug attribute cannot be updated and the slug within this object should match this function's first argument.
753
+ */
754
+ Update(
755
+ slug: string,
756
+ body: UpdateCustomRelationshipBody
757
+ ): Promise<Resource<CustomRelationship>>
758
+
759
+ /**
760
+ * Delete Custom Relationship
761
+ * @param slug - The slug of the Custom Relationship. It should always be prefixed with 'CRP_'
762
+ */
763
+ Delete(slug: string): Promise<{}>
764
+
765
+ /**
766
+ * Custom Relationship filtering
767
+ * @param filter - The filter object.
768
+ * Currently supports the 'eq' filter operator for the 'owner' field of the Custom Relationship.
769
+ */
770
+ Filter(filter: CustomRelationshipsFilter): CustomRelationshipsEndpoint
771
+
772
+ Limit(value: number): CustomRelationshipsEndpoint
773
+
774
+ Offset(value: number): CustomRelationshipsEndpoint
775
+ }
776
+
777
+ /**
778
+ * Product Custom Relationships
779
+ */
780
+
781
+
782
+ interface PcmProductEntry extends Identifiable {
783
+ type: 'product'
784
+ }
785
+
786
+ interface CustomRelationshipEntry {
787
+ type: 'custom-relationship'
788
+ slug: string
789
+ }
790
+
791
+ interface PcmRelatedProductResponse<T> extends ResourceList<T> {
792
+ meta: {
793
+ results: {
794
+ total: number
795
+ }
796
+ }
797
+ }
798
+
799
+ interface NonAssociatedProductEntry extends Identifiable {
800
+ details: string
801
+ }
802
+
803
+ interface ProductAssociationResponse {
804
+ meta: {
805
+ associated_products: string[]
806
+ products_not_associated: NonAssociatedProductEntry[]
807
+ owner: 'organization' | 'store'
808
+ timestamps: {
809
+ created_at: string
810
+ updated_at: string
811
+ }
812
+ }
813
+ }
814
+
815
+ interface PcmCustomRelationshipEndpoint {
816
+ endpoint: 'custom-relationships'
817
+
818
+ /**
819
+ * Get all of a product's custom relationships
820
+ * @param productId
821
+ */
822
+ All(productId: string): Promise<CustomRelationshipsListResponse>
823
+
824
+ /**
825
+ * Attach a custom relationship to a product
826
+ * @param productId
827
+ * @param body
828
+ */
829
+ AttachCustomRelationship(
830
+ productId: string,
831
+ body: CustomRelationshipEntry
832
+ ): Promise<CustomRelationshipsListResponse>
833
+
834
+ /**
835
+ * Detach one or multiple custom relationships from a product
836
+ * @param productId
837
+ * @param body
838
+ */
839
+ DetachCustomRelationship(
840
+ productId: string,
841
+ body: CustomRelationshipEntry[]
842
+ ): Promise<void>
843
+
844
+ /**
845
+ * Associate a product with other products under a custom relationship
846
+ * @param productId
847
+ * @param customRelationshipSlug
848
+ * @param productsToAssociate
849
+ * @returns
850
+ */
851
+ AssociateProductsToCustomRelationship(
852
+ productId: string,
853
+ customRelationshipSlug: string,
854
+ productsToAssociate: PcmProductEntry[]
855
+ ): Promise<ProductAssociationResponse>
856
+
857
+ /**
858
+ * Dissociate related products from a product under a custom relationship
859
+ * @param productId
860
+ * @param customRelationshipSlug
861
+ * @param productsToDissociate
862
+ */
863
+ DissociateProductsFromCustomRelationship(
864
+ productId: string,
865
+ customRelationshipSlug: string,
866
+ productsToDissociate: PcmProductEntry[]
867
+ ): Promise<void>
868
+
869
+ /**
870
+ * Get all related products of a product under a custom relationship
871
+ * @param productId
872
+ * @param customRelationshipSlug
873
+ */
874
+ GetProductsForCustomRelationship(
875
+ productId: string,
876
+ customRelationshipSlug: string
877
+ ): Promise<PcmRelatedProductResponse<PcmProduct>>
878
+
879
+ /**
880
+ * Get all IDs of a product's related products under a custom relationship
881
+ * @param productId
882
+ * @param customRelationshipSlug
883
+ * TODO CHECK RETURN VALUE
884
+ */
885
+ GetProductIdsForCustomRelationship(
886
+ productId: string,
887
+ customRelationshipSlug: string
888
+ ): Promise<PcmRelatedProductResponse<PcmProductEntry>>
889
+ }
890
+
676
891
  /**
677
892
  * PCM Jobs
678
893
  */
@@ -1146,6 +1361,7 @@ interface PcmProductsEndpoint
1146
1361
  TemplateRelationships: PcmTemplateRelationshipEndpoint
1147
1362
  VariationsRelationships: PcmVariationsRelationshipsEndpoint
1148
1363
  MainImageRelationships: PcmMainImageRelationshipEndpoint
1364
+ CustomRelationships: PcmCustomRelationshipEndpoint
1149
1365
  Jobs: PcmJobsEndpoint
1150
1366
 
1151
1367
  Limit(value: number): PcmProductsEndpoint
@@ -8226,107 +8442,6 @@ interface SubscriptionProrationPoliciesEndpoint
8226
8442
  endpoint: 'proration-policies'
8227
8443
  }
8228
8444
 
8229
- /**
8230
- * Custom Relationships
8231
- * Description: Custom Relationships
8232
- */
8233
-
8234
-
8235
- interface CustomRelationshipBaseAttributes {
8236
- name: string
8237
- description?: string
8238
- slug: string
8239
- }
8240
-
8241
- interface CustomRelationshipBase {
8242
- type: 'custom-relationship'
8243
- attributes: CustomRelationshipBaseAttributes
8244
- meta: {
8245
- owner: 'organization' | 'store'
8246
- timestamps: {
8247
- created_at: string
8248
- updated_at: string
8249
- }
8250
- }
8251
- }
8252
-
8253
- interface CustomRelationship
8254
- extends Identifiable,
8255
- CustomRelationshipBase {}
8256
-
8257
- interface CreateCustomRelationshipBody
8258
- extends Pick<CustomRelationshipBase, 'attributes'> {}
8259
-
8260
- interface UpdateCustomRelationshipBody
8261
- extends Identifiable,
8262
- Pick<CustomRelationshipBase, 'attributes'> {}
8263
-
8264
- interface CustomRelationshipsFilter {
8265
- eq?: {
8266
- owner?: 'organization' | 'store'
8267
- }
8268
- }
8269
-
8270
- interface CustomRelationshipsListResponse
8271
- extends ResourceList<CustomRelationship> {
8272
- links?: { [key: string]: string | null } | {}
8273
- meta: {
8274
- results: {
8275
- total: number
8276
- }
8277
- }
8278
- }
8279
-
8280
- interface CustomRelationshipsEndpoint {
8281
- endpoint: 'custom-relationships'
8282
- /**
8283
- * List Custom Relationships
8284
- */
8285
- All(): Promise<CustomRelationshipsListResponse>
8286
-
8287
- /**
8288
- * Get Custom Relationship
8289
- * @param slug - The slug of the Custom Relationship. It should always be prefixed with 'CRP_'
8290
- */
8291
- Get(slug: string): Promise<Resource<CustomRelationship>>
8292
-
8293
- /**
8294
- * Create Custom Relationship
8295
- * @param body - The base attributes of the Custom Relationships
8296
- */
8297
- Create(
8298
- body: CreateCustomRelationshipBody
8299
- ): Promise<Resource<CustomRelationship>>
8300
-
8301
- /**
8302
- * Update Custom Relationship
8303
- * @param slug - The slug of the Custom Relationship. It should always be prefixed with 'CRP_'
8304
- * @param body - The base attributes of the Custom Relationships.
8305
- * The Slug attribute cannot be updated and the slug within this object should match this function's first argument.
8306
- */
8307
- Update(
8308
- slug: string,
8309
- body: UpdateCustomRelationshipBody
8310
- ): Promise<Resource<CustomRelationship>>
8311
-
8312
- /**
8313
- * Delete Custom Relationship
8314
- * @param slug - The slug of the Custom Relationship. It should always be prefixed with 'CRP_'
8315
- */
8316
- Delete(slug: string): Promise<{}>
8317
-
8318
- /**
8319
- * Custom Relationship filtering
8320
- * @param filter - The filter object.
8321
- * Currently supports the 'eq' filter operator for the 'owner' field of the Custom Relationship.
8322
- */
8323
- Filter(filter: CustomRelationshipsFilter): CustomRelationshipsEndpoint
8324
-
8325
- Limit(value: number): CustomRelationshipsEndpoint
8326
-
8327
- Offset(value: number): CustomRelationshipsEndpoint
8328
- }
8329
-
8330
8445
  // Type definitions for @elasticpath/js-sdk
8331
8446
 
8332
8447
 
@@ -8414,4 +8529,4 @@ declare namespace elasticpath {
8414
8529
  }
8415
8530
  }
8416
8531
 
8417
- export { Account, AccountAddress, AccountAddressBase, AccountAddressEdit, AccountAddressesEndpoint, AccountAssociationData, AccountAssociationResponse, AccountAuthenticationSettings, AccountAuthenticationSettingsBase, AccountAuthenticationSettingsEndpoint, AccountBase, AccountEndpoint, AccountFilter, AccountManagementAuthenticationTokenBody, AccountMember, AccountMemberBase, AccountMemberFilter, AccountMembersEndpoint, AccountMembership, AccountMembershipCreateBody, AccountMembershipOnAccountMember, AccountMembershipSettings, AccountMembershipSettingsBase, AccountMembershipSettingsEndpoint, AccountMembershipsEndpoint, AccountMembershipsFilter, AccountMembershipsInclude, AccountMembershipsIncludeAccounts, AccountMembershipsIncluded, AccountMembershipsIncludedAccounts, AccountMembershipsOnAccountMember, AccountMembershipsResponse, AccountTokenBase, AccountUpdateBody, Action, ActionCondition, ActionLimitation, Address, AddressBase, AdyenPayment, AndCondition, AnonymizeOrder, AnonymizeOrderResponse, ApplicationKey, ApplicationKeyBase, ApplicationKeyResponse, ApplicationKeysEndpoint, Attribute, Attributes, AttributesMeta, AuthenticateResponseBody, AuthenticationRealmEndpoint, AuthenticationSettings, AuthenticationSettingsBase, AuthenticationSettingsEndpoint, AuthorizeNetPayment, AuthorizePaymentMethod, BraintreePayment, Brand, BrandBase, BrandEndpoint, BrandFilter, BuildChildProductsJob, BuildRules, BuilderModifier, BulkAddOptions, BulkCustomDiscountOptions, BundleDiscountSchema, BundleGiftSchema, CapturePaymentMethod, CardConnectPayment, Cart, CartAdditionalHeaders, CartCustomDiscount, CartEndpoint, CartInclude, CartIncluded, CartItem, CartItemBase, CartItemObject, CartItemsResponse, CartSettings, CartShippingGroupBase, CartTaxItemObject, Catalog, CatalogBase, CatalogFilter, CatalogReleaseProductFilter, CatalogReleaseProductFilterAttributes, CatalogUpdateBody, CatalogsEndpoint, CatalogsNodesEndpoint, CatalogsProductVariation, CatalogsProductsEndpoint, CatalogsReleasesEndpoint, CatalogsRulesEndpoint, Category, CategoryBase, CategoryEndpoint, CategoryFilter, CheckoutCustomer, CheckoutCustomerObject, CodeFileHref, Collection, CollectionBase, CollectionEndpoint, CollectionFilter, Condition, Conditions, Config, ConfigOptions, ConfirmPaymentBody, ConfirmPaymentBodyWithOptions, ConfirmPaymentResponse, CreateCartObject, CreateChildrenSortOrderBody, CreateCustomRelationshipBody, CrudQueryableResource, Currency, CurrencyAmount, CurrencyBase, CurrencyEndpoint, CurrencyPercentage, CustomApi, CustomApiBase, CustomApiField, CustomApiFieldBase, CustomApisEndpoint, CustomAuthenticatorResponseBody, CustomDiscount, CustomDiscountResponse, CustomFieldValidation, CustomInputs, CustomInputsValidationRules, CustomRelationship, CustomRelationshipBase, CustomRelationshipBaseAttributes, CustomRelationshipsEndpoint, CustomRelationshipsFilter, CustomRelationshipsListResponse, Customer, CustomerAddress, CustomerAddressBase, CustomerAddressEdit, CustomerAddressesEndpoint, CustomerBase, CustomerFilter, CustomerInclude, CustomerToken, CustomersEndpoint, CyberSourcePayment, DataEntriesEndpoint, DataEntryRecord, DeletePromotionCodesBodyItem, DeleteRulePromotionCodes, DuplicateHierarchyBody, DuplicateHierarchyJob, ElasticPath, ElasticPathStripePayment, ErasureRequestRecord, ErasureRequestsEndpoint, Exclude$1 as Exclude, Extensions, Field, FieldBase, FieldsEndpoint, File, FileBase, FileEndpoint, FileFilter, FileHref, FixedDiscountSchema, Flow, FlowBase, FlowEndpoint, FlowFilter, FormattedPrice, Gateway, GatewayBase, GatewaysEndpoint, GrantType, HierarchiesEndpoint, HierarchiesShopperCatalogEndpoint, Hierarchy, HierarchyBase, HierarchyFilter, HttpVerbs, Identifiable, Integration, IntegrationBase, IntegrationEndpoint, IntegrationFilter, IntegrationJob, IntegrationLog, IntegrationLogMeta, IntegrationLogsResponse, Inventory, InventoryActionTypes, InventoryBase, InventoryEndpoint, InventoryResponse, InvoicingResult, ItemFixedDiscountSchema, ItemPercentDiscountSchema, ItemTaxObject, ItemTaxObjectResponse, Job, JobBase, JobEndpoint, LocalStorageFactory, Locales, LogIntegration, ManualPayment, MatrixObject, MemoryStorageFactory, MerchantRealmMappings, MerchantRealmMappingsEndpoint, MergeCartOptions, MetricsBase, MetricsEndpoint, MetricsQuery, Modifier, ModifierResponse, ModifierType, ModifierTypeObj, Node, NodeBase, NodeBaseResponse, NodeFilter, NodeProduct, NodeProductResponse, NodeRelationship, NodeRelationshipBase, NodeRelationshipParent, NodeRelationshipsEndpoint, NodesEndpoint, NodesResponse, NodesShopperCatalogEndpoint, OidcProfileEndpoint, OnboardingLinkResponse, OneTimePasswordTokenRequestBody, OneTimePasswordTokenRequestEndpoint, Option, OptionResponse, Order, OrderAddressBase, OrderBase, OrderBillingAddress, OrderFilter, OrderInclude, OrderIncluded, OrderItem, OrderItemBase, OrderResponse, OrderShippingAddress, OrderSort, OrderSortAscend, OrderSortDescend, OrdersEndpoint, PCMVariation, PCMVariationBase, PCMVariationMetaOption, PCMVariationOption, PCMVariationOptionBase, PCMVariationsEndpoint, PartialPcmProductBase, PasswordProfile, PasswordProfileBody, PasswordProfileEndpoint, PasswordProfileListItem, PasswordProfileResponse, PayPalExpressCheckoutPayment, PaymentMethod, PaymentRequestBody, PcmFileRelationship, PcmFileRelationshipEndpoint, PcmJob, PcmJobBase, PcmJobError, PcmJobsEndpoint, PcmMainImageRelationship, PcmMainImageRelationshipEndpoint, PcmProduct, PcmProductAttachmentBody, PcmProductAttachmentResponse, PcmProductBase, PcmProductFilter, PcmProductInclude, PcmProductRelationships, PcmProductResponse, PcmProductUpdateBody, PcmProductsEndpoint, PcmProductsResponse, PcmTemplateRelationship, PcmTemplateRelationshipEndpoint, PcmVariationsRelationshipResource, PcmVariationsRelationships, PcmVariationsRelationshipsEndpoint, PercentDiscountSchema, PersonalDataEndpoint, PersonalDataRecord, Price, PriceBook, PriceBookBase, PriceBookFilter, PriceBookPrice, PriceBookPriceBase, PriceBookPriceModifier, PriceBookPriceModifierBase, PriceBookPriceModifierEndpoint, PriceBookPricesCreateBody, PriceBookPricesEndpoint, PriceBookPricesUpdateBody, PriceBooksEndpoint, PriceBooksUpdateBody, PricesFilter, Product, ProductBase, ProductComponentOption, ProductComponents, ProductFileRelationshipResource, ProductFilter, ProductResponse, ProductTemplateRelationshipResource, ProductsEndpoint, Profile, ProfileBase, ProfileCreateUpdateBody, ProfileListItem, ProfileResponse, ProfileResponseBody, Promotion, PromotionAttribute, PromotionAttributeValues, PromotionBase, PromotionCode, PromotionCodesJob, PromotionFilter, PromotionJob, PromotionMeta, PromotionSettings, PromotionsEndpoint, PurchasePaymentMethod, QueryableResource, Realm, RealmBase, RealmCreateBody, RealmUpdateBody, RefundPaymentMethod, Relationship, RelationshipToMany, RelationshipToOne, ReleaseBase, ReleaseBodyBase, ReleaseResponse, RequestFactory, Requirements, Resource, ResourceIncluded, ResourceList, ResourcePage, Rule, RuleBase, RuleFilter, RulePromotion, RulePromotionBase, RulePromotionCode, RulePromotionMeta, RulePromotionsEndpoint, RuleUpdateBody, Settings, SettingsEndpoint, ShippingGroupBase, ShippingGroupResponse, ShippingIncluded, ShopperCatalogEndpoint, ShopperCatalogProductsEndpoint, ShopperCatalogReleaseBase, ShopperCatalogResource, ShopperCatalogResourceList, ShopperCatalogResourcePage, StorageFactory, StripeConnectPayment, StripeIntentsPayment, StripePayment, StripePaymentBase, StripePaymentOptionBase, Subscription, SubscriptionBase, SubscriptionCreate, SubscriptionDunningRules, SubscriptionDunningRulesBase, SubscriptionDunningRulesCreate, SubscriptionDunningRulesEndpoint, SubscriptionDunningRulesUpdate, SubscriptionFilter, SubscriptionInvoice, SubscriptionInvoiceBase, SubscriptionInvoiceFilter, SubscriptionInvoicePayment, SubscriptionInvoicePaymentBase, SubscriptionInvoicesEndpoint, SubscriptionJob, SubscriptionJobBase, SubscriptionJobCreate, SubscriptionJobsEndpoint, SubscriptionOffering, SubscriptionOfferingAttachPlanBody, SubscriptionOfferingAttachProductBody, SubscriptionOfferingAttachProrationPolicyBody, SubscriptionOfferingBase, SubscriptionOfferingBuildBody, SubscriptionOfferingBuildProduct, SubscriptionOfferingCreate, SubscriptionOfferingFilter, SubscriptionOfferingPlan, SubscriptionOfferingProduct, SubscriptionOfferingRelationships, SubscriptionOfferingUpdate, SubscriptionOfferingsEndpoint, SubscriptionPlan, SubscriptionPlanBase, SubscriptionPlanCreate, SubscriptionPlanUpdate, SubscriptionPlansEndpoint, SubscriptionProduct, SubscriptionProductBase, SubscriptionProductCreate, SubscriptionProductUpdate, SubscriptionProductsEndpoint, SubscriptionProrationPoliciesEndpoint, SubscriptionProrationPolicy, SubscriptionProrationPolicyBase, SubscriptionProrationPolicyCreate, SubscriptionProrationPolicyUpdate, SubscriptionSchedule, SubscriptionScheduleBase, SubscriptionScheduleCreate, SubscriptionScheduleUpdate, SubscriptionSchedulesEndpoint, SubscriptionSettings, SubscriptionSubscriber, SubscriptionSubscriberBase, SubscriptionSubscriberCreate, SubscriptionSubscriberUpdate, SubscriptionSubscribersEndpoint, SubscriptionUpdate, SubscriptionsEndpoint, SubscriptionsInclude, SubscriptionsIncluded, SubscriptionsStateAction, Subset, TargetCondition, Transaction, TransactionBase, TransactionEndpoint, TransactionsResponse, TtlSettings, UpdateCustomRelationshipBody, UpdateNodeBody, UpdateVariationBody, UpdateVariationOptionBody, UserAuthenticationInfo, UserAuthenticationInfoBody, UserAuthenticationInfoEndpoint, UserAuthenticationInfoFilter, UserAuthenticationInfoResponse, UserAuthenticationPasswordProfile, UserAuthenticationPasswordProfileBody, UserAuthenticationPasswordProfileEndpoint, UserAuthenticationPasswordProfileResponse, UserAuthenticationPasswordProfileUpdateBody, Validation, Variation, VariationBase, VariationsBuilderModifier, VariationsEndpoint, VariationsModifier, VariationsModifierResponse, VariationsModifierType, VariationsModifierTypeObj, XforAmountSchema, XforYSchema, createJob, elasticpath, gateway };
8532
+ export { Account, AccountAddress, AccountAddressBase, AccountAddressEdit, AccountAddressesEndpoint, AccountAssociationData, AccountAssociationResponse, AccountAuthenticationSettings, AccountAuthenticationSettingsBase, AccountAuthenticationSettingsEndpoint, AccountBase, AccountEndpoint, AccountFilter, AccountManagementAuthenticationTokenBody, AccountMember, AccountMemberBase, AccountMemberFilter, AccountMembersEndpoint, AccountMembership, AccountMembershipCreateBody, AccountMembershipOnAccountMember, AccountMembershipSettings, AccountMembershipSettingsBase, AccountMembershipSettingsEndpoint, AccountMembershipsEndpoint, AccountMembershipsFilter, AccountMembershipsInclude, AccountMembershipsIncludeAccounts, AccountMembershipsIncluded, AccountMembershipsIncludedAccounts, AccountMembershipsOnAccountMember, AccountMembershipsResponse, AccountTokenBase, AccountUpdateBody, Action, ActionCondition, ActionLimitation, Address, AddressBase, AdyenPayment, AndCondition, AnonymizeOrder, AnonymizeOrderResponse, ApplicationKey, ApplicationKeyBase, ApplicationKeyResponse, ApplicationKeysEndpoint, Attribute, Attributes, AttributesMeta, AuthenticateResponseBody, AuthenticationRealmEndpoint, AuthenticationSettings, AuthenticationSettingsBase, AuthenticationSettingsEndpoint, AuthorizeNetPayment, AuthorizePaymentMethod, BraintreePayment, Brand, BrandBase, BrandEndpoint, BrandFilter, BuildChildProductsJob, BuildRules, BuilderModifier, BulkAddOptions, BulkCustomDiscountOptions, BundleDiscountSchema, BundleGiftSchema, CapturePaymentMethod, CardConnectPayment, Cart, CartAdditionalHeaders, CartCustomDiscount, CartEndpoint, CartInclude, CartIncluded, CartItem, CartItemBase, CartItemObject, CartItemsResponse, CartSettings, CartShippingGroupBase, CartTaxItemObject, Catalog, CatalogBase, CatalogFilter, CatalogReleaseProductFilter, CatalogReleaseProductFilterAttributes, CatalogUpdateBody, CatalogsEndpoint, CatalogsNodesEndpoint, CatalogsProductVariation, CatalogsProductsEndpoint, CatalogsReleasesEndpoint, CatalogsRulesEndpoint, Category, CategoryBase, CategoryEndpoint, CategoryFilter, CheckoutCustomer, CheckoutCustomerObject, CodeFileHref, Collection, CollectionBase, CollectionEndpoint, CollectionFilter, Condition, Conditions, Config, ConfigOptions, ConfirmPaymentBody, ConfirmPaymentBodyWithOptions, ConfirmPaymentResponse, CreateCartObject, CreateChildrenSortOrderBody, CreateCustomRelationshipBody, CrudQueryableResource, Currency, CurrencyAmount, CurrencyBase, CurrencyEndpoint, CurrencyPercentage, CustomApi, CustomApiBase, CustomApiField, CustomApiFieldBase, CustomApisEndpoint, CustomAuthenticatorResponseBody, CustomDiscount, CustomDiscountResponse, CustomFieldValidation, CustomInputs, CustomInputsValidationRules, CustomRelationship, CustomRelationshipBase, CustomRelationshipBaseAttributes, CustomRelationshipEntry, CustomRelationshipsEndpoint, CustomRelationshipsFilter, CustomRelationshipsListResponse, Customer, CustomerAddress, CustomerAddressBase, CustomerAddressEdit, CustomerAddressesEndpoint, CustomerBase, CustomerFilter, CustomerInclude, CustomerToken, CustomersEndpoint, CyberSourcePayment, DataEntriesEndpoint, DataEntryRecord, DeletePromotionCodesBodyItem, DeleteRulePromotionCodes, DuplicateHierarchyBody, DuplicateHierarchyJob, ElasticPath, ElasticPathStripePayment, ErasureRequestRecord, ErasureRequestsEndpoint, Exclude$1 as Exclude, Extensions, Field, FieldBase, FieldsEndpoint, File, FileBase, FileEndpoint, FileFilter, FileHref, FixedDiscountSchema, Flow, FlowBase, FlowEndpoint, FlowFilter, FormattedPrice, Gateway, GatewayBase, GatewaysEndpoint, GrantType, HierarchiesEndpoint, HierarchiesShopperCatalogEndpoint, Hierarchy, HierarchyBase, HierarchyFilter, HttpVerbs, Identifiable, Integration, IntegrationBase, IntegrationEndpoint, IntegrationFilter, IntegrationJob, IntegrationLog, IntegrationLogMeta, IntegrationLogsResponse, Inventory, InventoryActionTypes, InventoryBase, InventoryEndpoint, InventoryResponse, InvoicingResult, ItemFixedDiscountSchema, ItemPercentDiscountSchema, ItemTaxObject, ItemTaxObjectResponse, Job, JobBase, JobEndpoint, LocalStorageFactory, Locales, LogIntegration, ManualPayment, MatrixObject, MemoryStorageFactory, MerchantRealmMappings, MerchantRealmMappingsEndpoint, MergeCartOptions, MetricsBase, MetricsEndpoint, MetricsQuery, Modifier, ModifierResponse, ModifierType, ModifierTypeObj, Node, NodeBase, NodeBaseResponse, NodeFilter, NodeProduct, NodeProductResponse, NodeRelationship, NodeRelationshipBase, NodeRelationshipParent, NodeRelationshipsEndpoint, NodesEndpoint, NodesResponse, NodesShopperCatalogEndpoint, NonAssociatedProductEntry, OidcProfileEndpoint, OnboardingLinkResponse, OneTimePasswordTokenRequestBody, OneTimePasswordTokenRequestEndpoint, Option, OptionResponse, Order, OrderAddressBase, OrderBase, OrderBillingAddress, OrderFilter, OrderInclude, OrderIncluded, OrderItem, OrderItemBase, OrderResponse, OrderShippingAddress, OrderSort, OrderSortAscend, OrderSortDescend, OrdersEndpoint, PCMVariation, PCMVariationBase, PCMVariationMetaOption, PCMVariationOption, PCMVariationOptionBase, PCMVariationsEndpoint, PartialPcmProductBase, PasswordProfile, PasswordProfileBody, PasswordProfileEndpoint, PasswordProfileListItem, PasswordProfileResponse, PayPalExpressCheckoutPayment, PaymentMethod, PaymentRequestBody, PcmCustomRelationshipEndpoint, PcmFileRelationship, PcmFileRelationshipEndpoint, PcmJob, PcmJobBase, PcmJobError, PcmJobsEndpoint, PcmMainImageRelationship, PcmMainImageRelationshipEndpoint, PcmProduct, PcmProductAttachmentBody, PcmProductAttachmentResponse, PcmProductBase, PcmProductEntry, PcmProductFilter, PcmProductInclude, PcmProductRelationships, PcmProductResponse, PcmProductUpdateBody, PcmProductsEndpoint, PcmProductsResponse, PcmRelatedProductResponse, PcmTemplateRelationship, PcmTemplateRelationshipEndpoint, PcmVariationsRelationshipResource, PcmVariationsRelationships, PcmVariationsRelationshipsEndpoint, PercentDiscountSchema, PersonalDataEndpoint, PersonalDataRecord, Price, PriceBook, PriceBookBase, PriceBookFilter, PriceBookPrice, PriceBookPriceBase, PriceBookPriceModifier, PriceBookPriceModifierBase, PriceBookPriceModifierEndpoint, PriceBookPricesCreateBody, PriceBookPricesEndpoint, PriceBookPricesUpdateBody, PriceBooksEndpoint, PriceBooksUpdateBody, PricesFilter, Product, ProductAssociationResponse, ProductBase, ProductComponentOption, ProductComponents, ProductFileRelationshipResource, ProductFilter, ProductResponse, ProductTemplateRelationshipResource, ProductsEndpoint, Profile, ProfileBase, ProfileCreateUpdateBody, ProfileListItem, ProfileResponse, ProfileResponseBody, Promotion, PromotionAttribute, PromotionAttributeValues, PromotionBase, PromotionCode, PromotionCodesJob, PromotionFilter, PromotionJob, PromotionMeta, PromotionSettings, PromotionsEndpoint, PurchasePaymentMethod, QueryableResource, Realm, RealmBase, RealmCreateBody, RealmUpdateBody, RefundPaymentMethod, Relationship, RelationshipToMany, RelationshipToOne, ReleaseBase, ReleaseBodyBase, ReleaseResponse, RequestFactory, Requirements, Resource, ResourceIncluded, ResourceList, ResourcePage, Rule, RuleBase, RuleFilter, RulePromotion, RulePromotionBase, RulePromotionCode, RulePromotionMeta, RulePromotionsEndpoint, RuleUpdateBody, Settings, SettingsEndpoint, ShippingGroupBase, ShippingGroupResponse, ShippingIncluded, ShopperCatalogEndpoint, ShopperCatalogProductsEndpoint, ShopperCatalogReleaseBase, ShopperCatalogResource, ShopperCatalogResourceList, ShopperCatalogResourcePage, StorageFactory, StripeConnectPayment, StripeIntentsPayment, StripePayment, StripePaymentBase, StripePaymentOptionBase, Subscription, SubscriptionBase, SubscriptionCreate, SubscriptionDunningRules, SubscriptionDunningRulesBase, SubscriptionDunningRulesCreate, SubscriptionDunningRulesEndpoint, SubscriptionDunningRulesUpdate, SubscriptionFilter, SubscriptionInvoice, SubscriptionInvoiceBase, SubscriptionInvoiceFilter, SubscriptionInvoicePayment, SubscriptionInvoicePaymentBase, SubscriptionInvoicesEndpoint, SubscriptionJob, SubscriptionJobBase, SubscriptionJobCreate, SubscriptionJobsEndpoint, SubscriptionOffering, SubscriptionOfferingAttachPlanBody, SubscriptionOfferingAttachProductBody, SubscriptionOfferingAttachProrationPolicyBody, SubscriptionOfferingBase, SubscriptionOfferingBuildBody, SubscriptionOfferingBuildProduct, SubscriptionOfferingCreate, SubscriptionOfferingFilter, SubscriptionOfferingPlan, SubscriptionOfferingProduct, SubscriptionOfferingRelationships, SubscriptionOfferingUpdate, SubscriptionOfferingsEndpoint, SubscriptionPlan, SubscriptionPlanBase, SubscriptionPlanCreate, SubscriptionPlanUpdate, SubscriptionPlansEndpoint, SubscriptionProduct, SubscriptionProductBase, SubscriptionProductCreate, SubscriptionProductUpdate, SubscriptionProductsEndpoint, SubscriptionProrationPoliciesEndpoint, SubscriptionProrationPolicy, SubscriptionProrationPolicyBase, SubscriptionProrationPolicyCreate, SubscriptionProrationPolicyUpdate, SubscriptionSchedule, SubscriptionScheduleBase, SubscriptionScheduleCreate, SubscriptionScheduleUpdate, SubscriptionSchedulesEndpoint, SubscriptionSettings, SubscriptionSubscriber, SubscriptionSubscriberBase, SubscriptionSubscriberCreate, SubscriptionSubscriberUpdate, SubscriptionSubscribersEndpoint, SubscriptionUpdate, SubscriptionsEndpoint, SubscriptionsInclude, SubscriptionsIncluded, SubscriptionsStateAction, Subset, TargetCondition, Transaction, TransactionBase, TransactionEndpoint, TransactionsResponse, TtlSettings, UpdateCustomRelationshipBody, UpdateNodeBody, UpdateVariationBody, UpdateVariationOptionBody, UserAuthenticationInfo, UserAuthenticationInfoBody, UserAuthenticationInfoEndpoint, UserAuthenticationInfoFilter, UserAuthenticationInfoResponse, UserAuthenticationPasswordProfile, UserAuthenticationPasswordProfileBody, UserAuthenticationPasswordProfileEndpoint, UserAuthenticationPasswordProfileResponse, UserAuthenticationPasswordProfileUpdateBody, Validation, Variation, VariationBase, VariationsBuilderModifier, VariationsEndpoint, VariationsModifier, VariationsModifierResponse, VariationsModifierType, VariationsModifierTypeObj, XforAmountSchema, XforYSchema, createJob, elasticpath, gateway };
package/dist/index.esm.js CHANGED
@@ -519,7 +519,7 @@ if (!globalThis.fetch) {
519
519
  globalThis.Response = Response;
520
520
  }
521
521
 
522
- var version = "7.0.0";
522
+ var version = "8.1.0";
523
523
 
524
524
  var LocalStorageFactory = /*#__PURE__*/function () {
525
525
  function LocalStorageFactory() {
@@ -1790,6 +1790,53 @@ var PCMJobs = /*#__PURE__*/function (_CRUDExtend) {
1790
1790
  return PCMJobs;
1791
1791
  }(CRUDExtend);
1792
1792
 
1793
+ var PCMCustomRelationshipEndpoint = /*#__PURE__*/function () {
1794
+ function PCMCustomRelationshipEndpoint(endpoint) {
1795
+ _classCallCheck(this, PCMCustomRelationshipEndpoint);
1796
+ var config = _objectSpread2({}, endpoint);
1797
+ this.request = new RequestFactory(config);
1798
+ config.version = 'pcm';
1799
+ this.endpoint = 'custom-relationships';
1800
+ }
1801
+ _createClass(PCMCustomRelationshipEndpoint, [{
1802
+ key: "All",
1803
+ value: function All(productId) {
1804
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'GET');
1805
+ }
1806
+ }, {
1807
+ key: "AttachCustomRelationship",
1808
+ value: function AttachCustomRelationship(productId, body) {
1809
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'POST', body);
1810
+ }
1811
+ }, {
1812
+ key: "DetachCustomRelationship",
1813
+ value: function DetachCustomRelationship(productId, body) {
1814
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'DELETE', body);
1815
+ }
1816
+ }, {
1817
+ key: "AssociateProductsToCustomRelationship",
1818
+ value: function AssociateProductsToCustomRelationship(productId, customRelationshipSlug, productsToAssociate) {
1819
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'POST', productsToAssociate);
1820
+ }
1821
+ }, {
1822
+ key: "DissociateProductsFromCustomRelationship",
1823
+ value: function DissociateProductsFromCustomRelationship(productId, customRelationshipSlug, productsToDissociate) {
1824
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'DELETE', productsToDissociate);
1825
+ }
1826
+ }, {
1827
+ key: "GetProductsForCustomRelationship",
1828
+ value: function GetProductsForCustomRelationship(productId, customRelationshipSlug) {
1829
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug, "/products"), 'GET');
1830
+ }
1831
+ }, {
1832
+ key: "GetProductIdsForCustomRelationship",
1833
+ value: function GetProductIdsForCustomRelationship(productId, customRelationshipSlug) {
1834
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'GET');
1835
+ }
1836
+ }]);
1837
+ return PCMCustomRelationshipEndpoint;
1838
+ }();
1839
+
1793
1840
  var PCMEndpoint = /*#__PURE__*/function (_CRUDExtend) {
1794
1841
  _inherits(PCMEndpoint, _CRUDExtend);
1795
1842
  var _super = _createSuper(PCMEndpoint);
@@ -1803,6 +1850,7 @@ var PCMEndpoint = /*#__PURE__*/function (_CRUDExtend) {
1803
1850
  _this.VariationsRelationships = new PCMVariationsRelationshipsEndpoint(config);
1804
1851
  _this.TemplateRelationships = new PCMTemplateRelationshipEndpoint(config);
1805
1852
  _this.MainImageRelationships = new PCMMainImageRelationshipEndpoint(config);
1853
+ _this.CustomRelationships = new PCMCustomRelationshipEndpoint(config);
1806
1854
  _this.Jobs = new PCMJobs(config);
1807
1855
  _this.endpoint = 'products';
1808
1856
  return _this;
package/dist/index.js CHANGED
@@ -1085,7 +1085,7 @@
1085
1085
  globalThis.Response = browserPonyfill.exports.Response;
1086
1086
  }
1087
1087
 
1088
- var version = "7.0.0";
1088
+ var version = "8.1.0";
1089
1089
 
1090
1090
  var LocalStorageFactory = /*#__PURE__*/function () {
1091
1091
  function LocalStorageFactory() {
@@ -2958,6 +2958,53 @@
2958
2958
  return PCMJobs;
2959
2959
  }(CRUDExtend);
2960
2960
 
2961
+ var PCMCustomRelationshipEndpoint = /*#__PURE__*/function () {
2962
+ function PCMCustomRelationshipEndpoint(endpoint) {
2963
+ _classCallCheck(this, PCMCustomRelationshipEndpoint);
2964
+ var config = _objectSpread2({}, endpoint);
2965
+ this.request = new RequestFactory(config);
2966
+ config.version = 'pcm';
2967
+ this.endpoint = 'custom-relationships';
2968
+ }
2969
+ _createClass(PCMCustomRelationshipEndpoint, [{
2970
+ key: "All",
2971
+ value: function All(productId) {
2972
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'GET');
2973
+ }
2974
+ }, {
2975
+ key: "AttachCustomRelationship",
2976
+ value: function AttachCustomRelationship(productId, body) {
2977
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'POST', body);
2978
+ }
2979
+ }, {
2980
+ key: "DetachCustomRelationship",
2981
+ value: function DetachCustomRelationship(productId, body) {
2982
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint), 'DELETE', body);
2983
+ }
2984
+ }, {
2985
+ key: "AssociateProductsToCustomRelationship",
2986
+ value: function AssociateProductsToCustomRelationship(productId, customRelationshipSlug, productsToAssociate) {
2987
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'POST', productsToAssociate);
2988
+ }
2989
+ }, {
2990
+ key: "DissociateProductsFromCustomRelationship",
2991
+ value: function DissociateProductsFromCustomRelationship(productId, customRelationshipSlug, productsToDissociate) {
2992
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'DELETE', productsToDissociate);
2993
+ }
2994
+ }, {
2995
+ key: "GetProductsForCustomRelationship",
2996
+ value: function GetProductsForCustomRelationship(productId, customRelationshipSlug) {
2997
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug, "/products"), 'GET');
2998
+ }
2999
+ }, {
3000
+ key: "GetProductIdsForCustomRelationship",
3001
+ value: function GetProductIdsForCustomRelationship(productId, customRelationshipSlug) {
3002
+ return this.request.send("products/".concat(productId, "/").concat(this.endpoint, "/").concat(customRelationshipSlug), 'GET');
3003
+ }
3004
+ }]);
3005
+ return PCMCustomRelationshipEndpoint;
3006
+ }();
3007
+
2961
3008
  var PCMEndpoint = /*#__PURE__*/function (_CRUDExtend) {
2962
3009
  _inherits(PCMEndpoint, _CRUDExtend);
2963
3010
  var _super = _createSuper(PCMEndpoint);
@@ -2971,6 +3018,7 @@
2971
3018
  _this.VariationsRelationships = new PCMVariationsRelationshipsEndpoint(config);
2972
3019
  _this.TemplateRelationships = new PCMTemplateRelationshipEndpoint(config);
2973
3020
  _this.MainImageRelationships = new PCMMainImageRelationshipEndpoint(config);
3021
+ _this.CustomRelationships = new PCMCustomRelationshipEndpoint(config);
2974
3022
  _this.Jobs = new PCMJobs(config);
2975
3023
  _this.endpoint = 'products';
2976
3024
  return _this;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elasticpath/js-sdk",
3
3
  "description": "SDK for the Elastic Path eCommerce API",
4
- "version": "7.0.0",
4
+ "version": "8.1.0",
5
5
  "homepage": "https://github.com/elasticpath/js-sdk",
6
6
  "author": "Elastic Path (https://elasticpath.com/)",
7
7
  "files": [