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

# Update practitioner location associations

`PUT /practitioners/{practitionerId}/locations`

Updates a practitioner's location associations following the roster ingestion pattern. Use this same endpoint to create new location associations or to edit existing ones (e.g. update or replace group practice location NPI(s)). Associates a practitioner with one or more locations within a group, creating or updating GroupPractitionerLocation relationships. Each location's locationData may include 'npi' as a single string or array of strings; omitted fields are left unchanged when merging with existing data.

## 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

- 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` NetworkAssociationResult2[] — 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/versions/3d27e9019c7b/schema)
