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 { 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 resolveWixOsV1TagsServiceUrl( opts: Omit ) { const domainToMappings = { 'api._api_base_domain_': [ { srcPath: '/tags-service', destPath: '', }, ], 'manage._base_domain_': [ { srcPath: '/tags-service', destPath: '', }, ], '*.dev.wix-code.com': [ { srcPath: '/_api/tags-service', destPath: '/v1/tags', }, ], 'www.wixapis.com': [ { srcPath: '/tags/v1/tags', destPath: '/v1/tags', }, ], }; return resolveUrl(Object.assign(opts, { domainToMappings })); } const PACKAGE_NAME = '@wix/tags_tags'; /** Creates a tag. */ export function createTag(payload: object): RequestOptionsFactory { function __createTag({ host }: any) { const serializedData = transformPaths(payload, [ { transformFn: transformSDKTimestampToRESTTimestamp, paths: [{ path: 'tag.createdDate' }, { path: 'tag.updatedDate' }], }, ]); const metadata = { entityFqdn: 'wix.os.tags.v1.tag', method: 'POST' as any, methodFqn: 'wix.os.v1.TagsService.CreateTag', packageName: PACKAGE_NAME, url: resolveWixOsV1TagsServiceUrl({ protoPath: '/v1/tags', data: serializedData, host, }), data: serializedData, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'tag.createdDate' }, { path: 'tag.updatedDate' }], }, ]), }; return metadata; } return __createTag; } /** Retrieves a tag. */ export function getTag(payload: object): RequestOptionsFactory { function __getTag({ host }: any) { const metadata = { entityFqdn: 'wix.os.tags.v1.tag', method: 'GET' as any, methodFqn: 'wix.os.v1.TagsService.GetTag', packageName: PACKAGE_NAME, url: resolveWixOsV1TagsServiceUrl({ protoPath: '/v1/tags/{tagId}', data: payload, host, }), params: toURLSearchParams(payload), transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'tag.createdDate' }, { path: 'tag.updatedDate' }], }, ]), }; return metadata; } return __getTag; } /** Updates a tag. */ export function updateTag(payload: object): RequestOptionsFactory { function __updateTag({ host }: any) { const serializedData = transformPaths(payload, [ { transformFn: transformSDKTimestampToRESTTimestamp, paths: [{ path: 'tag.createdDate' }, { path: 'tag.updatedDate' }], }, ]); const metadata = { entityFqdn: 'wix.os.tags.v1.tag', method: 'PATCH' as any, methodFqn: 'wix.os.v1.TagsService.UpdateTag', packageName: PACKAGE_NAME, url: resolveWixOsV1TagsServiceUrl({ protoPath: '/v1/tags/{tag.id}', data: serializedData, host, }), data: serializedData, transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'tag.createdDate' }, { path: 'tag.updatedDate' }], }, ]), }; return metadata; } return __updateTag; } /** Deletes a tag. */ export function deleteTag(payload: object): RequestOptionsFactory { function __deleteTag({ host }: any) { const metadata = { entityFqdn: 'wix.os.tags.v1.tag', method: 'DELETE' as any, methodFqn: 'wix.os.v1.TagsService.DeleteTag', packageName: PACKAGE_NAME, url: resolveWixOsV1TagsServiceUrl({ protoPath: '/v1/tags/{tagId}', data: payload, host, }), params: toURLSearchParams(payload), }; return metadata; } return __deleteTag; } /** Retrieves a list of tags. */ export function listTags(payload: object): RequestOptionsFactory { function __listTags({ host }: any) { const metadata = { entityFqdn: 'wix.os.tags.v1.tag', method: 'GET' as any, methodFqn: 'wix.os.v1.TagsService.ListTags', packageName: PACKAGE_NAME, url: resolveWixOsV1TagsServiceUrl({ protoPath: '/v1/tags', data: payload, host, }), params: toURLSearchParams(payload), transformResponse: (payload: any) => transformPaths(payload, [ { transformFn: transformRESTTimestampToSDKTimestamp, paths: [{ path: 'tags.createdDate' }, { path: 'tags.updatedDate' }], }, ]), }; return metadata; } return __listTags; }