Contacts
A Contact relationship links a Person to an Organisation, defining their role as a contact person at that company. It stores role-specific data such as business email, phone number, department, and role.
Use the Relationship_Person_Contact_Standard endpoint to manage Standard Contacts. Contacts inherit all fields from Relationship and add contact-specific fields like EmailAddress, PhoneNumber, Department, and Role.
A Contact (Relationship_Person_Contact_Standard) is a Relationship — it defines the role a person plays at a specific organisation.
A Person (Relation_Person) is the entity itself — the individual record with name, birth date, etc. The same Person can be a Contact at multiple organisations simultaneously.
Relationship_Person_Contact is the abstract base type for all contact subtypes. Querying it returns every variant in one call:
Relationship_Person_Contact_Standard— Standard contact at a company (this page).Relationship_Person_Contact_Employee— employees of your organisation.
See Querying all contact subtypes below for the cross-subtype aggregate endpoint.
Endpoints
List Contacts
Retrieve a paginated list of Standard contacts.
/v1/odata/Relationship_Person_Contact_StandardSingle Contact
Retrieve a single contact by its ID.
/v1/odata/Relationship_Person_Contact_Standard({id})With expanded relations:
/v1/odata/Relationship_Person_Contact_Standard({id})?$expand=Relation,Person,RoleCreate Contact Between Existing Relations
Link an existing Person as a contact at an existing Organisation:
/v1/odata/Relationship_Person_Contact_StandardRelation.ID— The parent OrganisationPerson.ID— The existing Person to link
Create Contact with a New Person
Create a contact and its underlying Person in a single request:
/v1/odata/Relationship_Person_Contact_StandardRelation.ID— The parent Organisation (must already exist)Person— The new Person fields (created automatically).LastNameis mandatory.
Update Contact
Update an existing contact relationship. Provide only the fields to update.
/v1/odata/Relationship_Person_Contact_Standard({id})Delete Contact
Delete a contact relationship by ID. This removes the contact role but does not delete the underlying Person or Organisation.
/v1/odata/Relationship_Person_Contact_Standard({id})Querying all contact subtypes
The base type Relationship_Person_Contact returns every contact subtype in one call — Standard contacts, Employees, and any other contact variants. Use it when you want to search across all contact types simultaneously (e.g., "list everyone linked to Acme Corp regardless of role").
/v1/odata/Relationship_Person_ContactSingle contact (any subtype):
/v1/odata/Relationship_Person_Contact({id})Update and Delete also work on the base endpoint and operate on whichever subtype the ID resolves to:
/v1/odata/Relationship_Person_Contact({id})/v1/odata/Relationship_Person_Contact({id})The base endpoint does not support POST (you can't create an abstract type). To create a new contact, use a concrete subtype:
Fields
Standard Fields (all entities)
| Field | Type | Description |
|---|---|---|
ID | Guid | Primary key (UUID) |
_Type | String | Entity type discriminator (Relationship.Person.Contact.Standard — or another subtype when queried via the base endpoint) |
_Name | String | Computed display name |
SortIndex | Double | Sorting order |
CreationDate | DateTimeOffset | Date the record was created |
LastMutationDate | DateTimeOffset | Date of the last modification |
IsActive | Boolean | Whether the record is active |
IsClosed | Boolean | Whether the record is closed |
Contact Fields
| Field | Type | Description |
|---|---|---|
Name | String | Contact display name |
SortName | String | Sortable name variant |
EmailAddress | String | Business email address (Standard) |
PhoneNumber | String | Business phone number (Standard) |
MobilePhoneNumber | String | Mobile phone number (Standard) |
Department | String | Department at the organisation (Standard) |
Relationships
| Relationship | Target Entity | Cardinality | Description |
|---|---|---|---|
| Relation | Relation | N:1 | Parent organisation |
| Person | Relation.Person | N:1 | The contact person |
| Function | Datastore | N:1 | Job function |
| Role | Datastore | N:1 | Contact role |
| EmailAddresses | EmailAddress | 1:N | Email addresses |
| PhoneNumbers | PhoneNumber | 1:N | Phone numbers |
| Activities | Activity | 1:N | Linked activities |
| Attachments | Attachment | 1:N | Attached files |
| Notes | Note | 1:N | Notes |
| Labels | Label | 1:N | Labels |
Expanding Relationships
/v1/odata/Relationship_Person_Contact_Standard({id})?$expand=Person,Relation/v1/odata/Relationship_Person_Contact_Standard?$select=Department&$expand=Role($select=_Name),Person($select=FirstName,LastName,EmailAddress),Relation($select=_Name)/v1/odata/Relationship_Person_Contact?$filter=ID eq 164bd548-b9f9-4d5e-afaa-b8aba878cce9&$expand=Person,RelationNavigating Relationships
/v1/odata/Relationship_Person_Contact_Standard({id})/RelationFiltering Examples
/v1/odata/Relationship_Person_Contact_Standard?$filter=EmailAddress eq '{EmailAddress}'&$top={top}/v1/odata/Relationship_Person_Contact_Standard?$filter=contains(Name, '{Name}')&$top={top}/v1/odata/Relationship_Person_Contact_Standard?$filter=PhoneNumber eq '{PhoneNumber}' or MobilePhoneNumber eq '{MobilePhoneNumber}'&$top={top}/v1/odata/Relationship_Person_Contact_Standard?$filter=Department eq '{Department}'&$top={top}/v1/odata/Relationship_Person_Contact_Standard?$filter=CreationDate gt {CreationDate}&$top={top}/v1/odata/Relationship_Person_Contact_Standard?$filter=IsClosed eq {IsClosed}&$top={top}:::warning Filtering by _Type is not supported
$filter=_Type eq … is silently ignored — see Filtering by Type. To narrow to a specific Contact subtype, query that subtype's own entity set:
/v1/odata/Relationship_Person_Contact_Standard?$top={top}/v1/odata/Relationship_Person_Contact_Employee?$top={top}:::