Update Onboarding Provider
RFC 7386 merge patch (Content-Type: application/merge-patch+json, plain application/json also accepted here): null clears a field, omitted leaves it alone, arrays replace wholesale. Requires If-Match from a prior read, or * for last-writer-wins; 412 when stale, 428 when missing.
Endpoint
PATCH /v2/onboarding/providers/{provider_id}
Path Parameters
| Parameter |
Type |
Required |
Description |
provider_id |
string |
Yes |
The onboarding provider's id. |
Request
curl --location '{base_url}/v2/onboarding/providers/d27a6b10-9f34-4e82-b5c1-7a03e8946fd2' \
--request PATCH \
--header 'Authorization: Bearer JWT_TOKEN' \
--header 'Content-Type: application/merge-patch+json' \
--data '{}'
Response
Success Response
Code: 200 OK
{
"id": "b41f7c92-5e08-4a13-8d6f-2c9147ab3e5d",
"npi": "1740398215",
"emr_user_id": null,
"npi_verified": true,
"first_name": "Morgan",
"last_name": "Delgado",
"name_prefix": null,
"credential": "DPT",
"dob": "1991-07-23",
"gender": "M",
"email": "m.delgado@example.com",
"phone": "+1-555-0143",
"license_no": "PT-30914",
"ptan": null,
"sole_proprietor": false,
"taxonomies": [
{
"code": "97110",
"desc": null,
"group_code": null,
"group_desc": null,
"license": "PT-30914",
"primary": true,
"specialization": "PHYSICAL_THERAPY",
"state": "OR"
}
],
"primary_taxonomy_code": null,
"clinics": null,
"online_booking": [
{
"clinic_id": "5831",
"enabled": true
}
],
"schedule": null,
"billing_profile_ids": [],
"access_revoked": false,
"direct_access_permitted": true,
"home_health": null
}
Response Fields
| Field |
Type |
Description |
id |
string |
The onboarding record's UUID. |
npi |
string or null |
|
emr_user_id |
integer or null |
The operational provider id once the record is published. null before publish. |
npi_verified |
boolean |
Whether onboarding validated the NPI against NPPES. |
first_name |
string or null |
|
last_name |
string or null |
|
name_prefix |
string or null |
|
credential |
string or null |
|
dob |
string (date) or null |
YYYY-MM-DD. |
gender |
string or null |
Administrative gender. Only M and F are accepted here. |
email |
string or null |
|
phone |
string or null |
|
license_no |
string or null |
|
ptan |
string or null |
Provider Transaction Access Number. |
sole_proprietor |
boolean or null |
|
taxonomies |
array of object |
See Taxonomies. |
primary_taxonomy_code |
string or null |
NUCC provider taxonomy code. |
clinics |
array of string |
|
online_booking |
array of object |
Whether this record is bookable through online booking. See Online Booking. |
schedule |
array |
The provider's onboarding schedule, passed through from onboarding's own shape. |
billing_profile_ids |
array of string |
Billing profiles attached to this provider. |
access_revoked |
boolean |
Whether the provider's onboarding access has been revoked. |
direct_access_permitted |
boolean or null |
Whether patients may book this provider without a referral. Defaults to true. |
home_health |
any or null |
Home-health configuration object — enabled, state_code, address, location, transport_mode, drive/visit limits, schedules[], scheduling_overrides{}. Passed through in onboarding's own shape. |
Taxonomies
| Field |
Type |
Description |
code |
string |
|
desc |
string or null |
|
group_code |
string or null |
|
group_desc |
string or null |
|
license |
string or null |
|
primary |
boolean or null |
Whether this is the provider's primary taxonomy. |
specialization |
string or null |
|
state |
string or null |
|
Online Booking
| Field |
Type |
Description |
clinic_id |
string |
The clinic this record belongs to. |
enabled |
boolean |
|
Error Response
Code: 400 Bad Request
{
"code": "bad_request",
"message": "Validation failed",
"errors": [
{
"field": "patient_id",
"message": "must be a string"
}
]
}
Every error has the same shape — a machine-readable code, a message, and an errors[] array that's empty when there's nothing field-specific to report. The HTTP status is authoritative.
| Status |
code |
Meaning |
400 Bad Request |
bad_request |
The request body or parameters failed validation. errors[] names the offending fields. |
401 Unauthorized |
unauthorized |
The access token is missing, malformed or expired. |
403 Forbidden |
forbidden |
The request references a resource outside the token's organisation or clinic scope. |
404 Not Found |
not_found |
No such resource, or it's outside your scope. |
409 Conflict |
conflict |
The record conflicts with existing state — see the endpoint's notes. |
412 Precondition Failed |
precondition_failed |
If-Match is stale. Re-read the resource and retry. |
428 Precondition Required |
precondition_required |
If-Match is required on this write. |
429 Too Many Requests |
rate_limited |
Rate limit exceeded. Back off and retry. |
500 Internal Server Error |
internal_error |
Unexpected server error. |
502 Bad Gateway |
upstream_error |
Upstream service failed or timed out. |
Notes
- Send
If-Match with the ETag from a prior read. * opts into last-writer-wins. A stale value returns 412; a missing one returns 428.