TonicDM Product API (0.0.5)

Main Product API

Download OpenAPI description
Languages
Servers
Mock server

https://developers-internal.tonicdm.com/_mock/tonicdm-product/

Server located in the USA

https://us-api.tonicdm.com/

Server located in Germany

https://de-api.tonicdm.com/

Server located in Ireland

https://ie-api.tonicdm.com/

Organizations

Data on Organizations (includes both staff and contacts, so these do not need to be looked up separately and combined).

Operations

People

Data on People (includes both staff and contacts, so these do not need to be looked up separately and combined).

Operations

Edit Me

Request

Change the user's own data. There is no need to specify their id as a parameter.

Note that you cannot change the Organization that a Person belongs to as this is determined automatically by TonicDM.

To delete the Person, PATCH their status to inactive or deleted (soft deleted).

Bodyapplication/json
emailAddressesArray of objects(PersonEmailAddressWithId)

Zero or more email addresses that person currently uses, or previously used.

dailyReminderboolean

Indicates whether the person will be sent a daily reminder email.

Default false
division1object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

division2object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

division3object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

division4object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

curl -i -X PATCH \
  https://developers-internal.tonicdm.com/_mock/tonicdm-product/core/me \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "emailAddresses": [
      {
        "id": "8e8aa42241794371ae9d0ed7b67a8c86",
        "personId": "8e8aa42241794371ae9d0ed7b67a8c86",
        "status": "active",
        "emailAddress": "user@example.com",
        "name": "string",
        "title": "string",
        "deskphoneCountryCode": 0,
        "deskphoneNumber": 0,
        "deskphoneExtension": 0,
        "mobilephoneCountryCode": 0,
        "mobilephoneNumber": 0,
        "dateActive": "2019-08-24",
        "dateInactive": "2019-08-24",
        "isPrime": true,
        "customerDataWarehouseId": "string",
        "customerErpId": "string",
        "customerCrmId": "string"
      }
    ],
    "dailyReminder": false,
    "division1": {
      "status": "active",
      "name": "string"
    },
    "division2": {
      "status": "active",
      "name": "string"
    },
    "division3": {
      "status": "active",
      "name": "string"
    },
    "division4": {
      "status": "active",
      "name": "string"
    }
  }'

Responses

Successfully updated the resource you requested

Bodyapplication/json
emailAddressesArray of objects(PersonEmailAddressWithId)

Zero or more email addresses that person currently uses, or previously used.

personIdstring(uuid)read-only

This joins the User Settings to the Person record, which rolls up the email addresses.

dailyReminderboolean

Indicates whether the person will be sent a daily reminder email.

Default false
isOrganizationManagerintegerread-only

Indicates whether the person is a TonicDM Administrator for the Tenant. This setting can only be changed by TonicDM Support. Currently the only valid values are 0 and 1, but in future this will be a bitwise field indicating different types of administrator.

Default 0
timezonestringread-only

Offset from UTC for the user's location. This is set automatically by the TonicDM application based on the information provided by their browser.

division1object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

division2object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

division3object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

division4object(Division)

The division of the Organization that is assigned to the Project or Person. This allows filters/metrics by things like Market Sector or Studio.

Use of this feature requires the TonicDM AdvancedMetrics license.

datetimeLastSeenstring(date-time)read-only

The date and time the user was last seen. This is when they last made an interactive call to the API.

Response
application/json
{ "emailAddresses": [ { … } ], "personId": "f3e5ff26-28ff-4cd6-9b1b-e303a185a13a", "dailyReminder": false, "isOrganizationManager": 0, "timezone": "string", "division1": { "status": "active", "name": "string" }, "division2": { "status": "active", "name": "string" }, "division3": { "status": "active", "name": "string" }, "division4": { "status": "active", "name": "string" }, "datetimeLastSeen": "2019-08-24T14:15:22Z" }

Get EmailAddresses

Request

Gets data on one or more EmailAddresses.

If called with no parameters (ie. /emailaddresses) it will return data for all EmailAddresses in no specific order.

If called with just the data_quantity=id_only parameter (ie. /emailaddresses?data_quantity=id_only), it will return just the emailAddressIds of the User.

If caching the Person data on the client side, the data_quantity=id_only option can be chosen to get the list of UUIDs 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.

