Skip to main content

Contacts

EntityRelationshipRelationship.Person.Contact.Standard

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.

Not to be confused with "Persons"

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.

Base type and subtypes

Relationship_Person_Contact is the abstract base type for all contact subtypes. Querying it returns every variant in one call:

See Querying all contact subtypes below for the cross-subtype aggregate endpoint.

Endpoints

List Contacts

Retrieve a paginated list of Standard contacts.

GET/v1/odata/Relationship_Person_Contact_Standard

Single Contact

Retrieve a single contact by its ID.

GET/v1/odata/Relationship_Person_Contact_Standard({id})

With expanded relations:

GET/v1/odata/Relationship_Person_Contact_Standard({id})?$expand=Relation,Person,Role

Create Contact Between Existing Relations

Link an existing Person as a contact at an existing Organisation:

POST/v1/odata/Relationship_Person_Contact_Standard
  • Relation.ID — The parent Organisation
  • Person.ID — The existing Person to link

Create Contact with a New Person

Create a contact and its underlying Person in a single request:

POST/v1/odata/Relationship_Person_Contact_Standard
  • Relation.ID — The parent Organisation (must already exist)
  • Person — The new Person fields (created automatically). LastName is mandatory.

Update Contact

Update an existing contact relationship. Provide only the fields to update.

PUT/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.

DELETE/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").

GET/v1/odata/Relationship_Person_Contact

Single contact (any subtype):

GET/v1/odata/Relationship_Person_Contact({id})

Update and Delete also work on the base endpoint and operate on whichever subtype the ID resolves to:

PUT/v1/odata/Relationship_Person_Contact({id})
DELETE/v1/odata/Relationship_Person_Contact({id})
Creating contacts

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)

FieldTypeDescription
IDGuidPrimary key (UUID)
_TypeStringEntity type discriminator (Relationship.Person.Contact.Standard — or another subtype when queried via the base endpoint)
_NameStringComputed display name
SortIndexDoubleSorting order
CreationDateDateTimeOffsetDate the record was created
LastMutationDateDateTimeOffsetDate of the last modification
IsActiveBooleanWhether the record is active
IsClosedBooleanWhether the record is closed

Contact Fields

FieldTypeDescription
NameStringContact display name
SortNameStringSortable name variant
EmailAddressStringBusiness email address (Standard)
PhoneNumberStringBusiness phone number (Standard)
MobilePhoneNumberStringMobile phone number (Standard)
DepartmentStringDepartment at the organisation (Standard)

Relationships

RelationshipTarget EntityCardinalityDescription
RelationRelationN:1Parent organisation
PersonRelation.PersonN:1The contact person
FunctionDatastoreN:1Job function
RoleDatastoreN:1Contact role
EmailAddressesEmailAddress1:NEmail addresses
PhoneNumbersPhoneNumber1:NPhone numbers
ActivitiesActivity1:NLinked activities
AttachmentsAttachment1:NAttached files
NotesNote1:NNotes
LabelsLabel1:NLabels

Expanding Relationships

GET/v1/odata/Relationship_Person_Contact_Standard({id})?$expand=Person,Relation
GET/v1/odata/Relationship_Person_Contact_Standard?$select=Department&$expand=Role($select=_Name),Person($select=FirstName,LastName,EmailAddress),Relation($select=_Name)
GET/v1/odata/Relationship_Person_Contact?$filter=ID eq 164bd548-b9f9-4d5e-afaa-b8aba878cce9&$expand=Person,Relation
GET/v1/odata/Relationship_Person_Contact_Standard({id})/Relation

Filtering Examples

GET/v1/odata/Relationship_Person_Contact_Standard?$filter=EmailAddress eq '{EmailAddress}'&$top={top}
GET/v1/odata/Relationship_Person_Contact_Standard?$filter=contains(Name, '{Name}')&$top={top}
GET/v1/odata/Relationship_Person_Contact_Standard?$filter=PhoneNumber eq '{PhoneNumber}' or MobilePhoneNumber eq '{MobilePhoneNumber}'&$top={top}
GET/v1/odata/Relationship_Person_Contact_Standard?$filter=Department eq '{Department}'&$top={top}
GET/v1/odata/Relationship_Person_Contact_Standard?$filter=CreationDate gt {CreationDate}&$top={top}
GET/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:

GET/v1/odata/Relationship_Person_Contact_Standard?$top={top}
GET/v1/odata/Relationship_Person_Contact_Employee?$top={top}

:::