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
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Fixed
- Removed `person_id` from the v2 activity request body (`POST /api/v2/activities`, `PATCH /api/v2/activities/{id}`) — the API has always rejected it as read-only, and the schema advertised it as writable; use `participants: [{ "person_id": 123, "primary": true }]` instead. `org_id` is unaffected.
- Added `required: [name]` to the v2 person create request body (`POST /api/v2/persons`) — a bare call previously reached the API instead of failing client-side.
- Reworded the `im`, `notes`, `birthday`, and `job_title` field descriptions and the `addPerson`/`updatePerson` operation descriptions (which also cover `postal_address`) to disclose that these fields 403 when contact sync isn't enabled, rather than only describing when they're present on read.

## [17.6.0](https://github.com/pipedrive/client-php/compare17.5.2...17.6.0) (2026-09-08)
### Added
Expand Down
4 changes: 2 additions & 2 deletions docs/versions/v2/Api/PersonsApi.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ addPerson($post_person_request_body): \Pipedrive\versions\v2\Model\PostPatchGetP

Add a new person

Adds a new person. <br>If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field. <br>The `im`, `postal_address`, `notes`, `birthday` and `job_title` fields dont exist by default in Pipedrive and are only created when you set up your contact sync.
Adds a new person. <br>If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field. <br>The `im`, `postal_address`, `notes`, `birthday` and `job_title` fields don't exist by default in Pipedrive and are only created when you set up your contact sync — attempting to set any of them without contact sync enabled returns a 403.

### Example

Expand Down Expand Up @@ -735,7 +735,7 @@ updatePerson($id, $update_person_request_body): \Pipedrive\versions\v2\Model\Pos

Update a person

Updates the properties of a person. <br>If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field. <br>The `im`, `postal_address`, `notes`, `birthday` and `job_title` fields dont exist by default in Pipedrive and are only created when you set up your contact sync.
Updates the properties of a person. <br>If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field. <br>The `im`, `postal_address`, `notes`, `birthday` and `job_title` fields don't exist by default in Pipedrive and are only created when you set up your contact sync — attempting to set any of them without contact sync enabled returns a 403.

### Example

Expand Down
3 changes: 1 addition & 2 deletions docs/versions/v2/Model/ActivityRequestBody.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ Name | Type | Description | Notes
**owner_id** | **int** | The ID of the user who owns the activity | [optional]
**deal_id** | **int** | The ID of the deal linked to the activity | [optional]
**lead_id** | **string** | The ID of the lead linked to the activity | [optional]
**person_id** | **int** | The ID of the person linked to the activity | [optional]
**org_id** | **int** | The ID of the organization linked to the activity | [optional]
**project_id** | **int** | The ID of the project linked to the activity | [optional]
**due_date** | **string** | The due date of the activity | [optional]
Expand All @@ -18,7 +17,7 @@ Name | Type | Description | Notes
**busy** | **bool** | Whether the activity marks the assignee as busy or not in their calendar | [optional]
**done** | **bool** | Whether the activity is marked as done or not | [optional]
**location** | [**\Pipedrive\versions\v2\Model\ActivityItemLocation**](ActivityItemLocation.md) | | [optional]
**participants** | [**\Pipedrive\versions\v2\Model\ActivityItemParticipants[]**](ActivityItemParticipants.md) | The participants of the activity | [optional]
**participants** | [**\Pipedrive\versions\v2\Model\ActivityItemParticipants[]**](ActivityItemParticipants.md) | The participants of the activity. Use this to set the activity&#39;s person — a primary participant (&#x60;primary: true&#x60;) sets &#x60;person_id&#x60; on the activity. | [optional]
**attendees** | [**\Pipedrive\versions\v2\Model\ActivityItemAttendees[]**](ActivityItemAttendees.md) | The attendees of the activity | [optional]
**public_description** | **string** | The public description of the activity | [optional]
**priority** | **int** | The priority of the activity. Mappable to a specific string using activityFields API. | [optional]
Expand Down
10 changes: 5 additions & 5 deletions docs/versions/v2/Model/PostPersonRequestBody.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**name** | **string** | The name of the person | [optional]
**name** | **string** | The name of the person |
**owner_id** | **int** | The ID of the user who owns the person | [optional]
**org_id** | **int** | The ID of the organization linked to the person | [optional]
**add_time** | **string** | The creation date and time of the person | [optional]
Expand All @@ -13,10 +13,10 @@ Name | Type | Description | Notes
**visible_to** | **int** | The visibility of the person | [optional]
**label_ids** | **int[]** | The IDs of labels assigned to the person | [optional]
**postal_address** | [**\Pipedrive\versions\v2\Model\PersonItemAddress**](PersonItemAddress.md) | | [optional]
**notes** | **string** | Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company | [optional]
**im** | [**\Pipedrive\versions\v2\Model\PersonItemIm[]**](PersonItemIm.md) | The instant messaging accounts of the person, included if contact sync is enabled for the company | [optional]
**birthday** | **string** | The birthday of the person, included if contact sync is enabled for the company | [optional]
**job_title** | **string** | The job title of the person, included if contact sync is enabled for the company | [optional]
**notes** | **string** | Contact sync notes of the person, maximum 10 000 characters. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**im** | [**\Pipedrive\versions\v2\Model\PersonItemIm[]**](PersonItemIm.md) | The instant messaging accounts of the person. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**birthday** | **string** | The birthday of the person. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**job_title** | **string** | The job title of the person. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**marketing_status** | **string** | If the person does not have a valid email address, then the marketing status is **not set** and &#x60;no_consent&#x60; is returned for the &#x60;marketing_status&#x60; value when the new person is created. If the change is forbidden, the status will remain unchanged for every call that tries to modify the marketing status. Please be aware that it is only allowed **once** to change the marketing status from an old status to a new one.&lt;table&gt;&lt;tr&gt;&lt;th&gt;Value&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;no_consent&#x60;&lt;/td&gt;&lt;td&gt;The customer has not given consent to receive any marketing communications&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;unsubscribed&#x60;&lt;/td&gt;&lt;td&gt;The customers have unsubscribed from ALL marketing communications&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;subscribed&#x60;&lt;/td&gt;&lt;td&gt;The customers are subscribed and are counted towards marketing caps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;archived&#x60;&lt;/td&gt;&lt;td&gt;The customers with &#x60;subscribed&#x60; status can be moved to &#x60;archived&#x60; to save consent, but they are not paid for&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; | [optional]
**custom_fields** | **array<string,object>** | 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 &#x60;null&#x60;. For multi-option fields (field type &#x60;set&#x60;), use &#x60;null&#x60; to clear the selection — sending an empty array &#x60;[]&#x60; is not supported and will result in a validation error. | [optional]