Query
searchQuerystring(JSON)

A JSON-encoded string containing the query options.

Example: searchQuery={"example"}
filterIdsArray of strings(CompactUUID)

Returns data for the specified GUIDs. If this filter is specifed, all other filters will be ignored.

Example: filterIds={id},{id},{id}
filterBrandIds. If more than one filter is given, they will be combined with AND.Array of strings(CompactUUID)

Returns data for the specified Brand GUIDs

Example: filterBrandIds. If more than one filter is given, they will be combined with AND.={BrandId},{BrandId},{BrandId}
filterStatusesArray of strings(Status)

Provide the values of one or more statuses separated by comma (no spaces). If more than one filter is given, they will be combined with AND. If no value is supplied, active is assumed.

Items Enum"active""inactive""deleted"
Example: filterStatuses=active,inactive
filterDisciplineIdsArray of strings(CompactUUID)

provide the GUIDs of one or more disciplines separated by comma (no spaces). If more than one filter is given, they will be combined with AND.

Example: filterDisciplineIds={id},{id},{id}
filterOfficeIdsArray of strings(CompactUUID)

Provide the GUIDs of one or more offices separated by comma (no spaces). If more than one filter is given, they will be combined with AND.

Example: filterOfficeIds={id},{id},{id}
dataQuantitystring

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.

Default "id_only"
Enum"id_only""basic""complete"
Example: dataQuantity=id_only
pageSizeinteger[ 1 .. 1000 ]

The number of results to return per page

Default 50
Example: pageSize=100
pageNumberinteger

Which page of the results to return

Example: pageNumber=1
sortBystring

The field by which to sort the results

Enum"name""email""title""office"
sortDirectionstring

The sort direction for the results

Enum"asc""desc"
curl -i -X GET \
  'https://developers-internal.tonicdm.com/_mock/tonicdm-product/core/emailaddresses?dataQuantity=id_only&filterBrandIds.%20If%20more%20than%20one%20filter%20is%20given%2C%20they%20will%20be%20combined%20with%20AND.={BrandId}%2C{BrandId}%2C{BrandId}&filterDisciplineIds={id}%2C{id}%2C{id}&filterIds={id}%2C{id}%2C{id}&filterOfficeIds={id}%2C{id}%2C{id}&filterStatuses=active%2Cinactive&pageNumber=1&pageSize=100&searchQuery={%22example%22}&sortBy=name&sortDirection=asc' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Successfully read the resource you requested. One or more records are returned in the form of an array.

