diff --git a/CHANGELOG.md b/CHANGELOG.md index dc769bac..a82b04dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ The file format of it is based on [Keep a Changelog](http://keepachangelog.com/e For public Changelog covering all changes done to Pipedrive’s API, webhooks and app extensions platforms, see [public Changelog](https://pipedrive.readme.io/docs/changelog) with discussion area in [Developers Community](https://devcommunity.pipedrive.com/c/documentation/changelog/19). ## [Unreleased] +### Added +- Added `POST /products/{id}/duplicate` endpoint for duplicating an existing product ## [30.3.3] - 2025-11-18 ### Fixed diff --git a/docs/v2.md b/docs/v2.md index b4987ea7..709c81d1 100644 --- a/docs/v2.md +++ b/docs/v2.md @@ -86,6 +86,7 @@ ProductsApi | deleteProduct | **DELETE** /products/{id} | Delete a product ProductsApi | deleteProductFollower | **DELETE** /products/{id}/followers/{follower_id} | Delete a follower from a product ProductsApi | deleteProductImage | **DELETE** /products/{id}/images | Delete an image of a product ProductsApi | deleteProductVariation | **DELETE** /products/{id}/variations/{product_variation_id} | Delete a product variation +ProductsApi | duplicateProduct | **POST** /products/{id}/duplicate | Duplicate a product ProductsApi | getProduct | **GET** /products/{id} | Get one product ProductsApi | getProductFollowers | **GET** /products/{id}/followers | List followers of a product ProductsApi | getProductFollowersChangelog | **GET** /products/{id}/followers/changelog | List followers changelog of a product diff --git a/src/versions/v2/api/products-api.ts b/src/versions/v2/api/products-api.ts index b64e04a3..e4444af2 100644 --- a/src/versions/v2/api/products-api.ts +++ b/src/versions/v2/api/products-api.ts @@ -363,6 +363,47 @@ export const ProductsApiAxiosParamCreator = function (configuration?: Configurat + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, }; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * Creates a duplicate of an existing product including all variations, prices, and custom fields. + * @summary Duplicate a product + * @param {number} id The ID of the product + + * @throws {RequiredError} + */ + duplicateProduct: async (id: number, ): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('duplicateProduct', 'id', id) + const localVarPath = `/products/{id}/duplicate` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions }; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication api_key required + await setApiKeyToObject(localVarHeaderParameter, "x-api-token", configuration) + + // authentication oauth2 required + // oauth required + await setOAuthToObject(localVarHeaderParameter, "oauth2", ["products:full"], configuration) + + + setSearchParams(localVarUrlObj, localVarQueryParameter); let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, }; @@ -1043,6 +1084,17 @@ export const ProductsApiFp = function(configuration?: Configuration) { const localVarAxiosArgs = await localVarAxiosParamCreator.deleteProductVariation(id, product_variation_id, ); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, + /** + * Creates a duplicate of an existing product including all variations, prices, and custom fields. + * @summary Duplicate a product + * @param {number} id The ID of the product + + * @throws {RequiredError} + */ + async duplicateProduct(id: number, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.duplicateProduct(id, ); + return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); + }, /** * Returns data about a specific product. * @summary Get one product @@ -1267,6 +1319,16 @@ export const ProductsApiFactory = function (configuration?: Configuration, baseP deleteProductVariation(requestParameters: ProductsApiDeleteProductVariationRequest, ): Promise { return localVarFp.deleteProductVariation(requestParameters.id, requestParameters.product_variation_id, ).then((request) => request(axios, basePath)); }, + /** + * Creates a duplicate of an existing product including all variations, prices, and custom fields. + * @summary Duplicate a product + * @param {ProductsApiDuplicateProductRequest} requestParameters Request parameters. + + * @throws {RequiredError} + */ + duplicateProduct(requestParameters: ProductsApiDuplicateProductRequest, ): Promise { + return localVarFp.duplicateProduct(requestParameters.id, ).then((request) => request(axios, basePath)); + }, /** * Returns data about a specific product. * @summary Get one product @@ -1506,6 +1568,20 @@ export interface ProductsApiDeleteProductVariationRequest { readonly product_variation_id: number } +/** + * Request parameters for duplicateProduct operation in ProductsApi. + * @export + * @interface ProductsApiDuplicateProductRequest + */ +export interface ProductsApiDuplicateProductRequest { + /** + * The ID of the product + * @type {number} + * @memberof ProductsApiDuplicateProduct + */ + readonly id: number +} + /** * Request parameters for getProduct operation in ProductsApi. * @export @@ -1912,6 +1988,18 @@ export class ProductsApi extends BaseAPI { return ProductsApiFp(this.configuration).deleteProductVariation(requestParameters.id, requestParameters.product_variation_id, ).then((request) => request(this.axios, this.basePath)); } + /** + * Creates a duplicate of an existing product including all variations, prices, and custom fields. + * @summary Duplicate a product + * @param {ProductsApiDuplicateProductRequest} requestParameters Request parameters. + + * @throws {RequiredError} + * @memberof ProductsApi + */ + public duplicateProduct(requestParameters: ProductsApiDuplicateProductRequest, ) { + return ProductsApiFp(this.configuration).duplicateProduct(requestParameters.id, ).then((request) => request(this.axios, this.basePath)); + } + /** * Returns data about a specific product. * @summary Get one product