---
title: "Get a list of persons"
method: GET
path: "/v1/persons"
tags: ["Persons"]
---

# Get a list of persons

`GET /v1/persons`

Retrieve a paged collection of persons (required scope contacts:persons:read)

## Query parameters

- `sortBy` 'surname' | 'createdAt' — Represents the sort options for a persons<p>Possible values:</p><ul><li><b>surname</b>: Sorts the persons by surname</li><li><b>createdAt</b>: Sorts the persons by creation date</li></ul>
- `direction` 'ascending' | 'descending' — Represents the direction in which sorting should be applied<p>Possible values:</p><ul><li><b>ascending</b>: Indicates ascending sorting order</li><li><b>descending</b>: Indicates descending sorting order</li></ul>
- `contactId` integer[]
- `surname` string
- `email` string
- `mobile` string
- `landline` string
- `isOptedOut` boolean
- `isMain` boolean
- `pageNumber` integer
- `pageSize` integer

## Headers

- `Customer-Id` integer, required

## Response `200`

OK

- PagedResponseReadPersonModel — A paged collection of items
  - `items` ReadPersonModel[] — The items returned for the requested page
    - `id` string, uuid — The unique identifier of the person
    - `createdAt` string, date-time — The UTC timestamp of when this person was created
    - `contactId` integer — The unique identifier of the contact that this person belongs to
    - `title` string — The person's title
    - `forename` string — The person's first name
    - `surname` string — The person's second name
    - `email` string — The email address of the person
    - `mobile` string — The mobile telephone number of the person
    - `landline` string — The landline telephone number of the person
    - `extension` string — The landline extension of the person
    - `position` string — The job role that the person holds within the contact
    - `department` string — The department that the person belongs to
    - `isOptedOut` boolean — A flag indicating if the contact has opted out of marketing communications
    - `isMain` boolean — A flag indicating if this person is the primary person for the contact
    - `flagIds` integer[] — The IDs of flags currently applied to this person
    - `customFields` CustomFieldReadModel[] — Custom fields associated with persons
      - `definitionId` integer — The unique identifier of the associated custom field definition
      - `value` string, nullable — The current value set for the custom field
      - `definition` CustomFieldEmbeddedDefinitionModel — Represents the definition of a custom field
        - `caption` string — The caption of a custom field
        - `type` 'boolean' | 'integer' | 'decimal' | 'text' | 'list' | 'statement' | 'date' | 'note' | 'time' | 'systemList' — The type of the custom field. New field types may be added in the future, so integrations should be resilient to this<p>Possible values:</p><ul><li><b>boolean</b>: Indicates a boolean field <i>(Example: "false")</i></li><li><b>integer</b>: Indicates an integer numeric field <i>(Example: "1001")</i></li><li><b>decimal</b>: Indicates a floating point numeric field <i>(Example: "1.42")</i></li><li><b>text</b>: Indicates an editable text field <i>(Example: "Purple")</i></li><li><b>list</b>: Indicates a field with a single value from a predefined list of options <i>(Example: "Purple")</i></li><li><b>statement</b>: Indicates a text field that cannot be edited. The value is always equal to the default value <i>(Example: "By signing this you agree to the following...")</i></li><li><b>date</b>: Indicates a date field, which will be represented as an RFC3339 formatted date string. The default value is not supported for this type and will always be null <i>(Example: "2024-01-31")</i></li><li><b>note</b>: Indicates a multiline, editable text field. Lines are seperated with a line feed character <i>(Example: "This is a note.")</i></li><li><b>time</b>: Indicates a time field, formatted as HH:mm. The default value is not supported for this type and will always be null <i>(Example: "10:30")</i></li><li><b>systemList</b>: Indicates the ID of a related resource, vehicle or web user <i>(Example: "228007")</i></li></ul>
        - `listOptions` string[], nullable — Shows the possible values for a list type custom field. Value will be null if type is not list
        - `isRequired` boolean — Indicates if the field is required in the UI. This is NOT enforced in the API
        - `isEditable` boolean — Indicates if the field is editable
        - `default` string, nullable — The default value of a custom field. Formatted in accordance with the rules of the field type
      - `systemListValueMetadata` SystemListValueMetadataModel — Represents details of custom field value of type system list
        - `label` string, nullable — A descriptive label for the specific resource, vehicle or web user that this system list value relates to
        - `entityType` 'resource' | 'vehicle' | 'webUser' — The type of entity used for custom field value of type system list<p>Possible values:</p><ul><li><b>resource</b></li><li><b>vehicle</b></li><li><b>webUser</b></li></ul>
  - `pageNumber` integer — The page number of the response where 1 is the first page
  - `pageSize` integer — The number of items requested for the current page
  - `pageItemCount` integer — The number of items returned in the current page

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `500` — Internal Server Error

---

[API](https://skmtc.net/bigchange/apis/bigchange-dx.md) · [All operations](https://skmtc.net/bigchange/apis/bigchange-dx/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bigchange/bigchange-dx/revisions/916e669fc527/schema)
