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
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ 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 `include_field_code` query parameter to Filters endpoints:
- `GET /v1/filters/{id}`
- `PUT /v1/filters/{id}`
- `POST /v1/filters`
- When set to `true`, each condition in the response includes a `field_code` field identifying the field by its code name. The value is `null` if the field code cannot be resolved.

## [32.1.0] - 2026-03-26
### Added
Expand Down
69 changes: 54 additions & 15 deletions src/versions/v1/api/filters-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ export const FiltersApiAxiosParamCreator = function (configuration?: Configurati
/**
* Adds a new filter, returns the ID upon success. Note that in the conditions JSON object only one first-level condition group is supported, and it must be glued with \'AND\', and only two second level condition groups are supported of which one must be glued with \'AND\' and the second with \'OR\'. Other combinations do not work (yet) but the syntax supports introducing them in future. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/adding-a-filter\" target=\"_blank\" rel=\"noopener noreferrer\">adding a filter</a>.
* @summary Add a new filter
* @param {boolean} [include_field_code] If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @param {AddFilterRequest} [AddFilterRequest]

* @throws {RequiredError}
*/
addFilter: async (AddFilterRequest?: AddFilterRequest, ): Promise<RequestArgs> => {
addFilter: async (include_field_code?: boolean, AddFilterRequest?: AddFilterRequest, ): Promise<RequestArgs> => {
const localVarPath = `/filters`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
Expand All @@ -68,6 +69,10 @@ export const FiltersApiAxiosParamCreator = function (configuration?: Configurati
// oauth required
await setOAuthToObject(localVarHeaderParameter, "oauth2", ["deals:full", "activities:full", "contacts:full"], configuration)

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



localVarHeaderParameter['Content-Type'] = 'application/json';
Expand Down Expand Up @@ -171,10 +176,11 @@ export const FiltersApiAxiosParamCreator = function (configuration?: Configurati
* Returns data about a specific filter. Note that this also returns the condition lines of the filter.
* @summary Get one filter
* @param {number} id The ID of the filter
* @param {boolean} [include_field_code] If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name

* @throws {RequiredError}
*/
getFilter: async (id: number, ): Promise<RequestArgs> => {
getFilter: async (id: number, include_field_code?: boolean, ): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('getFilter', 'id', id)
const localVarPath = `/filters/{id}`
Expand All @@ -197,6 +203,10 @@ export const FiltersApiAxiosParamCreator = function (configuration?: Configurati
// oauth required
await setOAuthToObject(localVarHeaderParameter, "oauth2", ["deals:read", "deals:full", "activities:read", "activities:full", "contacts:read", "contacts:full"], configuration)

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



setSearchParams(localVarUrlObj, localVarQueryParameter);
Expand Down Expand Up @@ -291,11 +301,12 @@ export const FiltersApiAxiosParamCreator = function (configuration?: Configurati
* Updates an existing filter.
* @summary Update filter
* @param {number} id The ID of the filter
* @param {boolean} [include_field_code] If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @param {UpdateFilterRequest} [UpdateFilterRequest]

* @throws {RequiredError}
*/
updateFilter: async (id: number, UpdateFilterRequest?: UpdateFilterRequest, ): Promise<RequestArgs> => {
updateFilter: async (id: number, include_field_code?: boolean, UpdateFilterRequest?: UpdateFilterRequest, ): Promise<RequestArgs> => {
// verify required parameter 'id' is not null or undefined
assertParamExists('updateFilter', 'id', id)
const localVarPath = `/filters/{id}`
Expand All @@ -318,6 +329,10 @@ export const FiltersApiAxiosParamCreator = function (configuration?: Configurati
// oauth required
await setOAuthToObject(localVarHeaderParameter, "oauth2", ["deals:full", "activities:full", "contacts:full"], configuration)

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



localVarHeaderParameter['Content-Type'] = 'application/json';
Expand Down Expand Up @@ -346,12 +361,13 @@ export const FiltersApiFp = function(configuration?: Configuration) {
/**
* Adds a new filter, returns the ID upon success. Note that in the conditions JSON object only one first-level condition group is supported, and it must be glued with \'AND\', and only two second level condition groups are supported of which one must be glued with \'AND\' and the second with \'OR\'. Other combinations do not work (yet) but the syntax supports introducing them in future. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/adding-a-filter\" target=\"_blank\" rel=\"noopener noreferrer\">adding a filter</a>.
* @summary Add a new filter
* @param {boolean} [include_field_code] If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @param {AddFilterRequest} [AddFilterRequest]

* @throws {RequiredError}
*/
async addFilter(AddFilterRequest?: AddFilterRequest, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AddFiltersResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.addFilter(AddFilterRequest, );
async addFilter(include_field_code?: boolean, AddFilterRequest?: AddFilterRequest, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AddFiltersResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.addFilter(include_field_code, AddFilterRequest, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
Expand Down Expand Up @@ -380,11 +396,12 @@ export const FiltersApiFp = function(configuration?: Configuration) {
* Returns data about a specific filter. Note that this also returns the condition lines of the filter.
* @summary Get one filter
* @param {number} id The ID of the filter
* @param {boolean} [include_field_code] If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name

* @throws {RequiredError}
*/
async getFilter(id: number, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetFiltersResponse1>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getFilter(id, );
async getFilter(id: number, include_field_code?: boolean, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetFiltersResponse1>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getFilter(id, include_field_code, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
Expand Down Expand Up @@ -412,12 +429,13 @@ export const FiltersApiFp = function(configuration?: Configuration) {
* Updates an existing filter.
* @summary Update filter
* @param {number} id The ID of the filter
* @param {boolean} [include_field_code] If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @param {UpdateFilterRequest} [UpdateFilterRequest]

* @throws {RequiredError}
*/
async updateFilter(id: number, UpdateFilterRequest?: UpdateFilterRequest, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AddFiltersResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.updateFilter(id, UpdateFilterRequest, );
async updateFilter(id: number, include_field_code?: boolean, UpdateFilterRequest?: UpdateFilterRequest, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AddFiltersResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.updateFilter(id, include_field_code, UpdateFilterRequest, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
}
Expand All @@ -438,7 +456,7 @@ export const FiltersApiFactory = function (configuration?: Configuration, basePa
* @throws {RequiredError}
*/
addFilter(requestParameters: FiltersApiAddFilterRequest = {}, ): Promise<AddFiltersResponse> {
return localVarFp.addFilter(requestParameters.AddFilterRequest, ).then((request) => request(axios, basePath));
return localVarFp.addFilter(requestParameters.include_field_code, requestParameters.AddFilterRequest, ).then((request) => request(axios, basePath));
},
/**
* Marks a filter as deleted.
Expand Down Expand Up @@ -468,7 +486,7 @@ export const FiltersApiFactory = function (configuration?: Configuration, basePa
* @throws {RequiredError}
*/
getFilter(requestParameters: FiltersApiGetFilterRequest, ): Promise<GetFiltersResponse1> {
return localVarFp.getFilter(requestParameters.id, ).then((request) => request(axios, basePath));
return localVarFp.getFilter(requestParameters.id, requestParameters.include_field_code, ).then((request) => request(axios, basePath));
},
/**
* Returns all supported filter helpers. It helps to know what conditions and helpers are available when you want to <a href=\"/docs/api/v1/Filters#addFilter\">add</a> or <a href=\"/docs/api/v1/Filters#updateFilter\">update</a> filters. For more information, see the tutorial for <a href=\"https://pipedrive.readme.io/docs/adding-a-filter\" target=\"_blank\" rel=\"noopener noreferrer\">adding a filter</a>.
Expand Down Expand Up @@ -497,7 +515,7 @@ export const FiltersApiFactory = function (configuration?: Configuration, basePa
* @throws {RequiredError}
*/
updateFilter(requestParameters: FiltersApiUpdateFilterRequest, ): Promise<AddFiltersResponse> {
return localVarFp.updateFilter(requestParameters.id, requestParameters.UpdateFilterRequest, ).then((request) => request(axios, basePath));
return localVarFp.updateFilter(requestParameters.id, requestParameters.include_field_code, requestParameters.UpdateFilterRequest, ).then((request) => request(axios, basePath));
},
};
};
Expand All @@ -508,6 +526,13 @@ export const FiltersApiFactory = function (configuration?: Configuration, basePa
* @interface FiltersApiAddFilterRequest
*/
export interface FiltersApiAddFilterRequest {
/**
* If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @type {boolean}
* @memberof FiltersApiAddFilter
*/
readonly include_field_code?: boolean

/**
*
* @type {AddFilterRequest}
Expand Down Expand Up @@ -556,6 +581,13 @@ export interface FiltersApiGetFilterRequest {
* @memberof FiltersApiGetFilter
*/
readonly id: number

/**
* If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @type {boolean}
* @memberof FiltersApiGetFilter
*/
readonly include_field_code?: boolean
}

/**
Expand Down Expand Up @@ -585,6 +617,13 @@ export interface FiltersApiUpdateFilterRequest {
*/
readonly id: number

/**
* If set to &#x60;true&#x60;, each condition in the response includes a &#x60;field_code&#x60; field identifying the field by its code name
* @type {boolean}
* @memberof FiltersApiUpdateFilter
*/
readonly include_field_code?: boolean

/**
*
* @type {UpdateFilterRequest}
Expand All @@ -609,7 +648,7 @@ export class FiltersApi extends BaseAPI {
* @memberof FiltersApi
*/
public addFilter(requestParameters: FiltersApiAddFilterRequest = {}, ) {
return FiltersApiFp(this.configuration).addFilter(requestParameters.AddFilterRequest, ).then((request) => request(this.axios, this.basePath));
return FiltersApiFp(this.configuration).addFilter(requestParameters.include_field_code, requestParameters.AddFilterRequest, ).then((request) => request(this.axios, this.basePath));
}

/**
Expand Down Expand Up @@ -645,7 +684,7 @@ export class FiltersApi extends BaseAPI {
* @memberof FiltersApi
*/
public getFilter(requestParameters: FiltersApiGetFilterRequest, ) {
return FiltersApiFp(this.configuration).getFilter(requestParameters.id, ).then((request) => request(this.axios, this.basePath));
return FiltersApiFp(this.configuration).getFilter(requestParameters.id, requestParameters.include_field_code, ).then((request) => request(this.axios, this.basePath));
}

/**
Expand Down Expand Up @@ -680,6 +719,6 @@ export class FiltersApi extends BaseAPI {
* @memberof FiltersApi
*/
public updateFilter(requestParameters: FiltersApiUpdateFilterRequest, ) {
return FiltersApiFp(this.configuration).updateFilter(requestParameters.id, requestParameters.UpdateFilterRequest, ).then((request) => request(this.axios, this.basePath));
return FiltersApiFp(this.configuration).updateFilter(requestParameters.id, requestParameters.include_field_code, requestParameters.UpdateFilterRequest, ).then((request) => request(this.axios, this.basePath));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/* tslint:disable */
/* eslint-disable */
/**
* Pipedrive API v1
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.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.
*/



/**
* A single filter condition
* @export
* @interface FilterConditionsConditionsInnerConditionsInner
*/
export interface FilterConditionsConditionsInnerConditionsInner {
/**
* The type of entity the condition applies to (e.g. \"deal\", \"person\")
* @type {string}
*/
'object'?: string;
/**
* The ID of the field
* @type {string}
*/
'field_id'?: string;
/**
* The operator used in the condition (e.g. \"=\", \"IS NOT NULL\")
* @type {string}
*/
'operator'?: string;
/**
* The value of the condition
* @type {string}
*/
'value'?: string | null;
/**
* An extra value for conditions that require two values
* @type {string}
*/
'extra_value'?: string | null;
/**
* Whether the value is JSON-encoded
* @type {boolean}
*/
'json_value_flag'?: boolean;
/**
* The code name of the field. Present when `include_field_code=true` is passed as a query parameter; `null` if the field code cannot be resolved
* @type {string}
*/
'field_code'?: string | null;
}

45 changes: 45 additions & 0 deletions src/versions/v1/models/filter-conditions-conditions-inner.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
/* tslint:disable */
/* eslint-disable */
/**
* Pipedrive API v1
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.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 { FilterConditionsConditionsInnerConditionsInner } from './filter-conditions-conditions-inner-conditions-inner';

/**
* A group of conditions joined by a logical operator
* @export
* @interface FilterConditionsConditionsInner
*/
export interface FilterConditionsConditionsInner {
/**
* The logical operator joining conditions within this group
* @type {string}
*/
'glue'?: FilterConditionsConditionsInnerGlueConst;
/**
* The individual conditions in this group
* @type {Array<FilterConditionsConditionsInnerConditionsInner>}
*/
'conditions'?: Array<FilterConditionsConditionsInnerConditionsInner>;
}

export const FilterConditionsConditionsInnerGlueConst = {
and: 'and',
or: 'or'
} as const;

export type FilterConditionsConditionsInnerGlueConst = typeof FilterConditionsConditionsInnerGlueConst[keyof typeof FilterConditionsConditionsInnerGlueConst];


44 changes: 44 additions & 0 deletions src/versions/v1/models/filter-conditions.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/* tslint:disable */
/* eslint-disable */
/**
* Pipedrive API v1
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.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 { FilterConditionsConditionsInner } from './filter-conditions-conditions-inner';

/**
* The conditions object of a filter
* @export
* @interface FilterConditions
*/
export interface FilterConditions {
/**
* The top-level glue is always \"and\"
* @type {string}
*/
'glue'?: FilterConditionsGlueConst;
/**
* The condition groups
* @type {Array<FilterConditionsConditionsInner>}
*/
'conditions'?: Array<FilterConditionsConditionsInner>;
}

export const FilterConditionsGlueConst = {
and: 'and'
} as const;

export type FilterConditionsGlueConst = typeof FilterConditionsGlueConst[keyof typeof FilterConditionsGlueConst];


Loading
Loading