Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 optional `timezone` parameter to `GET /v1/goals/{id}/results`. Accepts an IANA timezone name (e.g. `America/Sao_Paulo`). Defaults to the timezone of the requesting user. Period boundaries are now evaluated in the specified timezone instead of UTC, making results consistent with the Insights UI.

## [36.1.0] - 2026-10-21
### Added
Expand Down
32 changes: 23 additions & 9 deletions src/versions/v1/api/goals-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,11 @@ export const GoalsApiAxiosParamCreator = function (configuration?: Configuration
* @param {string} id The ID of the goal that the results are looked for
* @param {string} period_start The start date of the period for which to find the goal\'s progress. Format: YYYY-MM-DD. This date must be the same or after the goal duration start date.
* @param {string} period_end The end date of the period for which to find the goal\'s progress. Format: YYYY-MM-DD. This date must be the same or before the goal duration end date.
* @param {string} [timezone] The IANA timezone to use when evaluating period boundaries (e.g. `America/Sao_Paulo`). The start and end of the period are interpreted in this timezone. If omitted, defaults to the timezone of the user making the request.

* @throws {RequiredError}
*/
getGoalResult: async (id: string, period_start: string, period_end: string, ): Promise<RequestArgs> => {
getGoalResult: async (id: string, period_start: string, period_end: string, timezone?: string, ): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('getGoalResult', 'id', id)
// verify required parameter 'period_start' is not null or undefined
Expand Down Expand Up @@ -169,6 +170,10 @@ export const GoalsApiAxiosParamCreator = function (configuration?: Configuration
period_end;
}

if (timezone !== undefined) {
localVarQueryParameter['timezone'] = timezone;
}



setSearchParams(localVarUrlObj, localVarQueryParameter);
Expand Down Expand Up @@ -392,11 +397,12 @@ export const GoalsApiFp = function(configuration?: Configuration) {
* @param {string} id The ID of the goal that the results are looked for
* @param {string} period_start The start date of the period for which to find the goal\&#39;s progress. Format: YYYY-MM-DD. This date must be the same or after the goal duration start date.
* @param {string} period_end The end date of the period for which to find the goal\&#39;s progress. Format: YYYY-MM-DD. This date must be the same or before the goal duration end date.
* @param {string} [timezone] The IANA timezone to use when evaluating period boundaries (e.g. &#x60;America/Sao_Paulo&#x60;). The start and end of the period are interpreted in this timezone. If omitted, defaults to the timezone of the user making the request.

* @throws {RequiredError}
*/
async getGoalResult(id: string, period_start: string, period_end: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetGoalResultResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getGoalResult(id, period_start, period_end, );
async getGoalResult(id: string, period_start: string, period_end: string, timezone?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetGoalResultResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getGoalResult(id, period_start, period_end, timezone, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
Expand All @@ -405,11 +411,12 @@ export const GoalsApiFp = function(configuration?: Configuration) {
* @param {string} id The ID of the goal that the results are looked for
* @param {string} period_start The start date of the period for which to find the goal\&#39;s progress. Format: YYYY-MM-DD. This date must be the same or after the goal duration start date.
* @param {string} period_end The end date of the period for which to find the goal\&#39;s progress. Format: YYYY-MM-DD. This date must be the same or before the goal duration end date.
* @param {string} [timezone] The IANA timezone to use when evaluating period boundaries (e.g. &#x60;America/Sao_Paulo&#x60;). The start and end of the period are interpreted in this timezone. If omitted, defaults to the timezone of the user making the request.

* @throws {RequiredError}
*/
async getGoalResultWithHttpInfo(id: string, period_start: string, period_end: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<ApiResponse<GetGoalResultResponse>>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getGoalResult(id, period_start, period_end, );
async getGoalResultWithHttpInfo(id: string, period_start: string, period_end: string, timezone?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<ApiResponse<GetGoalResultResponse>>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getGoalResult(id, period_start, period_end, timezone, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration, true);
},
/**
Expand Down Expand Up @@ -526,10 +533,10 @@ export const GoalsApiFactory = function (configuration?: Configuration, basePath
* @throws {RequiredError}
*/
getGoalResult(requestParameters: GoalsApiGetGoalResultRequest, ): Promise<GetGoalResultResponse> {
return localVarFp.getGoalResult(requestParameters.id, requestParameters.period_start, requestParameters.period_end, ).then((request) => request(axios, basePath));
return localVarFp.getGoalResult(requestParameters.id, requestParameters.period_start, requestParameters.period_end, requestParameters.timezone, ).then((request) => request(axios, basePath));
},
getGoalResultWithHttpInfo(requestParameters: GoalsApiGetGoalResultRequest, ): Promise<ApiResponse<GetGoalResultResponse>> {
return localVarFp.getGoalResultWithHttpInfo(requestParameters.id, requestParameters.period_start, requestParameters.period_end, ).then((request) => request(axios, basePath));
return localVarFp.getGoalResultWithHttpInfo(requestParameters.id, requestParameters.period_start, requestParameters.period_end, requestParameters.timezone, ).then((request) => request(axios, basePath));
},
/**
* Returns data about goals based on criteria. For searching, append `{searchField}={searchValue}` to the URL, where `searchField` can be any one of the lowest-level fields in dot-notation (e.g. `type.params.pipeline_id`; `title`). `searchValue` should be the value you are looking for on that field. Additionally, `is_active=<true|false>` can be provided to search for only active/inactive goals. When providing `period.start`, `period.end` must also be provided and vice versa.
Expand Down Expand Up @@ -614,6 +621,13 @@ export interface GoalsApiGetGoalResultRequest {
* @memberof GoalsApiGetGoalResult
*/
readonly period_end: string

/**
* The IANA timezone to use when evaluating period boundaries (e.g. &#x60;America/Sao_Paulo&#x60;). The start and end of the period are interpreted in this timezone. If omitted, defaults to the timezone of the user making the request.
* @type {string}
* @memberof GoalsApiGetGoalResult
*/
readonly timezone?: string
}

/**
Expand Down Expand Up @@ -799,7 +813,7 @@ export class GoalsApi extends BaseAPI {
* @memberof GoalsApi
*/
public getGoalResult(requestParameters: GoalsApiGetGoalResultRequest, ) {
return GoalsApiFp(this.configuration).getGoalResult(requestParameters.id, requestParameters.period_start, requestParameters.period_end, ).then((request) => request(this.axios, this.basePath));
return GoalsApiFp(this.configuration).getGoalResult(requestParameters.id, requestParameters.period_start, requestParameters.period_end, requestParameters.timezone, ).then((request) => request(this.axios, this.basePath));
}

/**
Expand All @@ -811,7 +825,7 @@ export class GoalsApi extends BaseAPI {
* @memberof GoalsApi
*/
public getGoalResultWithHttpInfo(requestParameters: GoalsApiGetGoalResultRequest, ) {
return GoalsApiFp(this.configuration).getGoalResultWithHttpInfo(requestParameters.id, requestParameters.period_start, requestParameters.period_end, ).then((request) => request(this.axios, this.basePath));
return GoalsApiFp(this.configuration).getGoalResultWithHttpInfo(requestParameters.id, requestParameters.period_start, requestParameters.period_end, requestParameters.timezone, ).then((request) => request(this.axios, this.basePath));
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/versions/v1/models/mail-message-data-from-inner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ export interface MailMessageDataFromInner {
* ID of the linked person to the mail message
* @type {number}
*/
'linked_person_id'?: number;
'linked_person_id'?: number | null;
/**
* Name of the linked person to the mail message
* @type {string}
*/
'linked_person_name'?: string;
'linked_person_name'?: string | null;
/**
* ID of the mail message participant
* @type {number}
Expand Down
2 changes: 1 addition & 1 deletion src/versions/v1/models/mail-message-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ export interface MailMessageData {
* If the mail message has a draft status then the value is the mail message object as JSON formatted string, otherwise `null`.
* @type {string}
*/
'draft'?: string;
'draft'?: string | null;
/**
*
* @type {number}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export interface MailMessageItemForListAllOf {
* The ID of the mail template
* @type {number}
*/
'template_id'?: number;
'template_id'?: number | null;
/**
* The add date and time of the Mail Message
* @type {string}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ export interface MailThreadAllOf1PartiesToInner {
* ID of the linked person
* @type {number}
*/
'linked_person_id'?: number;
'linked_person_id'?: number | null;
/**
* Email of the linked person
* Name of the linked person
* @type {string}
*/
'linked_person_name'?: string;
'linked_person_name'?: string | null;
/**
* ID of the mail message party
* @type {number}
Expand Down
12 changes: 6 additions & 6 deletions src/versions/v1/models/mail-thread-all-of1.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ export interface MailThreadAllOf1 {
*/
'parties'?: MailThreadAllOf1Parties;
/**
* Parties of the drafted mail thread
* Parties of the drafted mail thread. `null` if the mail thread has no drafts.
* @type {Array<object>}
*/
'drafts_parties'?: Array<object>;
'drafts_parties'?: Array<object> | null;
/**
* Folders in which messages from thread are being stored
* @type {Array<string>}
Expand All @@ -52,7 +52,7 @@ export interface MailThreadAllOf1 {
* A snippet from a message sent
* @type {string}
*/
'snippet_sent'?: string;
'snippet_sent'?: string | null;
/**
* An amount of messages
* @type {number}
Expand All @@ -69,10 +69,10 @@ export interface MailThreadAllOf1 {
*/
'has_sent_flag'?: MailThreadAllOf1HasSentFlagConst;
/**
*
* Whether the mail thread is archived. `null` if the mail thread has not been explicitly archived or unarchived in Pipedrive.
* @type {number}
*/
'archived_flag'?: MailThreadAllOf1ArchivedFlagConst;
'archived_flag'?: MailThreadAllOf1ArchivedFlagConst | null;
/**
*
* @type {number}
Expand Down Expand Up @@ -107,7 +107,7 @@ export interface MailThreadAllOf1 {
* The last time when the mail thread has had a message received
* @type {string}
*/
'last_message_received_timestamp'?: string;
'last_message_received_timestamp'?: string | null;
/**
* The time when the mail thread was inserted to database
* @type {string}
Expand Down
9 changes: 6 additions & 3 deletions src/versions/v2/models/add-product-variation-request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
*/


// May contain unused imports in some cases
// @ts-ignore
import { ProductVariationPriceRequest } from './product-variation-price-request';

/**
*
Expand All @@ -26,9 +29,9 @@ export interface AddProductVariationRequest {
*/
'name': string;
/**
* Array of objects, each containing: currency (string), price (number), cost (number, optional), direct_cost (number, optional), notes (string, optional). When prices is omitted altogether, a default price of 0, a default cost of 0, a default direct_cost of 0 and the user\'s default currency will be assigned.
* @type {Array<object>}
* Array of prices of the product variation. When prices is omitted altogether, a default price of 0, a default cost of 0, a default direct_cost of 0 and the user\'s default currency will be assigned.
* @type {Array<ProductVariationPriceRequest>}
*/
'prices'?: Array<object>;
'prices'?: Array<ProductVariationPriceRequest>;
}

49 changes: 49 additions & 0 deletions src/versions/v2/models/base-product-variation-price.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/* tslint:disable */
/* eslint-disable */
/**
* Pipedrive API v2
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 2.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/



/**
*
* @export
* @interface BaseProductVariationPrice
*/
export interface BaseProductVariationPrice {
/**
* The price of the product variation
* @type {number}
*/
'price'?: number;
/**
* The cost of the product variation
* @type {number}
*/
'cost'?: number;
/**
* The currency of the price
* @type {string}
*/
'currency'?: string;
/**
* The direct cost of the product variation
* @type {number}
*/
'direct_cost'?: number;
/**
* The notes about the price
* @type {string}
*/
'notes'?: string;
}

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
*/


// May contain unused imports in some cases
// @ts-ignore
import { ProductVariationPrice } from './product-variation-price';

/**
*
Expand All @@ -36,9 +39,9 @@ export interface GetProductVariationsResponseDataInner {
*/
'product_id'?: number;
/**
* Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)
* @type {Array<object>}
* Array of prices of the product variation
* @type {Array<ProductVariationPrice>}
*/
'prices'?: Array<object>;
'prices'?: Array<ProductVariationPrice>;
}

4 changes: 4 additions & 0 deletions src/versions/v2/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ export * from './add-task-response';
export * from './base-product';
export * from './base-product-all-of';
export * from './base-product-all-of1';
export * from './base-product-variation-price';
export * from './base-response';
export * from './convert-lead-to-deal-request';
export * from './create-many-deal-product-request';
Expand Down Expand Up @@ -264,6 +265,9 @@ export * from './prices-array';
export * from './product-price';
export * from './product-price-request';
export * from './product-request';
export * from './product-variation-price';
export * from './product-variation-price-all-of';
export * from './product-variation-price-request';
export * from './project';
export * from './project-template';
export * from './stage-item';
Expand Down
29 changes: 29 additions & 0 deletions src/versions/v2/models/product-variation-price-all-of.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* tslint:disable */
/* eslint-disable */
/**
* Pipedrive API v2
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 2.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/



/**
*
* @export
* @interface ProductVariationPriceAllOf
*/
export interface ProductVariationPriceAllOf {
/**
* The ID of the product variation
* @type {number}
*/
'product_variation_id'?: number;
}

26 changes: 26 additions & 0 deletions src/versions/v2/models/product-variation-price-request.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* tslint:disable */
/* eslint-disable */
/**
* Pipedrive API v2
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 2.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/


// May contain unused imports in some cases
// @ts-ignore
import { BaseProductVariationPrice } from './base-product-variation-price';

/**
* @type ProductVariationPriceRequest
* @export
*/
export type ProductVariationPriceRequest = BaseProductVariationPrice;


Loading
Loading