Docs Call Manager Contacts

Contacts

Manage sales contacts — phone numbers, availability, and company employments.

Endpoints

Contact

GET /v2/contact/ List contacts (paginated)
POST /v2/contact/ Create a contact
GET /v2/contact/{{reference}}/ Retrieve one contact
PUT /v2/contact/{{reference}}/ Full update — all core fields required

Contact availability

GET /v2/contact-available/ List contacts — filter with ?reference=
PUT /v2/contact-available/{{reference}}/ Update available only (recommended for availability changes)

Use PUT /v2/contact-available/{reference}/ for availability-only updates instead of partial contact PUT.

Request examples

GET — retrieve contact

curl -s "https://next.logimeter.com/v2/contact/agent123/" -H "Authorization: Token xxxxxxx_your_token_xxxxx"
const response = await fetch('https://next.logimeter.com/v2/contact/agent123/', {
  headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx' },
});
const contact = await response.json();
requests.get(
    'https://next.logimeter.com/v2/contact/agent123/',
    headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx'},
).json()

POST — create contact

curl -sX POST "https://next.logimeter.com/v2/contact/" \
  -H "Authorization: Token xxxxxxx_your_token_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Jane Smith",
  "reference": "agent123",
  "phone_number_selection": "mobile_number",
  "phone_number": "27216714444",
  "mobile_number": "27821234567",
  "available": true,
  "integration_active": true,
  "employed_by": [
    {"reference": "6e7d1f48-2ca1-4ef4-a433-a3fa765ff190", "job_title": "Sales Executive"}
  ]
}'
const response = await fetch('https://next.logimeter.com/v2/contact/', {
  method: 'POST',
  headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Jane Smith',
    reference: 'agent123',
    phone_number_selection: 'mobile_number',
    phone_number: '27216714444',
    mobile_number: '27821234567',
    available: true,
    integration_active: true,
    employed_by: [{ reference: '6e7d1f48-2ca1-4ef4-a433-a3fa765ff190', job_title: 'Sales Executive' }],
  }),
});
import requests

resp = requests.post(
    'https://next.logimeter.com/v2/contact/',
    headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json'},
    json={
        'name': 'Jane Smith',
        'reference': 'agent123',
        'phone_number_selection': 'mobile_number',
        'phone_number': '27216714444',
        'mobile_number': '27821234567',
        'available': True,
        'integration_active': True,
        'employed_by': [{'reference': '6e7d1f48-2ca1-4ef4-a433-a3fa765ff190', 'job_title': 'Sales Executive'}],
    },
)
resp.raise_for_status()

PUT — full update

curl -sX PUT "https://next.logimeter.com/v2/contact/agent123/" \
  -H "Authorization: Token xxxxxxx_your_token_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Jane Smith",
  "reference": "agent123",
  "phone_number_selection": "mobile_number",
  "phone_number": "27216714444",
  "mobile_number": "27821234567",
  "available": false,
  "integration_active": true,
  "employed_by": []
}'
await fetch('https://next.logimeter.com/v2/contact/agent123/', {
  method: 'PUT',
  headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json' },
  body: JSON.stringify({
    name: 'Jane Smith',
    reference: 'agent123',
    phone_number_selection: 'mobile_number',
    phone_number: '27216714444',
    mobile_number: '27821234567',
    available: false,
    integration_active: true,
    employed_by: [],
  }),
});
requests.put(
    'https://next.logimeter.com/v2/contact/agent123/',
    headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json'},
    json={
        'name': 'Jane Smith',
        'reference': 'agent123',
        'phone_number_selection': 'mobile_number',
        'phone_number': '27216714444',
        'mobile_number': '27821234567',
        'available': False,
        'integration_active': True,
        'employed_by': [],
    },
)

PUT — set unavailable (contact-available)

curl -sX PUT "https://next.logimeter.com/v2/contact-available/agent123/" \
  -H "Authorization: Token xxxxxxx_your_token_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{"available": false}'
await fetch('https://next.logimeter.com/v2/contact-available/agent123/', {
  method: 'PUT',
  headers: { Authorization: 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json' },
  body: JSON.stringify({ available: false }),
});
requests.put(
    'https://next.logimeter.com/v2/contact-available/agent123/',
    headers={'Authorization': 'Token xxxxxxx_your_token_xxxxx', 'Content-Type': 'application/json'},
    json={'available': False},
)

Responses

200 OK / 201 Created

Contact object (callback_url is not currently included in responses).

{
  "id": 99,
  "name": "Jane Smith",
  "reference": "agent123",
  "phone_number": "27216714444",
  "mobile_number": "27821234567",
  "phone_number_selection": "mobile_number",
  "is_live": false,
  "integration_active": true,
  "available": true,
  "employed_by": [
    {"id": 1, "name": "Trask Industries", "reference": "6e7d1f48-2ca1-4ef4-a433-a3fa765ff190", "job_title": "Sales Executive"}
  ]
}
200 OK

contact-available response:

{"id": 99, "name": "Jane Smith", "reference": "agent123", "available": false}

Validation errors (400)

ScenarioError
Duplicate referenceDuplicate Partner contact reference
Invalid phone_number_selectionInvalid phone_number_selection: … — must be phone_number or mobile_number
Blank selected numberSelected phone/mobile number cannot be blank
Invalid E.164Field error on phone_number / mobile_number

Contact fields

FieldTypeRequiredDescription
namestringyesFull name; split into first/last on create.
referencestringyesYour unique contact ID (case-insensitive unique per partner).
phone_number_selectionstringyesphone_number or mobile_number — which number Call Manager dials.
phone_numberstringconditionalZA E.164 digits. Required when selected.
mobile_numberstringconditionalZA E.164 digits. Required when selected.
availablebooleanoptionalWhether contact can receive calls (default false on create).
integration_activebooleanoptionalPartner-managed flag; changes may trigger emails.
is_livebooleanread-onlyContact is in use.
employed_by[]arrayoptionalCompany employments — write with {reference, job_title}; name is read-only in responses.

contact-available fields

FieldTypeRequiredDescription
id, name, referenceread-onlyContact identifiers.
availablebooleanyesMust always be sent as true or false. Omission causes a server error.

List filter note: ?available=True / ?available=False may not filter correctly (the API compares string values against a boolean field). Prefer filtering client-side or use ?reference= to look up a specific contact.