Main Product API
Main Product API
Gets data on one or more Persons: the User themselves, Mailboxes in their Tenant and/or Contacts in their Contact Organizations.
If called with no parameters (ie. /persons
) it will return data for all Persons in no specific order.
If called with just the data_quantity=id_only
parameter (ie. /persons/me
with data_quantity=id_only
), it will return just the personId
of the user.
A specific set of persons' data can be returned by providing the filterIds
parameter with an array of Person id
(ie. /persons
with filterIds={personId},{personId}
).
If caching the Person data on the client side, the data_quantity=id_only
option can be chosen to get the list of GUIDs that match the filtering/sorting/paging requirements, with the Person data coming from your client side cache, having been retrieved by providing the filterIds
parameter with an array of id
.
Note that staff in the user's own Organization are Persons just like their Contacts.
A JSON-encoded string containing the query options.
Returns data for the specified GUIDs
Returns data for the specified Organization GUIDs
Provide the values of one or more statuses separated by comma (no spaces). If no value is supplied, active
is assumed.
provide the GUIDs of one or more disciplines separated by comma (no spaces)
Provide the GUIDs of one or more offices separated by comma (no spaces).
If caching data on the client side, the data_quantity=id_only|basic|complete
option can be passed to manage the completeness of the data received and therefore rate limiting.
The number of results to return per page
curl -i -X GET \
'https://developers-internal.tonicdm.com/_mock/tonicdm-product/core/persons?dataQuantity=true&filterDisciplines={id}%2C{id}%2C{id}&filterIds={id}%2C{id}%2C{id}&filterOfficeIds={id}%2C{id}%2C{id}&filterOrganizationIds={OrganizationId}%2C{OrganizationId}%2C{OrganizationId}&filterStatuses=active%2Cinactive&pageNumber=1&pageSize=100&searchQuery={%22example%22}&sortBy=name&sortDirection=asc' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
[ { "id": "9af493dfdabb48089b068ddad94c6287", "datetimeCreated": "2021-11-03T16:21:02+00:00", "datetimeUpdated": "2024-04-20T16:21:02+00:00", "status": "active", "emailAddresses": [ … ], "name": "Rita Coolidge", "title": "Principal", "deskPhone": null, "mobilePhone": null, "office": { … }, "disciplines": null, "certifications": null, "customerDataWarehouseId": 123, "customerErpId": "a8fc7aaf-cd16-4ee4-ae97-e75808257ae1", "customerCrmId": "a9ea117f-84bc-421d-bad4-5bd69924a699" }, { "id": "496061e05a9b43a98d7cdfb0ad15e158", "datetimeCreated": "2021-11-03T16:21:02+00:01", "datetimeUpdated": "2024-04-20T16:21:02+00:01", "status": "active", "emailAddresses": [ … ], "name": "Steve Novosel", "title": "Architect", "deskPhone": null, "mobilePhone": null, "office": { … }, "disciplines": null, "certifications": null, "customerDataWarehouseId": 124, "customerErpId": "fc95ced9-8c56-4a53-89b2-1c7217ea5a9c", "customerCrmId": "fcdaf58d-5497-47a2-af3d-077c928eda27" } ]
Note that the Organization the Person will belong to is determined automatically by TonicDM.
Some automated processes use this endpoint to check if a contact should be created or not. This is done by passing SelectiveNonCreation
as TRUE
. This will create the contact if they're a business email address only, and not create the contact if they have a system or personal email address, for example person@company.com
would be created but person@gmail.com
or no-reply@dropbox.com
would not. This allows you to request a contact to be created without filtering the quality of the email address first. If SelectiveNonCreation
is FALSE
a contact will be created.
If you want to pass in the Organization information, do that as a second step using PATCH to the organizations
endpoint submitting the organizationId
returned in the response body. Similarly, adding an Office to the Person needs to be done using PATCH to the /persons
endpoint submitting and officeId
that would have been looked up using GET to the /offices
endpoint submitting the organizationId
returned in the response body.
curl -i -X POST \
https://developers-internal.tonicdm.com/_mock/tonicdm-product/core/persons \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"emailAddresses": [
{
"status": "active",
"emailAddress": "user@example.com",
"name": "string",
"title": "string",
"deskPhone": {
"countryCode": 0,
"phoneNumber": 0,
"extension": 0
},
"mobilePhone": {
"countryCode": 0,
"phoneNumber": 0,
"extension": 0
},
"office": {
"status": "active",
"name": "string",
"address": "string",
"phone": {
"countryCode": 0,
"phoneNumber": 0,
"extension": 0
}
},
"disciplines": [
{
"id": "string"
}
],
"certifications": [
{
"id": "8e8aa42241794371ae9d0ed7b67a8c86",
"certificationDefinitionId": "string",
"dateExpires": "2019-08-24"
}
],
"personId": "string",
"dateActive": "2019-08-24",
"dateInactive": "2019-08-24",
"isPrime": true,
"customerDataWarehouseId": "string",
"customerErpId": "string",
"customerCrmId": "string"
}
]
}'
{ "id": "496061e05a9b43a98d7cdfb0ad15e158", "datetimeCreated": "2021-11-03T16:21:02+00:01", "datetimeUpdated": "2024-04-20T16:21:02+00:01", "status": "active", "emailAddresses": [ { … } ], "name": "Steve Novosel", "title": "Architect", "deskPhone": null, "mobilePhone": null, "office": { "id": "570e423760dc4c9784d20a38216f0597", "datetimeCreated": "2021-11-03T16:21:02+00:01", "datetimeUpdated": "2024-04-20T16:21:02+00:01", "status": "active", "name": "London", "address": "123 Dundas Street\\nLondon", "phone": { … } }, "disciplines": null, "certifications": null, "customerDataWarehouseId": 124, "customerErpId": "fc95ced9-8c56-4a53-89b2-1c7217ea5a9c", "customerCrmId": "fcdaf58d-5497-47a2-af3d-077c928eda27" }
UUID without hyphens (32 characters)
curl -i -X PATCH \
https://developers-internal.tonicdm.com/_mock/tonicdm-product/core/persons \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"id": "8e8aa42241794371ae9d0ed7b67a8c86",
"emailAddresses": [
{
"status": "active",
"emailAddress": "user@example.com",
"name": "string",
"title": "string",
"deskPhone": {
"countryCode": 0,
"phoneNumber": 0,
"extension": 0
},
"mobilePhone": {
"countryCode": 0,
"phoneNumber": 0,
"extension": 0
},
"office": {
"status": "active",
"name": "string",
"address": "string",
"phone": {
"countryCode": 0,
"phoneNumber": 0,
"extension": 0
}
},
"disciplines": [
{
"id": "string"
}
],
"certifications": [
{
"id": "8e8aa42241794371ae9d0ed7b67a8c86",
"certificationDefinitionId": "string",
"dateExpires": "2019-08-24"
}
],
"personId": "string",
"dateActive": "2019-08-24",
"dateInactive": "2019-08-24",
"isPrime": true,
"customerDataWarehouseId": "string",
"customerErpId": "string",
"customerCrmId": "string"
}
]
}'
{ "id": "1edb8a0bb607442ba167b9d28a75778c", "datetimeCreated": "2021-11-03T16:21:02+00:02", "datetimeUpdated": "2024-04-20T16:21:02+00:02", "status": "active", "emailAddresses": [ { … }, { … } ], "name": "Stuart de Silva", "title": "Senior Designer", "deskPhone": null, "mobilePhone": null, "office": { "id": "89df34cecd394e179436abc435368e53", "datetimeCreated": "2021-11-03T16:21:02+00:02", "datetimeUpdated": "2024-04-20T16:21:02+00:02", "status": "active", "name": "Dublin", "address": "50 Merrion Square South\\nDublin", "phone": { … } }, "disciplines": null, "certifications": null, "customerDataWarehouseId": 125, "customerErpId": "1b8c8dfc-daeb-42fd-8f50-b709a6dadf1a", "customerCrmId": "39b1011e-e21a-4518-8825-7b63f2fabe92" }