---
title: "Update practitioner location associations within a group"
method: PUT
path: "/practitioners/{practitionerId}/locations"
tags: ["Practitioner"]
---

# Update practitioner location associations within a group

`PUT /practitioners/{practitionerId}/locations`

Creates or updates the practitioner's location associations within a group, following upsert semantics — existing associations are updated in place. Each location entry may include `locationData` with an `npi` field as a single string or array of strings; omitted fields are preserved when merging with existing data. Use this when adding the practitioner to locations or updating location-specific data such as group-practice location NPIs; the request body must include a `groupId` to scope the associations. `{practitionerId}` is the `certifyPractitionerId`, and the group identified by `groupId` in the request body must already be associated with the practitioner. Only the locations present in the request are upserted — locations already associated with the practitioner but omitted from the request are left unchanged, not removed.

## Path parameters

- `practitionerId` string, required

## Headers

- `tenant-id` string

## Request body

- UpdatePractitionerLocationsRequest — Request to create or update a practitioner's location associations. Use the same endpoint to edit existing location data (e.g. update NPI(s)). Each location's locationData may include 'npi' (single string or array of strings) for group practice location NPI(s).
  - `tenantGroupId` string, required — tenantGroupId (ID of the group to which the practitioner belongs)
  - `locations` UpdatePractitionerLocationRequest[], required — List of locations to update with this practitioner. Each location's locationData may include 'npi' (single string or array of strings) for group practice location NPI(s). Persisted data is sanitized to match the TenantGroupPractitionerLocation schema.
    - `tenantGroupLocationId` string, required — ID of the tenant group location
    - `locationData` TenantGroupPractitionerLocationSchema — Represents the association of a practitioner details at a specific location within a tenant group, including role, availability, and effective dates.
      - `suppressSiteFromDirectory` boolean — Indicates if the site should be suppressed from the directory.
      - `active` boolean — Indicates if the record is currently active.
      - `terminationDate` string, date, nullable — The date when the association was terminated.
      - `billingEffectiveDate` string, date, nullable — The effective date for billing purposes.
      - `billingTerminationDate` string, date, nullable — The termination date for billing purposes.
      - `effectiveStartDate` string, date, nullable — The start date when this record becomes effective.
      - `effectiveEndDate` string, date, nullable — The end date when this record is no longer effective.
      - `isPrimary` boolean — Indicates if this is the primary location for the practitioner.
      - `practitionerRolesMap` object — Map of practitioner role key to effective/termination dates.
      - `practitionerRoles` string[] — The roles of the practitioner at this location.
      - `status` 'Active' | 'Inactive' — The possible statuses for a various entities.
      - `roleType` 'PCP' | 'Spec' | 'Both' — Defines the possible roles for a practitioner at a location.
      - `panelStatus` 'Open' | 'Closed' | 'Closed Full' — Specifies the panel status (patient acceptance status) of the practitioner at the location.
      - `acceptingNewPatients` boolean — Indicates if the practitioner is accepting new patients at this location.
      - `medicare` string, nullable — Medicare ID for the practitioner at this location.
      - `npi` string, nullable — National Provider Identifier for the group practice location.
      - `effectiveDate` string, date, nullable — The effective date for the practitioner location.
      - `changeEffectiveDate` string, date, nullable — The change effective date for the practitioner location.
      - `locationType` 'PRI' | 'PRA' | 'null', nullable — Type of group location (PRI = Primary, PRA = Practice).
      - `genderAccepted` 'Both' | 'Male' | 'Female' | 'Unknown' | 'null', nullable — Gender accepted at the practitioner location.
      - `acceptingMinimumPatientAge` string, nullable — Minimum patient age accepted at this location.
      - `acceptingMaximumPatientAge` string, nullable — Maximum patient age accepted at this location.
      - `minimumEnrolleesCapacity` string, nullable — Minimum enrollees capacity for this location.
      - `maximumEnrolleesCapacity` string, nullable — Maximum enrollees capacity for this location.
      - `practiceEmail` string, email, nullable — Practice email for the practitioner location.
      - `handicapAccessible` boolean, nullable — Indicates if the location is handicap accessible.
      - `includeLocationInDirectory` boolean, nullable — Indicates if the practitioner location should be included in the directory.
      - `roleAutoAssignment` string, nullable — Auto assignment of practitioner role.
      - `locationTerminationReason` string, nullable — Reason provided during termination of a practitioner from location.
      - `practitionerFax` string, nullable — Practitioner-specific fax number for this location.
      - `contacts` object[] — Contact information for the group practice location.
        - `phone` string, nullable — Phone number for the location.
        - `fax` string, nullable — Fax number for the location.
        - `appointment` string, nullable — Appointment phone number for the location.
      - `officeHours` object[] — Office hours for each day of the week.
        - `dayOfWeek` 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' | 'Sun', required — A reusable enum schema defining the standard three-letter abbreviations for days of the week.
        - `openTime` string, nullable — Opening time in HH:MM format.
        - `closeTime` string, nullable — Closing time in HH:MM format.
        - `isClosed` boolean, nullable — Indicates if the location is closed on this day.
      - `practiceLimitation` object[] — Practice limitations for the practitioner location.
        - `limitation` string, nullable — Practice limitation description.
        - `isPrimary` boolean, required — Indicates if this is the primary practice limitation.
    - `networks` LocationNetwork3[] — List of networks to associate with this practitioner at this specific location
      - `networkId` string, required — Network ID
      - `data` TenantGroupLocationPractitionerNetworkSchema — Represents the participation of a tenant group location practitioner in a specific plan.
        - `networkPractitionerEffectiveDate` string, date
        - `networkPractitionerTerminationDate` string, date
        - `networkPractitionerTerminationInformedDate` string, date
        - `terminationReason` string
        - `networkPractitionerStatus` string
        - `participationType` string
        - `networkPractitionerCredentialingStatus` string
        - `networkPractitionerCredentialedDate` string, date
        - `networkPractitionerNextCredentialingDate` string, date
        - `panelStatus` string
        - `acceptingNewPatients` boolean
        - `officeHours` OfficeHour[] — Operating hours for each day of the week
          - `day` 'Mon' | 'Tue' | 'Wed' | 'Thu' | 'Fri' | 'Sat' | 'Sun' — A reusable enum schema defining the standard three-letter abbreviations for days of the week.
          - `openTime` string, time — Time when the location opens on this day
          - `closeTime` string, time — Time when the location closes on this day
          - `closed` boolean — Indicates if the location is closed on this day
        - `appointmentPhone` string
        - `languageSpoken` string[]
        - `practitionerRole` string
        - `suppressSiteFromDirectory` boolean
        - `hasDelegatedAuthority` boolean
        - `sourceSystem` string
        - `changeReason` string

## Response `200`

Successfully updated practitioner location associations. The response is a `tenantGroupPractitionerId` plus a `locationAssociations` array, each entry containing `tenantGroupLocationId`, `groupPractitionerLocationId`, `status`, and `networks`.

- PractitionerLocationUpdateResponse — Response containing updated practitioner-location associations
  - `tenantGroupPractitionerId` string — ID of the tenant group practitioner
  - `locationAssociations` LocationAssociationResult1[] — List of updated location associations
    - `tenantGroupLocationId` string — ID of the tenant group location
    - `groupPractitionerLocationId` string — ID of the group practitioner location association
    - `status` string — Indicates if this was a new association or an update
    - `networks` NetworkAssociationResult3[] — List of network associations for this location
      - `networkId` string — ID of the network
      - `tenantGroupLocationPractitionerNetworkId` string — ID of the tenant group location practitioner network association

## Other responses

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

---

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