diff --git a/CHANGELOG.md b/CHANGELOG.md index 29210c8e..f2c10bdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/versions/v2/api/deal-products-api.ts b/src/versions/v2/api/deal-products-api.ts index 32c0bd37..61bdbe04 100644 --- a/src/versions/v2/api/deal-products-api.ts +++ b/src/versions/v2/api/deal-products-api.ts @@ -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) { diff --git a/src/versions/v2/api/projects-api.ts b/src/versions/v2/api/projects-api.ts index b749de86..f837919a 100644 --- a/src/versions/v2/api/projects-api.ts +++ b/src/versions/v2/api/projects-api.ts @@ -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 => { + getProjects: async (filter_id?: number, status?: string, phase_id?: number, deal_id?: number, person_id?: number, org_id?: number, limit?: number, cursor?: string, ): Promise => { const localVarPath = `/projects`; // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); @@ -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; } @@ -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 `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} */ - async getProjects(filter_id?: number, status?: string, phase_id?: number, limit?: number, cursor?: string, ): Promise<(axios?: AxiosInstance, basePath?: string) => Promise> { - 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> { + 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); }, /** @@ -770,7 +788,7 @@ export const ProjectsApiFactory = function (configuration?: Configuration, baseP * @throws {RequiredError} */ getProjects(requestParameters: ProjectsApiGetProjectsRequest = {}, ): Promise { - 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 /v1/itemSearch with a narrower OAuth scope. Found projects can be filtered by person ID or organization ID. @@ -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} @@ -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)); } /** diff --git a/src/versions/v2/models/organization-item.ts b/src/versions/v2/models/organization-item.ts index 5d468669..64059c77 100644 --- a/src/versions/v2/models/organization-item.ts +++ b/src/versions/v2/models/organization-item.ts @@ -69,6 +69,31 @@ export interface OrganizationItem { */ 'label_ids'?: Array; /** + * 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; }} */