Skip to content
Merged
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
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ 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]
### Fixed
- Fixed the comma-separated `include_fields` query parameter across v2 collection/detail endpoints (`GET /api/v2/activities`, `GET /api/v2/activities/{id}`, `GET /api/v2/activityFields`, `GET /api/v2/activityFields/{field_code}`, `GET /api/v2/deals`, `GET /api/v2/deals/{id}`, `GET /api/v2/dealFields`, `GET /api/v2/dealFields/{field_code}`, `GET /api/v2/organizations`, `GET /api/v2/organizations/{id}`, `GET /api/v2/organizationFields`, `GET /api/v2/organizationFields/{field_code}`, `GET /api/v2/persons`, `GET /api/v2/persons/{id}`, `GET /api/v2/personFields`, `GET /api/v2/personFields/{field_code}`, `GET /api/v2/productFields`, and `GET /api/v2/productFields/{field_code}`) that was typed as `type: string` with an enum of comma-joined value combinations despite accepting comma-separated lists — changed to `type: array` of enumerated strings with `uniqueItems: true`, `style: form`, `explode: false`
- Fixed the comma-separated `custom_fields` query parameter on v2 collection/detail endpoints (`GET /api/v2/deals`, `GET /api/v2/deals/archived`, `GET /api/v2/deals/{id}`, `GET /api/v2/organizations`, `GET /api/v2/organizations/{id}`, `GET /api/v2/persons`, `GET /api/v2/persons/{id}`, and `GET /api/v2/products`) and the `ids` query parameter on v2 collection endpoints (`GET /api/v2/activities`, `GET /api/v2/deals`, `GET /api/v2/deals/archived`, `GET /api/v2/organizations`, `GET /api/v2/persons`, and `GET /api/v2/products`) that were typed as `type: string` despite accepting comma-separated lists — changed to `type: array` of strings (`custom_fields` capped at 15 items, `ids` at 100) with `uniqueItems: true`, `style: form`, `explode: false`