Expand Down
8 changes: 4 additions & 4 deletions docs/versions/v2/Model/UpdatePersonRequestBody.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ Name | Type | Description | Notes
**visible_to** | **int** | The visibility of the person | [optional]
**label_ids** | **int[]** | The IDs of labels assigned to the person | [optional]
**postal_address** | [**\Pipedrive\versions\v2\Model\PersonItemAddress**](PersonItemAddress.md) | | [optional]
**notes** | **string** | Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company | [optional]
**im** | [**\Pipedrive\versions\v2\Model\PersonItemIm[]**](PersonItemIm.md) | The instant messaging accounts of the person, included if contact sync is enabled for the company | [optional]
**birthday** | **string** | The birthday of the person, included if contact sync is enabled for the company | [optional]
**job_title** | **string** | The job title of the person, included if contact sync is enabled for the company | [optional]
**notes** | **string** | Contact sync notes of the person, maximum 10 000 characters. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**im** | [**\Pipedrive\versions\v2\Model\PersonItemIm[]**](PersonItemIm.md) | The instant messaging accounts of the person. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**birthday** | **string** | The birthday of the person. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**job_title** | **string** | The job title of the person. Only accepted when contact sync is enabled for the company; otherwise the request returns 403. | [optional]
**marketing_status** | **string** | If the person does not have a valid email address, then the marketing status is **not set** and &#x60;no_consent&#x60; is returned for the &#x60;marketing_status&#x60; value when the new person is created. If the change is forbidden, the status will remain unchanged for every call that tries to modify the marketing status. Please be aware that it is only allowed **once** to change the marketing status from an old status to a new one.&lt;table&gt;&lt;tr&gt;&lt;th&gt;Value&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;no_consent&#x60;&lt;/td&gt;&lt;td&gt;The customer has not given consent to receive any marketing communications&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;unsubscribed&#x60;&lt;/td&gt;&lt;td&gt;The customers have unsubscribed from ALL marketing communications&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;subscribed&#x60;&lt;/td&gt;&lt;td&gt;The customers are subscribed and are counted towards marketing caps&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&#x60;archived&#x60;&lt;/td&gt;&lt;td&gt;The customers with &#x60;subscribed&#x60; status can be moved to &#x60;archived&#x60; to save consent, but they are not paid for&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; | [optional]
**custom_fields** | **array<string,object>** | 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 &#x60;null&#x60;. For multi-option fields (field type &#x60;set&#x60;), use &#x60;null&#x60; to clear the selection — sending an empty array &#x60;[]&#x60; is not supported and will result in a validation error. | [optional]

Expand Down
Loading