Bodyapplication/jsonArray [
idstring(CompactUUID)^[0-9a-fA-F]{32}$
Example: "8e8aa42241794371ae9d0ed7b67a8c86"
personIdstring^[0-9a-fA-F]{32}$

A UUID used to link multiple EmailAddress records together because they belong to the same physical person. There are no extra fields associated with this GUID. It serves only as a linking mechanism. Use of personId to link multiple EmailAddress records together requires the TonicDM AdvancedContacts license.

Example: "8e8aa42241794371ae9d0ed7b67a8c86"
brandIdstring^[0-9a-fA-F]{32}$read-only

Every EmailAddress belongs to a Brand. The EmailAddress record carries the personal information and the Brand record carries the corporate information. This is set automatically by TonicDM and cannot be changed.

Example: "8e8aa42241794371ae9d0ed7b67a8c86"
datetimeCreatedstring(date-time)read-only

The date and time this email address record was created.

datetimeUpdatedstring(date-time)read-only

The date and time this email address record was last updated.

statusstring(Status)

Whether the item is active or inactive in TonicDM. Potentially the item could be (soft) deleted.

Default "active"
Enum"active""inactive""deleted"
emailAddressstring(email)
namestring[ 1 .. 64 ] characters

The person's full name.

titlestring[ 1 .. 64 ] characters

The person's business title.

deskphoneCountryCodenumber

Numbers only, no spaces or +

deskphoneNumbernumber

Numbers only, no spaces or formatting

deskphoneExtensionnumber

Numbers only, no text or formatting

mobilephoneCountryCodenumber

Numbers only, no spaces or +

mobilephoneNumbernumber

Numbers only, no spaces or formatting

emailDeliveryStatusstringread-only

The status of the last email sent to this address. This is updated by the system.

Default "unknown"
Enum"unknown""delivered""bounced"
emailTypestringread-only

The type of email address. This is set by the system.

Enum"business""personal""system""misspelled"
dateActivestring(date)

The date this email address became active. This is used to track the history of email addresses for a person. Use of this feature requires the TonicDM AdvancedContacts license.

dateInactivestring(date)

The date this email address became inactive. This is used to track the history of email addresses for a person. Use of this feature requires the TonicDM AdvancedContacts license.

isPrimeboolean

Indicates that this email address is the primary email address for this person. When displaying a Person, the Prime email address info will be used for their Name, etc. Use of this feature requires the TonicDM AdvancedContacts license.

customerDataWarehouseIdstring

The ID of the Person in the Customer's Data Warehouse. Use of this feature requires the TonicDM AdvancedMetrics license.

customerErpIdstring

The ID of the Person in the Customer's ERP system (eg. Deltek Vantagepoint). Use of this feature requires the TonicDM AdvancedMetrics license.

customerCrmIdstring

The ID of the Person in the Customer's CRM system (eg. Deltek Salesforce). Use of this feature requires the TonicDM AdvancedMetrics license.

officeobject(OrganizationOfficeWithId)

The physical location that is assigned to a Project or Person. This allows for filtering by Office, and the calcuation of metrics by Office. Use of this feature for Contact Organizations requires the TonicDM AdvancedContacts license.

disciplinesArray of objects(DisciplineWithId)

The UUIDs of the Disciplines this Person is typically involved in.

certificationsArray of objects(CertificationWithId)

Zero or more certifications that this Person has obtained, or previously obtained. Use of this feature requires the TonicDM AdvancedContacts license.

]
Response
application/json
[ { "id": "8e8aa42241794371ae9d0ed7b67a8c86", "personId": "8e8aa42241794371ae9d0ed7b67a8c86", "brandId": "8e8aa42241794371ae9d0ed7b67a8c86", "datetimeCreated": "2019-08-24T14:15:22Z", "datetimeUpdated": "2019-08-24T14:15:22Z", "status": "active", "emailAddress": "user@example.com", "name": "string", "title": "string", "deskphoneCountryCode": 0, "deskphoneNumber": 0, "deskphoneExtension": 0, "mobilephoneCountryCode": 0, "mobilephoneNumber": 0, "emailDeliveryStatus": "unknown", "emailType": "business", "dateActive": "2019-08-24", "dateInactive": "2019-08-24", "isPrime": true, "customerDataWarehouseId": "string", "customerErpId": "string", "customerCrmId": "string", "office": { … }, "disciplines": [ … ], "certifications": [ … ] } ]

New EmailAddress

Request

Note that the Organization/Brand which the EmailAddress will belong to is determined automatically by TonicDM. If an appropriate Organization/Brand doesnt exist, TonicDM will auto-create them. If the UUID of a Person is given, the EmailAddress will belong to that person, Otherwise TonicDM will auto-create a Person and attach the EmailAddress to it. If required, the EmailAddress can be merged into an existing Person as a second step. Note that Person records can only be manipulated if the customer has an AdvancedContacts license.

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 FALSEa 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.

Bodyapplication/json
personIdstring^[0-9a-fA-F]{32}$

A UUID used to link multiple EmailAddress records together because they belong to the same physical person. There are no extra fields associated with this GUID. It serves only as a linking mechanism. Use of personId to link multiple EmailAddress records together requires the TonicDM AdvancedContacts license.

Example: "8e8aa42241794371ae9d0ed7b67a8c86"
statusstring(Status)

Whether the item is active or inactive in TonicDM. Potentially the item could be (soft) deleted.

Default "active"
Enum"active""inactive""deleted"
emailAddressstring(email)required
namestring[ 1 .. 64 ] characters

The person's full name.

titlestring[ 1 .. 64 ] characters

The person's business title.

deskphoneCountryCodenumber

Numbers only, no spaces or +

deskphoneNumbernumber

Numbers only, no spaces or formatting

deskphoneExtensionnumber

Numbers only, no text or formatting

mobilephoneCountryCodenumber

Numbers only, no spaces or +

mobilephoneNumbernumber

Numbers only, no spaces or formatting

dateActivestring(date)

