Facilities
Places where shifts happen. Scopes: Read facilities for GET, Manage facilities for everything
else.
| Method | Path | Purpose |
|---|---|---|
GET | /facilities | List active facilities |
POST | /facilities | Create a facility |
GET | /facilities/{id} | Get a facility |
PUT | /facilities/{id} | Update a facility |
DELETE | /facilities/{id} | Delete a facility |
GET | /facilities/{id}/providers | Providers assigned to the facility |
GET | /facilities/{id}/contacts | Contacts at the facility |
POST | /facilities/{id}/contacts | Add a contact |
PUT | /facility-contacts/{id} | Update a contact |
DELETE | /facility-contacts/{id} | Delete a contact |
The facility object
{
"id": "0b7c…",
"organizationId": "680e…",
"name": "Cedar Ridge Medical Center",
"type": "Hospital",
"website": "https://cedarridge.example",
"phone": "+16025550100",
"email": "staffing@cedarridge.example",
"description": null,
"address": "1200 N Central Ave",
"city": "Phoenix",
"state": "AZ",
"zip": "85004",
"timezone": "America/Phoenix",
"defaultStartTime": "07:00:00",
"defaultEndTime": "19:00:00",
"status": "active",
"isActive": true,
"createdAt": "2025-02-01T16:00:00.000Z",
"updatedAt": "2026-09-12T09:31:44.000Z"
}
timezone is the IANA zone every shift time at this facility is expressed in. It is derived from state
when not set explicitly. defaultStartTime and defaultEndTime prefill new shifts and may describe an
overnight window.
List and get
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/facilities
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/facilities/0b7c…
Create and update
curl -X POST https://app.atlahq.com/api/v1/facilities \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{
"name": "Cedar Ridge Medical Center",
"type": "Hospital",
"address": "1200 N Central Ave", "city": "Phoenix", "state": "AZ", "zip": "85004",
"timezone": "America/Phoenix",
"defaultStartTime": "07:00", "defaultEndTime": "19:00"
}'
{ "success": true, "id": "0b7c…" }
Only name is required. PUT /facilities/{id} takes the same fields, all optional; status is one of
active, inactive, maintenance, pending.
Delete
curl -X DELETE https://app.atlahq.com/api/v1/facilities/0b7c… -H "Authorization: Bearer $KEY"
Refused with 409 while any orders or document requirements still reference the facility. Prefer
PUT { "status": "inactive" } for a facility you no longer staff.
Providers at a facility
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/facilities/0b7c…/providers
[
{
"id": "4c1d…", "userId": "8e2a…", "email": "jane.smith@example.com",
"firstName": "Jane", "lastName": "Smith", "displayName": "Jane Smith",
"title": "RN", "titleId": "2f6b…", "specialty": "ICU",
"specialties": [ { "id": "7d3f…", "name": "Intensive Care" } ],
"department": "Float pool", "status": "active"
}
]
Assignments themselves are managed from the provider side: see Providers → Facility assignments.
Contacts
curl -H "Authorization: Bearer $KEY" https://app.atlahq.com/api/v1/facilities/0b7c…/contacts
[
{
"id": "c9a1…", "facilityId": "0b7c…",
"firstName": "Dana", "lastName": "Ortiz", "title": "Staffing coordinator",
"email": "dortiz@cedarridge.example", "phone": "+16025550101", "mobile": null,
"isPrimary": true, "notes": null,
"createdAt": "2026-03-04T15:10:00.000Z", "updatedAt": "2026-03-04T15:10:00.000Z"
}
]
POST /facilities/{id}/contacts needs at least a name or an email. Setting isPrimary: true clears the
previous primary contact. PUT and DELETE /facility-contacts/{id} take the contact id.