---
title: "Get clinic settings from DynamoDB profile data"
method: GET
path: "/clinic-settings"
tags: ["ClinicSettings"]
---

# Get clinic settings from DynamoDB profile data

`GET /clinic-settings`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/clinic-settings`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/clinic-settings/get.ts> (a function with typed inputs; its response is checked against the schema)

## Response `200`

OK

- ClinicSettingsDto
  - `companyId` string
  - `companyName` string
  - `clinicAddress` string, nullable
  - `clinicPhone` string, nullable
  - `clinicEmail` string, nullable
  - `clinicFax` string, nullable: Clinic fax number. Printed on written prescriptions (ITE-1233); blank is fine.
  - `clinicAboutNotes` string, nullable
  - `defaultAppointmentDurationMinutes` union
    - integer
    - string, int32
  - `schedulingPolicy` string
  - `timezone` string: The clinic's IANA zone. Never null — server-side formatters (email, SMS, voice, PDFs, labels) have no sane way to degrade and must not fall through to UTC, so an unconfigured tenant reads back as Eastern. Check bool ClinicSettingsDto.TimezoneConfigured before trusting it as the clinic's actual location.
  - `timezoneConfigured` boolean: False when the tenant has no stored timezone and string ClinicSettingsDto.Timezone is therefore the Eastern placeholder rather than a real setting. The web app uses this to prefer the workstation's own zone: rendering a Pacific clinic's day in Eastern is what produced ITE-337.
  - `defaultWeeklyHours` LocationHoursEntryDto[], nullable
    - `dayOfWeek` union
      - integer
      - string, int32
    - `openTime` string
    - `closeTime` string
    - `isOpen` boolean
  - `travel` TravelSettingsDto: Travel/mobile appointment settings DTO
    - `travelAppointmentsEnabled` boolean
    - `personalVehicleEnabled` boolean
    - `personalVehicleLocationId` string, nullable
    - `defaultStartingAddress` TravelAddressConfigDto: Address configuration for travel appointments
      - `address` string, nullable
      - `placeId` string, nullable
      - `latitude` union
        - number, double
        - string, double
      - `longitude` union
        - number, double
        - string, double
    - `feeConfig` TravelFeeConfigDto: Fee configuration for travel appointments
      - `calculationMethod` string
      - `baseFee` union
        - number, double
        - string, double
      - `perMileRate` union
        - number, double
        - string, double
      - `flatRateAmount` union
        - number, double
        - string, double
      - `tiers` TravelFeeTierDto[]
        - `maxDistanceMiles` union
          - integer
          - string, int32
        - `feeAmount` union
          - number, double
          - string, double
    - `defaultRoundTrip` boolean
    - `maxDistanceMiles` union
      - integer
      - string, int32
  - `schedulingPreferences` SchedulingPreferencesDto: Scheduling preferences — room management, default views, etc.
    - `roomManagementEnabled` boolean
    - `unassignedLocationId` string, nullable
    - `showRescheduledMarkers` boolean, nullable: Whether the room view draws the dashed "Rescheduled → new time" marker in the slot an appointment was moved out of (ITE-900). Display-only; turning it off hides the markers for everyone at the clinic and stores nothing else. Nullable on purpose. Null means "never set", which is ON — every clinic that saved these preferences before this field existed reads null. On a PATCH, null means "leave as stored": this whole object is written as one blob, so a client that only knows about room management would otherwise switch the markers back on every time it saved.
  - `metrics` MetricsSettingsDto: Tunable thresholds for the BI / DVM Production reports. Currently exposes the "high compensation" warning trigger; additional thresholds (low rev/hr, leakage) will hang here as they get pulled out of hardcoded service code.
    - `compensationThresholdPercent` union: Comp-percent threshold above which a provider's status flips to "warning". Default 35. Per-vet override available on `VeterinarianCompensation`.
      - number, double
      - string, double
  - `billingStatus` string, nullable: Billing/contract state: "Trial", "Active", "Suspended", or empty for legacy records (treated as "Active"). Drives GDPR consent banner visibility post-login.
  - `widgetAllowedDomains` string[]: Origins allowed to iframe this clinic's booking widget (`/embed/{clinicId}`), e.g. `https://www.example.com` or `https://*.example.com`. The widget's middleware turns these into its CSP `frame-ancestors`; the ClinicOS domains are always allowed on top. Stored as `widgetAllowedDomains` on the company record.

## Other responses

- `404`: Not Found

## Changes

- **2026-10-11** `f7ab358172d0`: 6 info
  - added the optional property `clinicFax` to the response with the `200` status (media type: text/plain)
  - added the optional property `clinicFax` to the response with the `200` status (media type: application/json)
  - added the optional property `clinicFax` to the response with the `200` status (media type: text/json)
  - added the optional property `schedulingPreferences/oneOf[#/components/schemas/SchedulingPreferencesDto]/showRescheduledMarkers` to the response with the `200` status (media type: text/plain)
  - …2 more
- **2026-10-07** `021fabd866ff`: 3 info
  - added the optional property `widgetAllowedDomains` to the response with the `200` status (media type: text/plain)
  - added the optional property `widgetAllowedDomains` to the response with the `200` status (media type: application/json)
  - added the optional property `widgetAllowedDomains` to the response with the `200` status (media type: text/json)
- **2026-08-07** `a905bde4e796`: 3 info
  - added the optional property `timezoneConfigured` to the response with the `200` status (media type: text/plain)
  - added the optional property `timezoneConfigured` to the response with the `200` status (media type: application/json)
  - added the optional property `timezoneConfigured` to the response with the `200` status (media type: text/json)

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/clinic-settings/get.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