## [33.9.0] - 2026-10-09
### Fixed
Expand Down
44 changes: 22 additions & 22 deletions src/versions/v2/api/activities-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export const ActivitiesApiAxiosParamCreator = function (configuration?: Configur
* Returns data about all activities.
* @summary Get all activities
* @param {number} [filter_id] If supplied, only activities matching the specified filter are returned
* @param {string} [ids] Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.
* @param {Set<string>} [ids] Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.
* @param {number} [owner_id] If supplied, only activities owned by the specified user are returned. If filter_id is provided, this is ignored.
* @param {number} [deal_id] If supplied, only activities linked to the specified deal are returned. If filter_id is provided, this is ignored.
* @param {string} [lead_id] If supplied, only activities linked to the specified lead are returned. If filter_id is provided, this is ignored.
Expand All @@ -132,13 +132,13 @@ export const ActivitiesApiAxiosParamCreator = function (configuration?: Configur
* @param {string} [updated_until] If set, only activities with an &#x60;update_time&#x60; earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.
* @param {'id' | 'update_time' | 'add_time' | 'due_date'} [sort_by] The field to sort by. Supported fields: &#x60;id&#x60;, &#x60;update_time&#x60;, &#x60;add_time&#x60;, &#x60;due_date&#x60;.
* @param {'asc' | 'desc'} [sort_direction] The sorting direction. Supported values: &#x60;asc&#x60;, &#x60;desc&#x60;.
* @param {'attendees'} [include_fields] Optional comma separated string array of additional fields to include
* @param {Set<'attendees'>} [include_fields] Optional comma separated string array of additional fields to include
* @param {number} [limit] For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.
* @param {string} [cursor] For pagination, the marker (an opaque string value) representing the first item on the next page

* @throws {RequiredError}
*/
getActivities: async (filter_id?: number, ids?: string, owner_id?: number, deal_id?: number, lead_id?: string, person_id?: number, org_id?: number, done?: boolean, updated_since?: string, updated_until?: string, sort_by?: 'id' | 'update_time' | 'add_time' | 'due_date', sort_direction?: 'asc' | 'desc', include_fields?: 'attendees', limit?: number, cursor?: string, ): Promise<RequestArgs> => {
getActivities: async (filter_id?: number, ids?: Set<string>, owner_id?: number, deal_id?: number, lead_id?: string, person_id?: number, org_id?: number, done?: boolean, updated_since?: string, updated_until?: string, sort_by?: 'id' | 'update_time' | 'add_time' | 'due_date', sort_direction?: 'asc' | 'desc', include_fields?: Set<'attendees'>, limit?: number, cursor?: string, ): Promise<RequestArgs> => {
const localVarPath = `/activities`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
Expand All @@ -162,8 +162,8 @@ export const ActivitiesApiAxiosParamCreator = function (configuration?: Configur
localVarQueryParameter['filter_id'] = filter_id;
}

if (ids !== undefined) {
localVarQueryParameter['ids'] = ids;
if (ids) {
localVarQueryParameter['ids'] = Array.from(ids).join(COLLECTION_FORMATS.csv);
}

if (owner_id !== undefined) {
Expand Down Expand Up @@ -206,8 +206,8 @@ export const ActivitiesApiAxiosParamCreator = function (configuration?: Configur
localVarQueryParameter['sort_direction'] = sort_direction;
}

if (include_fields !== undefined) {
localVarQueryParameter['include_fields'] = include_fields;
if (include_fields) {
localVarQueryParameter['include_fields'] = Array.from(include_fields).join(COLLECTION_FORMATS.csv);
}

if (limit !== undefined) {
Expand All @@ -233,11 +233,11 @@ export const ActivitiesApiAxiosParamCreator = function (configuration?: Configur
* Returns the details of a specific activity.
* @summary Get details of an activity
* @param {number} id The ID of the activity
* @param {'attendees'} [include_fields] Optional comma separated string array of additional fields to include
* @param {Set<'attendees'>} [include_fields] Optional comma separated string array of additional fields to include

* @throws {RequiredError}
*/
getActivity: async (id: number, include_fields?: 'attendees', ): Promise<RequestArgs> => {
getActivity: async (id: number, include_fields?: Set<'attendees'>, ): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('getActivity', 'id', id)
const localVarPath = `/activities/{id}`
Expand All @@ -260,8 +260,8 @@ export const ActivitiesApiAxiosParamCreator = function (configuration?: Configur
// oauth required
await setOAuthToObject(localVarHeaderParameter, "oauth2", ["activities:read", "activities:full"], configuration)

if (include_fields !== undefined) {
localVarQueryParameter['include_fields'] = include_fields;
if (include_fields) {
localVarQueryParameter['include_fields'] = Array.from(include_fields).join(COLLECTION_FORMATS.csv);
}


Expand Down Expand Up @@ -357,7 +357,7 @@ export const ActivitiesApiFp = function(configuration?: Configuration) {
* Returns data about all activities.
* @summary Get all activities
* @param {number} [filter_id] If supplied, only activities matching the specified filter are returned
* @param {string} [ids] Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.
* @param {Set<string>} [ids] Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.
* @param {number} [owner_id] If supplied, only activities owned by the specified user are returned. If filter_id is provided, this is ignored.
* @param {number} [deal_id] If supplied, only activities linked to the specified deal are returned. If filter_id is provided, this is ignored.
* @param {string} [lead_id] If supplied, only activities linked to the specified lead are returned. If filter_id is provided, this is ignored.
Expand All @@ -368,25 +368,25 @@ export const ActivitiesApiFp = function(configuration?: Configuration) {
* @param {string} [updated_until] If set, only activities with an &#x60;update_time&#x60; earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.
* @param {'id' | 'update_time' | 'add_time' | 'due_date'} [sort_by] The field to sort by. Supported fields: &#x60;id&#x60;, &#x60;update_time&#x60;, &#x60;add_time&#x60;, &#x60;due_date&#x60;.
* @param {'asc' | 'desc'} [sort_direction] The sorting direction. Supported values: &#x60;asc&#x60;, &#x60;desc&#x60;.
* @param {'attendees'} [include_fields] Optional comma separated string array of additional fields to include
* @param {Set<'attendees'>} [include_fields] Optional comma separated string array of additional fields to include
* @param {number} [limit] For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.
* @param {string} [cursor] For pagination, the marker (an opaque string value) representing the first item on the next page

* @throws {RequiredError}
*/
async getActivities(filter_id?: number, ids?: string, owner_id?: number, deal_id?: number, lead_id?: string, person_id?: number, org_id?: number, done?: boolean, updated_since?: string, updated_until?: string, sort_by?: 'id' | 'update_time' | 'add_time' | 'due_date', sort_direction?: 'asc' | 'desc', include_fields?: 'attendees', limit?: number, cursor?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetActivitiesResponse>> {
async getActivities(filter_id?: number, ids?: Set<string>, owner_id?: number, deal_id?: number, lead_id?: string, person_id?: number, org_id?: number, done?: boolean, updated_since?: string, updated_until?: string, sort_by?: 'id' | 'update_time' | 'add_time' | 'due_date', sort_direction?: 'asc' | 'desc', include_fields?: Set<'attendees'>, limit?: number, cursor?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetActivitiesResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getActivities(filter_id, ids, owner_id, deal_id, lead_id, person_id, org_id, done, updated_since, updated_until, sort_by, sort_direction, include_fields, limit, cursor, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
* Returns the details of a specific activity.
* @summary Get details of an activity
* @param {number} id The ID of the activity
* @param {'attendees'} [include_fields] Optional comma separated string array of additional fields to include
* @param {Set<'attendees'>} [include_fields] Optional comma separated string array of additional fields to include

* @throws {RequiredError}
*/
async getActivity(id: number, include_fields?: 'attendees', ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<UpsertActivityResponse>> {
async getActivity(id: number, include_fields?: Set<'attendees'>, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<UpsertActivityResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getActivity(id, include_fields, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
Expand Down Expand Up @@ -508,10 +508,10 @@ export interface ActivitiesApiGetActivitiesRequest {

/**
* Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.
* @type {string}
* @type {Set<string>}
* @memberof ActivitiesApiGetActivities
*/
readonly ids?: string
readonly ids?: Set<string>

/**
* If supplied, only activities owned by the specified user are returned. If filter_id is provided, this is ignored.
Expand Down Expand Up @@ -585,10 +585,10 @@ export interface ActivitiesApiGetActivitiesRequest {

/**
* Optional comma separated string array of additional fields to include
* @type {'attendees'}
* @type {Set<'attendees'>}
* @memberof ActivitiesApiGetActivities
*/
readonly include_fields?: 'attendees'
readonly include_fields?: Set<'attendees'>

/**
* For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.
Expand Down Expand Up @@ -620,10 +620,10 @@ export interface ActivitiesApiGetActivityRequest {

/**
* Optional comma separated string array of additional fields to include
* @type {'attendees'}
* @type {Set<'attendees'>}
* @memberof ActivitiesApiGetActivity
*/
readonly include_fields?: 'attendees'
readonly include_fields?: Set<'attendees'>
}

/**
Expand Down
Loading
Loading