The date this email address became active. This is used to track the history of email addresses for a person. Use of this feature requires the TonicDM AdvancedContacts license.

dateInactivestring(date)

The date this email address became inactive. This is used to track the history of email addresses for a person. Use of this feature requires the TonicDM AdvancedContacts license.

isPrimeboolean

Indicates that this email address is the primary email address for this person. When displaying a Person, the Prime email address info will be used for their Name, etc. Use of this feature requires the TonicDM AdvancedContacts license.

customerDataWarehouseIdstring

The ID of the Person in the Customer's Data Warehouse. Use of this feature requires the TonicDM AdvancedMetrics license.

customerErpIdstring

The ID of the Person in the Customer's ERP system (eg. Deltek Vantagepoint). Use of this feature requires the TonicDM AdvancedMetrics license.

customerCrmIdstring

The ID of the Person in the Customer's CRM system (eg. Deltek Salesforce). Use of this feature requires the TonicDM AdvancedMetrics license.

officeIdstring(CompactUUID)^[0-9a-fA-F]{32}$
Example: "8e8aa42241794371ae9d0ed7b67a8c86"
disciplinesArray of strings(CompactUUID)

The UUIDs of the Disciplines this Person is typically involved in.

Example: ["8e8aa42241794371ae9d0ed7b67a8c86"]
certificationsArray of strings(CompactUUID)

Zero or more certifications that this Person has obtained, or previously obtained. Use of this feature requires the TonicDM AdvancedContacts license.

Example: ["8e8aa42241794371ae9d0ed7b67a8c86"]
selectiveNonCreationboolean

Allow TonicDM to choose to not create the contact if it looks like it's not a business email address.

Default false
curl -i -X POST \
  https://developers-internal.tonicdm.com/_mock/tonicdm-product/core/emailaddresses \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "personId": "8e8aa42241794371ae9d0ed7b67a8c86",
    "status": "active",
    "emailAddress": "user@example.com",
    "name": "string",
    "title": "string",
    "deskphoneCountryCode": 0,
    "deskphoneNumber": 0,
    "deskphoneExtension": 0,
    "mobilephoneCountryCode": 0,
    "mobilephoneNumber": 0,
    "dateActive": "2019-08-24",
    "dateInactive": "2019-08-24",
    "isPrime": true,
    "customerDataWarehouseId": "string",
    "customerErpId": "string",
    "customerCrmId": "string",
    "officeId": "8e8aa42241794371ae9d0ed7b67a8c86",
    "disciplines": [
      "8e8aa42241794371ae9d0ed7b67a8c86"
    ],
    "certifications": [
      "8e8aa42241794371ae9d0ed7b67a8c86"
    ],
    "selectiveNonCreation": false
  }'

Responses

Successfully created the resource you sent

Bodyapplication/json
idstring(CompactUUID)^[0-9a-fA-F]{32}$
Example: "8e8aa42241794371ae9d0ed7b67a8c86"
personIdstring^[0-9a-fA-F]{32}$

A UUID used to link multiple EmailAddress records together because they belong to the same physical person. There are no extra fields associated with this GUID. It serves only as a linking mechanism. Use of personId to link multiple EmailAddress records together requires the TonicDM AdvancedContacts license.

Example: "8e8aa42241794371ae9d0ed7b67a8c86"
brandIdstring^[0-9a-fA-F]{32}$read-only

Every EmailAddress belongs to a Brand. The EmailAddress record carries the personal information and the Brand record carries the corporate information. This is set automatically by TonicDM and cannot be changed.

Example: "8e8aa42241794371ae9d0ed7b67a8c86"
datetimeCreatedstring(date-time)read-only

The date and time this email address record was created.

datetimeUpdatedstring(date-time)read-only

The date and time this email address record was last updated.

statusstring(Status)

Whether the item is active or inactive in TonicDM. Potentially the item could be (soft) deleted.

Default "active"
Enum"active""inactive""deleted"
emailAddressstring(email)
namestring[ 1 .. 64 ] characters

The person's full name.

titlestring[ 1 .. 64 ] characters

The person's business title.

deskphoneCountryCodenumber

Numbers only, no spaces or +

deskphoneNumbernumber

Numbers only, no spaces or formatting

deskphoneExtensionnumber

Numbers only, no text or formatting

