Download OpenAPI specification:
DRAFT API SPECIFICATION - Subject to Change
This is a draft specification for the Senior Place API. The endpoints and schemas described here are not yet implemented and may change before the final release.
All API requests require authentication using an API key. Include your API key in the Authorization header:
Authorization: ApiKey YOUR_API_KEY
API keys can be generated from your tenant's admin panel. Each API key can be given specific permissions or roles.
Returns all available client statuses for your tenant. Use the returned status IDs when creating clients.
Note: Status IDs are unique per tenant. The same status name may have different IDs across tenants.
includeArchived | boolean Default: false Include archived statuses in the response |
[- {
- "id": "550e8400-e29b-41d4-a716-446655440000",
- "key": "new-lead",
- "name": "New Lead",
- "order": 1,
- "isArchived": false
}, - {
- "id": "550e8400-e29b-41d4-a716-446655440001",
- "key": "contacted",
- "name": "Contacted",
- "order": 2,
- "isArchived": false
}, - {
- "id": "550e8400-e29b-41d4-a716-446655440002",
- "key": "touring",
- "name": "Touring",
- "order": 3,
- "isArchived": false
}, - {
- "id": "550e8400-e29b-41d4-a716-446655440003",
- "key": "placed",
- "name": "Placed",
- "order": 4,
- "isArchived": false
}
]
Creates a new client record in the CRM.
statusId
: Must be a valid status ID from your tenant (only required field)Custom fields are tenant-specific. To include custom field answers:
You can include multiple related contacts (family members, friends, POA, etc.) in the contacts
array.
statusId required | string <uuid> The ID of the client status. Must be a valid status ID for your tenant. Use the /client-statuses endpoint to get available status IDs. |
name | string or null Full name of the client (the senior) |
preferredName | string Preferred name or nickname |
string <email> Client's email address | |
phone | string Client's phone number (will be normalized to E.164 format) |
gender | string Enum: "Female" "Male" "Other" Client's gender |
maritalStatus | string Enum: "Single" "Married" "Divorced" "Widowed" "Separated" "Domestic Partnership" Marital status |
dateOfBirth | string <date> Date of birth (YYYY-MM-DD) |
address | string Current street address |
city | string Current city |
state | string Two-letter state code |
zip | string ZIP code |
locationName | string Name of current location (e.g., hospital, facility name) |
currentLocationType | string Enum: "Home" "Hospital" "Skilled Nursing" "Assisted Living" "Memory Care" "Independent Living" "Rehabilitation" "Other" Type of current location |
dischargeDate | string <date> Expected discharge date if applicable (YYYY-MM-DD) |
bestLocationAddress | string Preferred location address |
bestLocationCity | string Preferred city |
bestLocationState | string Preferred state (two-letter code) |
bestLocationZip | string Preferred ZIP code |
monthlyBudget | number Monthly budget in dollars |
Array of objects (Contact) Related contacts (family, friends, POA, etc.) | |
Array of objects (CustomField) Answers to tenant-specific custom questions. How to use:
Examples:
| |
notes | string General notes about the client |
assignedUserId | string <uuid> ID of the user assigned to this client. Use /users endpoint to get available user IDs. To explicitly mark a client as unassigned, use the empty UUID: |
referralContactId | string <uuid> ID of the referral contact. Use /referral-contacts endpoint to get or create referral contacts. |
referralOrganizationId | string <uuid> ID of the referral organization. Use /referral-organizations endpoint to get or create referral organizations. |
{- "statusId": "550e8400-e29b-41d4-a716-446655440000"
}
{- "id": "660e8400-e29b-41d4-a716-446655440001",
- "serial": 1234
}
Returns all clients visible to your API key based on permissions.
You can filter clients using the following query parameters:
Filter by assigned user (assignedUserId
):
00000000-0000-0000-0000-000000000000
) to return only unassigned clientsFilter by update time (updatedAfter
):
?updatedAfter=2024-01-15T14:30:00Z
Filters can be combined: ?assignedUserId=UUID&updatedAfter=2024-01-15T14:30:00Z
Returns an array of client objects sorted by most recently updated first. Only core client fields are included - related entities like contacts and custom fields are excluded. To retrieve these fields including contacts, use the GET /clients/{id} endpoint to fetch individual client details.
assignedUserId | string <uuid> Examples:
Filter clients by assigned user.
|
updatedAfter | string <date-time> Example: updatedAfter=2024-01-15T14:30:00Z Filter clients by update time. Returns only clients updated after the specified timestamp.
|
[- {
- "id": "660e8400-e29b-41d4-a716-446655440001",
- "serial": 1234,
- "name": "John Smith",
- "email": "john.smith@example.com",
- "phone": "+14155551234",
- "statusListItemId": "550e8400-e29b-41d4-a716-446655440000",
- "assignedUserId": "770e8400-e29b-41d4-a716-446655440002",
- "regionId": "880e8400-e29b-41d4-a716-446655440003",
- "updatedAt": "2024-01-15T14:30:00Z",
- "createdAt": "2024-01-10T10:00:00Z",
- "archived": false,
- "deleted": false
}, - {
- "id": "660e8400-e29b-41d4-a716-446655440004",
- "serial": 1235,
- "name": "Jane Doe",
- "email": null,
- "phone": "+14155555678",
- "statusListItemId": "550e8400-e29b-41d4-a716-446655440000",
- "assignedUserId": null,
- "regionId": "880e8400-e29b-41d4-a716-446655440003",
- "updatedAt": "2024-01-14T16:45:00Z",
- "createdAt": "2024-01-12T09:30:00Z",
- "archived": false,
- "deleted": false
}
]
Returns detailed information for a specific client.
Returns the client object with all core fields, custom field answers, and related contacts.
id required | string <uuid> Example: 660e8400-e29b-41d4-a716-446655440001 Client ID (UUID) |
{- "id": "660e8400-e29b-41d4-a716-446655440001",
- "serial": 1234,
- "name": "John Smith",
- "email": "john.smith@example.com",
- "phone": "+14155551234",
- "preferredName": "Johnny",
- "gender": "Male",
- "maritalStatus": "Widowed",
- "dateOfBirth": "1945-06-15",
- "address": "456 Oak Ave",
- "city": "Portland",
- "state": "OR",
- "zip": "97201",
- "locationName": "Providence Medical Center",
- "currentLocationType": "Hospital",
- "dischargeDate": "2024-02-15",
- "bestLocationCity": "Portland",
- "bestLocationState": "OR",
- "monthlyBudget": 4500,
- "statusId": "550e8400-e29b-41d4-a716-446655440000",
- "assignedUserId": "770e8400-e29b-41d4-a716-446655440002",
- "regionId": "880e8400-e29b-41d4-a716-446655440003",
- "updatedAt": "2024-01-15T14:30:00Z",
- "createdAt": "2024-01-10T10:00:00Z",
- "customFields": [
- {
- "key": "preferred-room-type",
- "value": "Private room with bathroom"
}, - {
- "key": "owns_home",
- "value": true
}, - {
- "key": "assistance_needed",
- "value": [
- "grooming",
- "bathing"
]
}
], - "contacts": [
- {
- "name": "Jane Smith",
- "email": "jane.smith@example.com",
- "phone": "+15551234567",
- "address": "123 Oak St",
- "city": "Seattle",
- "state": "WA",
- "zip": "98101",
- "isPrimary": true
}, - {
- "relationship": "Son",
- "name": "Michael Smith",
- "email": "michael.smith@example.com",
- "phone": "+15559876543",
- "isPrimary": false
}
]
}
Updates an existing client record with the provided fields.
This endpoint supports partial updates - you only need to provide the fields you want to change. All fields are optional.
customFields
CAN be updated - only the custom fields you provide will be updated, others remain unchangedAll field validations from client creation apply:
id required | string <uuid> Example: 660e8400-e29b-41d4-a716-446655440001 Client ID (UUID) |
statusId | string <uuid> Update the client status |
name | string Update client's full name |
preferredName | string Update preferred name or nickname |
string <email> Update client's email address | |
phone | string Update client's phone number (will be normalized to E.164 format) |
gender | string Enum: "Female" "Male" "Other" Update client's gender |
maritalStatus | string Enum: "Single" "Married" "Divorced" "Widowed" "Separated" "Domestic Partnership" Update marital status |
dateOfBirth | string <date> Update date of birth (YYYY-MM-DD) |
address | string Update current street address |
city | string Update current city |
state | string Update two-letter state code |
zip | string Update ZIP code |
locationName | string Update name of current location |
currentLocationType | string Enum: "Home" "Hospital" "Skilled Nursing" "Assisted Living" "Memory Care" "Independent Living" "Rehabilitation" "Other" Update type of current location |
dischargeDate | string <date> Update expected discharge date if applicable (YYYY-MM-DD) |
bestLocationAddress | string Update preferred location address |
bestLocationCity | string Update preferred city |
bestLocationState | string Update preferred state (two-letter code) |
bestLocationZip | string Update preferred ZIP code |
monthlyBudget | number Update monthly budget in dollars |
assignedUserId | string <uuid> Update the assigned user ID.
Use the empty UUID ( |
referralContactId | string <uuid> Update the referral contact ID |
referralOrganizationId | string <uuid> Update the referral organization ID |
Array of objects (CustomField) Update custom field answers. Only the custom fields provided in this array will be updated. Partial Update Behavior:
Format: Use the same format as CreateClientRequest - provide the question key and value. All validation rules from creation apply. |
{- "statusId": "550e8400-e29b-41d4-a716-446655440001"
}
{- "id": "660e8400-e29b-41d4-a716-446655440001",
- "serial": 1234,
- "name": "John Michael Smith",
- "email": "mike.smith@example.com",
- "phone": "+15551234567",
- "preferredName": "Mike",
- "gender": "Male",
- "maritalStatus": "Widowed",
- "dateOfBirth": "1945-06-15",
- "address": "456 Oak Ave",
- "city": "Portland",
- "state": "OR",
- "zip": "97201",
- "monthlyBudget": 5500,
- "statusId": "550e8400-e29b-41d4-a716-446655440002",
- "assignedUserId": "770e8400-e29b-41d4-a716-446655440002",
- "regionId": "880e8400-e29b-41d4-a716-446655440003",
- "updatedAt": "2024-01-15T16:45:00Z",
- "createdAt": "2024-01-10T10:00:00Z",
- "customFields": [
- {
- "key": "preferred-room-type",
- "value": "Private room with bathroom"
}
]
}
Returns all custom questions configured for clients in your tenant. Use these questions to understand what custom fields are available when creating clients.
For multi-select questions, use the prompt keys in your answers array. For other question types, provide the appropriate value type (text, number, boolean, date).
category | string Example: category=preferences Filter questions by category |
[- {
- "id": "aa0e8400-e29b-41d4-a716-446655440008",
- "key": "preferred-room-type",
- "title": "What type of room do you prefer?",
- "questionType": "multi-select",
- "category": "preferences",
- "annotation": "Select all room types that would be acceptable",
- "required": false,
- "order": 10,
- "prompts": [
- {
- "key": "private-room",
- "title": "Private Room",
- "order": 1
}, - {
- "key": "shared-room",
- "title": "Shared Room",
- "order": 2
}, - {
- "key": "studio",
- "title": "Studio",
- "order": 3
}
]
}, - {
- "id": "aa0e8400-e29b-41d4-a716-446655440009",
- "key": "monthly-budget",
- "title": "What is your monthly budget range?",
- "questionType": "range",
- "category": "financial",
- "annotation": "Please provide your comfortable spending range",
- "required": true,
- "order": 5,
- "prompts": null
}, - {
- "id": "aa0e8400-e29b-41d4-a716-446655440010",
- "key": "pet-friendly-required",
- "title": "Do you need a pet-friendly facility?",
- "questionType": "boolean",
- "category": "requirements",
- "annotation": null,
- "required": false,
- "order": 15,
- "prompts": null
}
]
Returns a list of users that can be assigned to clients.
Use the returned user IDs in the assignedUserId
field when creating clients.
[- {
- "id": "770e8400-e29b-41d4-a716-446655440005",
- "email": "john.smith@seniorplace.com",
- "name": "John Smith"
}, - {
- "id": "770e8400-e29b-41d4-a716-446655440006",
- "email": "sarah.jones@seniorplace.com",
- "name": "Sarah Jones"
}
]
Returns all referral contacts for your tenant
[- {
- "id": "880e8400-e29b-41d4-a716-446655440006",
- "name": "Dr. Sarah Wilson",
- "email": "sarah.wilson@hospital.com",
- "phone": "(555) 123-4567",
- "organizationId": "990e8400-e29b-41d4-a716-446655440007",
- "title": "Discharge Planner"
}
]
Creates a new referral contact that can be used when creating clients
name required | string Full name of the contact |
string <email> Email address | |
phone | string Phone number |
organizationId | string <uuid> ID of the organization this contact belongs to. Must be a valid organization ID that you have access to. |
title | string Job title or role |
{- "name": "Dr. Sarah Wilson",
- "email": "sarah.wilson@hospital.com",
- "phone": "(555) 123-4567",
- "organizationId": "990e8400-e29b-41d4-a716-446655440007",
- "title": "Discharge Planner"
}
{- "id": "880e8400-e29b-41d4-a716-446655440006"
}
Returns all referral organizations for your tenant
[- {
- "id": "990e8400-e29b-41d4-a716-446655440007",
- "name": "Seattle General Hospital",
- "phone": "(555) 234-5678",
- "address": "123 Medical Center Dr",
- "city": "Seattle",
- "state": "WA",
- "zip": "98101"
}
]
Creates a new referral organization that can be used when creating clients
name required | string Organization name |
phone | string Main phone number |
website | string Website URL |
address | string Street address |
city | string |
state | string Two-letter state code |
zip | string |
{- "name": "Seattle General Hospital",
- "phone": "(555) 234-5678",
- "address": "123 Medical Center Dr",
- "city": "Seattle",
- "state": "WA",
- "zip": "98101"
}
{- "id": "990e8400-e29b-41d4-a716-446655440007"
}