---
title: "Update details for multiple group locations"
method: PUT
path: "/groups/{groupId}/locations"
tags: ["Group"]
---

# Update details for multiple group locations

`PUT /groups/{groupId}/locations`

Updates detail fields for one or more locations within a group in a single call, designed for bulk ingestion workflows where location data arrives as a batch from an external roster or source system. Each entry targets a specific location; this is a partial merge per location entry, not a full replace — omitted fields are preserved from the existing record rather than cleared. Use this endpoint when updating multiple locations at once; to add a new location to a group use POST /groups/{groupId}/locations.

## Path parameters

- `groupId` string, required

## Headers

- `tenant-id` string

## Request body

- UpdateGroupLocationsRequest
  - `groupId` string, required
  - `locations` UpdateGroupLocationRequest[], required
    - `tenantGroupLocationId` string, required — ID of the tenant group location to update
    - `locationData` object — Core location data (name, type, etc.)
    - `groupLocationData` object — Group location specific data (acceptsNewPatients, etc.)
    - `tenantGroupLocationData` object — Tenant group location specific data (effectiveDate, etc.)
    - `addresses` LocationAddress1[] — List of addresses for the location (physical, mailing, billing, etc.)
      - `addressType` string, required — Address type (physical, mailing, billing, remittance)
      - `addressLine1` string, required — Address line 1
      - `addressLine2` string — Address line 2
      - `city` string, required — City
      - `state` string, required — State
      - `zipCode` string, required — ZIP code
      - `county` string — County
      - `country` string, required — Country
      - `isPrimary` boolean — Whether this is the primary address
    - `locationSpecialities` LocationSpecialty1[] — List of location specialties
      - `specialtyId` string, required — ID of the specialty
      - `effectiveDate` string — Effective date for the specialty
      - `isPrimary` boolean — Whether this is the primary specialty
    - `contacts` LocationContact1[] — List of contacts
      - `type` string, required — Type of contact
      - `name` string, required — Name of the contact
      - `mainPhoneNumber` string — Main phone number
      - `afterHoursPhoneNumber` string — After hours phone number
      - `email` string — Email address
      - `fax` string — Fax number
      - `tty` string — TTY number
    - `officeHours` OfficeHours1
      - `hours` DayHours1[] — List of office hours by day
        - `day` string, required — Day of the week
        - `from` string, required — Opening time (HH:mm)
        - `to` string, required — Closing time (HH:mm)
    - `services` LocationService1[] — List of services offered at this location
      - `serviceName` string, required — Service name
      - `serviceType` string, required — Service type
      - `description` string — Service description
      - `available` boolean — Whether service is currently available
    - `practiceLimitations` PracticeLimitation1[] — List of practice limitations
      - `limitationType` string, required — Type of limitation
      - `description` string, required — Description of the limitation
      - `appliesToPatients` string — Applies to specific patient groups
    - `accessibility` AccessibilityItem[] — Accessibility information as question/answer pairs
      - `question` string, required — Accessibility question
      - `answer` string, required — Answer to the accessibility question
    - `tags` string[] — List of tags for categorization
    - `hospitalAdmittingPrivileges` object — Hospital admitting privileges information
    - `networks` LocationNetwork[] — List of networks for this location
      - `networkId` string, required — ID of the network
      - `data` object — Additional network data (effectiveDate, terminationDate, etc.)
    - `includePractitioners` boolean — If true, enrolls all location practitioners to the networks with their respective specialties

## Response `200`

Successfully updated group location details

- GroupLocationUpdateResponse
  - `tenantGroupId` string
  - `locationAssociations` LocationAssociationResult2[]
    - `tenantGroupLocationId` string
    - `locationId` string
    - `status` string

## Other responses

- `400` — Bad request - Invalid input or validation error
- `401` — Unauthorized - Authentication required
- `403` — Forbidden - Insufficient permissions
- `404` — Group 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)
