---
title: "Update practitioner data at a location-network assignment"
method: PUT
path: "/practitioners/{practitionerId}/locations/{locationId}/networks/{networkId}"
tags: ["Practitioner"]
---

# Update practitioner data at a location-network assignment

`PUT /practitioners/{practitionerId}/locations/{locationId}/networks/{networkId}`

Updates the practitioner's data for a specific location-network assignment, including effective dates, panel status, whether the practitioner is accepting new patients, roles, specialties, languages, and office hours. Use this when location-network specific attributes for a practitioner need to be changed; if `applyToAllNetworks` is true in the request body, the update is applied to all networks the practitioner is linked to at this location, with the `{networkId}` path parameter used for routing only rather than restricting the scope. `{networkId}` is used once for an existence check regardless of the flag; the actual network set to update is otherwise determined by a query scoped only to the location, except as a fallback (when that query returns nothing) where it falls back to just `{networkId}`. `{practitionerId}` is the `certifyPractitionerId`, and the practitioner must already be associated with the specified location and network.

## Path parameters

- `locationId` string, required
- `networkId` string, required
- `practitionerId` string, required

## Headers

- `tenant-id` string

## Request body

- UpdatePractitionerLocationNetworkRequest — Request to update practitioner details at a location for a network
  - `groupId` string, required — Certify (core) group ID of the group to which the practitioner belongs. Same as certifyGroupId; not the internal tenant group id.
  - `data` JsonNode
    - `empty` boolean
    - `valueNode` boolean
    - `containerNode` boolean
    - `missingNode` boolean
    - `array` boolean
    - `object` boolean
    - `nodeType` 'ARRAY' | 'BINARY' | 'BOOLEAN' | 'MISSING' | 'NULL' | 'NUMBER' | 'OBJECT' | 'POJO' | 'STRING'
    - `pojo` boolean
    - `number` boolean
    - `integralNumber` boolean
    - `floatingPointNumber` boolean
    - `short` boolean
    - `int` boolean
    - `long` boolean
    - `float` boolean
    - `double` boolean
    - `bigDecimal` boolean
    - `bigInteger` boolean
    - `textual` boolean
    - `boolean` boolean
    - `null` boolean
    - `binary` boolean
  - `applyToAllNetworks` boolean — If true, applies the update to all networks the practitioner is linked to at this location. If false, only updates the specified network.

## Response `200`

Successfully updated practitioner location-network details. When `applyToAllNetworks` is false, the response is a flat object with a single `networkId` field; when true, the response instead has a `networkUpdates` array and no top-level `networkId` — these are genuinely two different response shapes, not just different field values.

- union
  - PractitionerLocationNetworkUpdateResponse — Response containing updated practitioner-location-network association
    - `tenantGroupPractitionerId` string — ID of the tenant group practitioner
    - `tenantGroupLocationId` string — ID of the tenant group location
    - `networkId` string — ID of the network
    - `groupPractitionerLocationId` string — ID of the group practitioner location association
    - `tenantGroupLocationPractitionerNetworkId` string — ID of the tenant group location practitioner network association
    - `status` 'created' | 'updated' | 'failed' — Status of an update operation
  - PractitionerLocationNetworksUpdateResponse — Response containing updated practitioner-location-network associations for multiple networks
    - `tenantGroupPractitionerId` string — ID of the tenant group practitioner
    - `tenantGroupLocationId` string — ID of the tenant group location
    - `groupPractitionerLocationId` string — ID of the group practitioner location association
    - `networkUpdates` NetworkUpdateResult[] — List of network update results
      - `networkId` string — ID of the network
      - `tenantGroupLocationPractitionerNetworkId` string — ID of the tenant group location practitioner network association
      - `status` 'created' | 'updated' | 'failed' — Status of an update operation

## Other responses

- `400` — Bad request - Invalid input or validation error
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — Practitioner, location, or network not found
- `500` — Internal server error

## Changes

- **2026-08-19** `563848e0ecc0` — 3 info
  - added the optional property `errors/items/rejectedValue` to the response with the `400` status
  - added the optional property `errors/items/rejectedValue` to the response with the `404` status
  - added the optional property `errors/items/rejectedValue` to the response with the `500` status

[Change history](https://skmtc.dev/certifyos/apis/certify-api-layer/changes/practitioners/:practitionerId/locations/:locationId/networks/:networkId/put.md)

---

[API](https://skmtc.dev/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.dev/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/revisions/563848e0ecc0/schema)
