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
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ 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 `website`, `linkedin`, `industry`, `annual_revenue`, and `employee_count` fields to v2 organization response schema (`GET /api/v2/organizations`, `GET /api/v2/organizations/{id}`) — all nullable, not included by default
- Added `deal_id`, `person_id`, and `org_id` as optional query filter parameters to `GET /api/v2/projects`
### Fixed
- Fixed `BillingStartDate` format from non-standard `'YYYY-MM-DD'` to correct OAS3 `date` format in both v1 and v2 deal product schemas

## [33.0.1] - 2026-05-13

Expand Down
2 changes: 1 addition & 1 deletion src/versions/v2/api/deal-products-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ export const DealProductsApiAxiosParamCreator = function (configuration?: Config
await setOAuthToObject(localVarHeaderParameter, "oauth2", ["products:read", "products:full", "deals:read", "deals:full"], configuration)

if (deal_ids) {
localVarQueryParameter['deal_ids'] = deal_ids;
localVarQueryParameter['deal_ids'] = deal_ids.join(COLLECTION_FORMATS.csv);
}

if (cursor !== undefined) {
Expand Down
49 changes: 44 additions & 5 deletions src/versions/v2/api/projects-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -369,12 +369,15 @@ export const ProjectsApiAxiosParamCreator = function (configuration?: Configurat
* @param {number} [filter_id] If supplied, only projects matching the specified filter are returned
* @param {string} [status] If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` projects are not returned.
* @param {number} [phase_id] If supplied, only projects in the specified phase are returned
* @param {number} [deal_id] If supplied, only projects associated with the specified deal are returned
* @param {number} [person_id] If supplied, only projects associated with the specified person are returned
* @param {number} [org_id] If supplied, only projects associated with the specified organization are returned
* @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}
*/
getProjects: async (filter_id?: number, status?: string, phase_id?: number, limit?: number, cursor?: string, ): Promise<RequestArgs> => {
getProjects: async (filter_id?: number, status?: string, phase_id?: number, deal_id?: number, person_id?: number, org_id?: number, limit?: number, cursor?: string, ): Promise<RequestArgs> => {
const localVarPath = `/projects`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
Expand Down Expand Up @@ -406,6 +409,18 @@ export const ProjectsApiAxiosParamCreator = function (configuration?: Configurat
localVarQueryParameter['phase_id'] = phase_id;
}

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

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

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

if (limit !== undefined) {
localVarQueryParameter['limit'] = limit;
}
Expand Down Expand Up @@ -644,13 +659,16 @@ export const ProjectsApiFp = function(configuration?: Configuration) {
* @param {number} [filter_id] If supplied, only projects matching the specified filter are returned
* @param {string} [status] If supplied, includes only projects with the specified statuses. Possible values are &#x60;open&#x60;, &#x60;completed&#x60;, &#x60;canceled&#x60; and &#x60;deleted&#x60;. By default &#x60;deleted&#x60; projects are not returned.
* @param {number} [phase_id] If supplied, only projects in the specified phase are returned
* @param {number} [deal_id] If supplied, only projects associated with the specified deal are returned
* @param {number} [person_id] If supplied, only projects associated with the specified person are returned
* @param {number} [org_id] If supplied, only projects associated with the specified organization are returned
* @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 getProjects(filter_id?: number, status?: string, phase_id?: number, limit?: number, cursor?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetProjectsResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getProjects(filter_id, status, phase_id, limit, cursor, );
async getProjects(filter_id?: number, status?: string, phase_id?: number, deal_id?: number, person_id?: number, org_id?: number, limit?: number, cursor?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<GetProjectsResponse>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.getProjects(filter_id, status, phase_id, deal_id, person_id, org_id, limit, cursor, );
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
Expand Down Expand Up @@ -770,7 +788,7 @@ export const ProjectsApiFactory = function (configuration?: Configuration, baseP
* @throws {RequiredError}
*/
getProjects(requestParameters: ProjectsApiGetProjectsRequest = {}, ): Promise<GetProjectsResponse> {
return localVarFp.getProjects(requestParameters.filter_id, requestParameters.status, requestParameters.phase_id, requestParameters.limit, requestParameters.cursor, ).then((request) => request(axios, basePath));
return localVarFp.getProjects(requestParameters.filter_id, requestParameters.status, requestParameters.phase_id, requestParameters.deal_id, requestParameters.person_id, requestParameters.org_id, requestParameters.limit, requestParameters.cursor, ).then((request) => request(axios, basePath));
},
/**
* Searches all projects by title, description, notes and/or custom fields. This endpoint is a wrapper of <a href=\"https://developers.pipedrive.com/docs/api/v1/ItemSearch#searchItem\">/v1/itemSearch</a> with a narrower OAuth scope. Found projects can be filtered by person ID or organization ID.
Expand Down Expand Up @@ -962,6 +980,27 @@ export interface ProjectsApiGetProjectsRequest {
*/
readonly phase_id?: number

/**
* If supplied, only projects associated with the specified deal are returned
* @type {number}
* @memberof ProjectsApiGetProjects
*/
readonly deal_id?: number

/**
* If supplied, only projects associated with the specified person are returned
* @type {number}
* @memberof ProjectsApiGetProjects
*/
readonly person_id?: number

/**
* If supplied, only projects associated with the specified organization are returned
* @type {number}
* @memberof ProjectsApiGetProjects
*/
readonly org_id?: number

/**
* 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.
* @type {number}
Expand Down Expand Up @@ -1154,7 +1193,7 @@ export class ProjectsApi extends BaseAPI {
* @memberof ProjectsApi
*/
public getProjects(requestParameters: ProjectsApiGetProjectsRequest = {}, ) {
return ProjectsApiFp(this.configuration).getProjects(requestParameters.filter_id, requestParameters.status, requestParameters.phase_id, requestParameters.limit, requestParameters.cursor, ).then((request) => request(this.axios, this.basePath));
return ProjectsApiFp(this.configuration).getProjects(requestParameters.filter_id, requestParameters.status, requestParameters.phase_id, requestParameters.deal_id, requestParameters.person_id, requestParameters.org_id, requestParameters.limit, requestParameters.cursor, ).then((request) => request(this.axios, this.basePath));
}

/**
Expand Down
25 changes: 25 additions & 0 deletions src/versions/v2/models/organization-item.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,31 @@ export interface OrganizationItem {
*/
'label_ids'?: Array<number>;
/**
* The website of the organization
* @type {string}
*/
'website'?: string | null;
/**
* The LinkedIn profile URL of the organization
* @type {string}
*/
'linkedin'?: string | null;
/**
* The industry the organization belongs to
* @type {number}
*/
'industry'?: number | null;
/**
* The annual revenue of the organization
* @type {number}
*/
'annual_revenue'?: number | null;
/**
* The number of employees in the organization
* @type {number}
*/
'employee_count'?: number | null;
/**
* An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.
* @type {{ [key: string]: any | undefined; }}
*/
Expand Down
Loading