Contacts represent individuals belonging to Clients. In many cases, if a Contact is a Client, the Contact is where the email and other important information for the client whereas the Client is just a shell container.
GET /api/v2/contacts
{
  "page_count": 1,
  "page_size": 10,
  "total_count": 8,
  "contacts": [
    {
      "name": "John Doe"
      "ext": "1234"
      "title": "Product Manager"
      "id": 495
      "client_id": 117
      "mobile": "123-456-7891"
      "phone": "123-456-7890"
      "avatar": "default_avatars/avatars/missing_original.jpg"
      "email": "[email protected]"
    },
    ...
  ]
}
GET /api/v2/contacts?page=2On a normal bulk GET Clientary will return 10 client results at once. To paginate through more results, you can use the page parameter.
GET /api/v2/contacts?page_size=50You may also use a different page_size parameter. The maximum allowed page_size is 100.
GET /api/v2/clients/:client_id/contactsSince Contacts are a nested resource of Clients, you may ask for Contacts specific to a client.
GET /api/v2/contacts/:id
{
  "name": "John Doe"
  "ext": "1234"
  "title": "Product Manager"
  "id": 495
  "client_id": 117
  "mobile": "123-456-7891"
  "phone": "123-456-7890"
  "avatar": "default_avatars/avatars/missing_original.jpg"
  "email": "[email protected]"
}
POST /api/v2/clients/:client_id/contactsA client_id must be provided since a Contact must exist within a Client
{
  "client_user": {
    "name": "John Doe",
    "email": "[email protected]"
  }
}
  Required Fields: name, email (HTTP 422 on failure) 
  
  Other Requirements: must meet plan limits (HTTP 426 on failure)
PUT /api/v2/contacts/:idYou may provide a partial list of fields to update
{
  "client_user": {
    "title": "Software Developer"
  }
}
DELETE /api/v2/contacts/:idDeleting a contact will result in the deletion of all associated comments.