import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules'; import { transformSDKTimestampToRESTTimestamp } from '@wix/sdk-runtime/transformations/timestamp'; import { transformRESTTimestampToSDKTimestamp } from '@wix/sdk-runtime/transformations/timestamp'; import { transformSDKFieldMaskToRESTFieldMask } from '@wix/sdk-runtime/transformations/field-mask'; import { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths'; import { resolveUrl } from '@wix/sdk-runtime/rest-modules'; import { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules'; import { RequestOptionsFactory } from '@wix/sdk-types'; function resolveWixBenefitProgramsV1ItemItemServiceUrl( opts: Omit ) { const domainToMappings = { '*.dev.wix-code.com': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], '*.pub.wix-code.com': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], _: [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'editor._base_domain_': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'blocks._base_domain_': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'create.editorx': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'editor.wixapps.net': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'manage._base_domain_': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'www._base_domain_': [ { srcPath: '/_api/benefit-programs-items', destPath: '', }, ], 'www.wixapis.com': [ { srcPath: '/benefit-programs-items', destPath: '', }, ], 'api._api_base_domain_': [ { srcPath: '/benefit-programs-items', destPath: '', }, ], }; return resolveUrl(Object.assign(opts, { domainToMappings })); } const PACKAGE_NAME = '@wix/benefit-programs_item'; /** Create an item */ export function createItem(payload: object): RequestOptionsFactory { function __createItem({ host }: any) { const serializedData = transformPaths(payload, [ { transformFn: transformSDKTimestampToRESTTimestamp, paths: [{ path: 'item.createdDate' }, { path: 'item.updatedDate' }], }, ]); const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.CreateItem', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items', data: serializedData, host, }), data: serializedData, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'item.createdDate' }, { path: 'item.updatedDate' }], }, ]), }; return metadata; } return __createItem; } /** Adds items to the benefit */ export function bulkCreateItems(payload: object): RequestOptionsFactory { function __bulkCreateItems({ host }: any) { const serializedData = transformPaths(payload, [ { transformFn: transformSDKTimestampToRESTTimestamp, paths: [{ path: 'items.createdDate' }, { path: 'items.updatedDate' }], }, ]); const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.BulkCreateItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/bulk/items/create', data: serializedData, host, }), data: serializedData, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [ { path: 'results.item.createdDate' }, { path: 'results.item.updatedDate' }, ], }, ]), }; return metadata; } return __bulkCreateItems; } /** Removes the item from the benefit */ export function deleteItem(payload: object): RequestOptionsFactory { function __deleteItem({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.DeleteItem', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items/{itemId}/delete', data: payload, host, }), data: payload, }; return metadata; } return __deleteItem; } /** Deletes the items */ export function bulkDeleteItems(payload: object): RequestOptionsFactory { function __bulkDeleteItems({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.BulkDeleteItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/bulk/items/delete', data: payload, host, }), data: payload, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [ { path: 'results.item.createdDate' }, { path: 'results.item.updatedDate' }, ], }, ]), }; return metadata; } return __bulkDeleteItems; } /** Deletes the items by filter */ export function bulkDeleteItemsByFilter( payload: object ): RequestOptionsFactory { function __bulkDeleteItemsByFilter({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.BulkDeleteItemsByFilter', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/bulk/items/delete-by-filter', data: payload, host, }), data: payload, }; return metadata; } return __bulkDeleteItemsByFilter; } /** * Update the Item, supports partial update * Pass the latest `revision` for a successful update */ export function updateItem(payload: object): RequestOptionsFactory { function __updateItem({ host }: any) { const serializedData = transformPaths(payload, [ { transformFn: transformSDKFieldMaskToRESTFieldMask, paths: [{ path: 'fieldMask' }], }, { transformFn: transformSDKTimestampToRESTTimestamp, paths: [{ path: 'item.createdDate' }, { path: 'item.updatedDate' }], }, ]); const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'PATCH' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.UpdateItem', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items/{item.id}', data: serializedData, host, }), data: serializedData, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'item.createdDate' }, { path: 'item.updatedDate' }], }, ]), }; return metadata; } return __updateItem; } /** * Update the Item, supports partial update * Pass the latest `revision` for a successful update */ export function bulkUpdateItems(payload: object): RequestOptionsFactory { function __bulkUpdateItems({ host }: any) { const serializedData = transformPaths(payload, [ { transformFn: transformSDKFieldMaskToRESTFieldMask, paths: [{ path: 'items.fieldMask' }], }, { transformFn: transformSDKTimestampToRESTTimestamp, paths: [ { path: 'items.item.createdDate' }, { path: 'items.item.updatedDate' }, ], }, ]); const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.BulkUpdateItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/bulk/items/update', data: serializedData, host, }), data: serializedData, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [ { path: 'results.item.createdDate' }, { path: 'results.item.updatedDate' }, ], }, ]), }; return metadata; } return __bulkUpdateItems; } /** Get a Benefit Item by id */ export function getItem(payload: object): RequestOptionsFactory { function __getItem({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'GET' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.GetItem', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items/{itemId}', data: payload, host, }), params: toURLSearchParams(payload), transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'item.createdDate' }, { path: 'item.updatedDate' }], }, ]), }; return metadata; } return __getItem; } /** Get all items matching the filter */ export function listItems(payload: object): RequestOptionsFactory { function __listItems({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'GET' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.ListItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items', data: payload, host, }), params: toURLSearchParams(payload), transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [ { path: 'items.createdDate' }, { path: 'items.updatedDate' }, ], }, ]), }; return metadata; } return __listItems; } /** Query Items using [WQL - Wix Query Language](https://dev.wix.com/api/rest/getting-started/api-query-language) */ export function queryItems(payload: object): RequestOptionsFactory { function __queryItems({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.QueryItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items/query', data: payload, host, }), data: payload, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [ { path: 'items.createdDate' }, { path: 'items.updatedDate' }, ], }, ]), }; return metadata; } return __queryItems; } /** Used for counting items */ export function countItems(payload: object): RequestOptionsFactory { function __countItems({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.CountItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items/count', data: payload, host, }), data: payload, }; return metadata; } return __countItems; } /** Clone the item set */ export function cloneItems(payload: object): RequestOptionsFactory { function __cloneItems({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.CloneItems', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/items/clone', data: payload, host, }), data: payload, }; return metadata; } return __cloneItems; } /** Clone the item set */ export function bulkCloneItemSets(payload: object): RequestOptionsFactory { function __bulkCloneItemSets({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.BulkCloneItemSets', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/bulk/set/clone', data: payload, host, }), data: payload, }; return metadata; } return __bulkCloneItemSets; } /** Allocates the provided number of sets */ export function allocateItemSets(payload: object): RequestOptionsFactory { function __allocateItemSets({ host }: any) { const metadata = { entityFqdn: 'wix.benefit_programs.v1.item', method: 'POST' as any, methodFqn: 'wix.benefit_programs.v1.item.ItemService.AllocateItemSets', packageName: PACKAGE_NAME, url: resolveWixBenefitProgramsV1ItemItemServiceUrl({ protoPath: '/v1/set', data: payload, host, }), data: payload, }; return metadata; } return __allocateItemSets; }