mobilephoneCountryCodenumber

Numbers only, no spaces or +

mobilephoneNumbernumber

Numbers only, no spaces or formatting

emailDeliveryStatusstringread-only

The status of the last email sent to this address. This is updated by the system.

Default "unknown"
Enum"unknown""delivered""bounced"
emailTypestringread-only

The type of email address. This is set by the system.

Enum"business""personal""system""misspelled"
dateActivestring(date)

The date this email address became active. This is used to track the history of email addresses for a person. Use of this feature requires the TonicDM AdvancedContacts license.

dateInactivestring(date)

The date this email address became inactive. This is used to track the history of email addresses for a person. Use of this feature requires the TonicDM AdvancedContacts license.

isPrimeboolean

Indicates that this email address is the primary email address for this person. When displaying a Person, the Prime email address info will be used for their Name, etc. Use of this feature requires the TonicDM AdvancedContacts license.

customerDataWarehouseIdstring

The ID of the Person in the Customer's Data Warehouse. Use of this feature requires the TonicDM AdvancedMetrics license.

customerErpIdstring

The ID of the Person in the Customer's ERP system (eg. Deltek Vantagepoint). Use of this feature requires the TonicDM AdvancedMetrics license.

customerCrmIdstring

The ID of the Person in the Customer's CRM system (eg. Deltek Salesforce). Use of this feature requires the TonicDM AdvancedMetrics license.

officeobject(OrganizationOfficeWithId)

The physical location that is assigned to a Project or Person. This allows for filtering by Office, and the calcuation of metrics by Office. Use of this feature for Contact Organizations requires the TonicDM AdvancedContacts license.

disciplinesArray of objects(DisciplineWithId)

The UUIDs of the Disciplines this Person is typically involved in.

certificationsArray of objects(CertificationWithId)

Zero or more certifications that this Person has obtained, or previously obtained. Use of this feature requires the TonicDM AdvancedContacts license.

Response
application/json
{ "id": "8e8aa42241794371ae9d0ed7b67a8c86", "personId": "8e8aa42241794371ae9d0ed7b67a8c86", "brandId": "8e8aa42241794371ae9d0ed7b67a8c86", "datetimeCreated": "2019-08-24T14:15:22Z", "datetimeUpdated": "2019-08-24T14:15:22Z", "status": "active", "emailAddress": "user@example.com", "name": "string", "title": "string", "deskphoneCountryCode": 0, "deskphoneNumber": 0, "deskphoneExtension": 0, "mobilephoneCountryCode": 0, "mobilephoneNumber": 0, "emailDeliveryStatus": "unknown", "emailType": "business", "dateActive": "2019-08-24", "dateInactive": "2019-08-24", "isPrime": true, "customerDataWarehouseId": "string", "customerErpId": "string", "customerCrmId": "string", "office": { "id": "8e8aa42241794371ae9d0ed7b67a8c86", "datetimeCreated": "2019-08-24T14:15:22Z", "datetimeUpdated": "2019-08-24T14:15:22Z", "status": "active", "name": "string", "address": "string", "phoneCountryCode": 0, "phoneNumber": 0 }, "disciplines": [ { … } ], "certifications": [ { … } ] }

Projects

The list of Projects for the customer.

Operations

Teams

The list of People associated with a Project.

Operations

Groups

The list of Groups associated with a Prject.

Operations

Notes

Operations relating to the Notes that can be attached to various items.

Operations

Disciplines

Disciplines are recognized areas of professional expertise.

Operations

Certifications

Certifications recognize areas of professional specialty or project accomplishments.

Operations

Filesets

APIs to the Fileset module for accessing all files attached to objects in TonicDM.

Operations

Manual Uploading

APIs to the Fileset module for uploading files to the TonicDM cloud.

Operations

Cloud File Systems

Managing cloud file systems that TonicDM can connect to.

Operations

Correspondence

Managing Correspondence Data

Operations

File Transfers

APIs to the File Transfers Workflow module.

Operations

RFIs

APIs to the RFIs Workflow module.

Operations

Submittals

APIs to the Submittals Workflow module.

Operations

PCOs

APIs to the PCOs Workflow module.

Operations

COs

APIs to the COs Workflow module.

Operations

Tasks

APIs to the Tasks Workflow module.

Operations