---
title: "Get DVM production metrics (PAW-108, Phase 1): per-provider revenue/hours/visits and clinic totals."
method: GET
path: "/Metrics/dvm-production"
tags: ["Metrics"]
---

# Get DVM production metrics (PAW-108, Phase 1): per-provider revenue/hours/visits and clinic totals.

`GET /Metrics/dvm-production`

## Request

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

## Query parameters

- `period` string

## Response `200`

OK

- BusinessMetricsResponseDtoOfDvmProductionDto
  - `success` boolean
  - `data` DvmProductionDto
    - `period` string
    - `clinic` DvmProductionClinicDto
      - `revenueBasis` string: What decimal DvmProductionClinicDto.Revenue actually measures, rendered verbatim on the card so the figure cannot be silently misread as collected cash (ITE-772). We ship four different "revenue" numbers across /bi and this is the accrual one.
      - `revenue` union
        - number, double
        - string, double
      - `visits` union
        - integer
        - string, int32
      - `hours` union
        - number, double
        - string, double
      - `revPerHour` union
        - number, double
        - string, double
      - `visitsPerHour` union
        - number, double
        - string, double
      - `avgVisitValue` union
        - number, double
        - string, double
      - `revenueChangePct` union
        - number, double
        - string, double
      - `revPerHourChangePct` union
        - number, double
        - string, double
      - `avgVisitValueChangePct` union
        - number, double
        - string, double
      - `revenueSparkline` union[]
        - union
          - number, double
          - string, double
      - `revPerHourSparkline` union[]
        - union
          - number, double
          - string, double
      - `avgVisitValueSparkline` union[]
        - union
          - number, double
          - string, double
      - `totalCompensation` union
        - number, double
        - string, double
      - `totalMargin` union
        - number, double
        - string, double
      - `profitPerHour` union
        - number, double
        - string, double
      - `avgCompPercent` union
        - number, double
        - string, double
      - `totalCompensationChangePct` union
        - number, double
        - string, double
      - `totalMarginChangePct` union
        - number, double
        - string, double
      - `marginSparkline` union[]
        - union
          - number, double
          - string, double
      - `compPercentSparkline` union[]
        - union
          - number, double
          - string, double
      - `discountLeakage` union
        - number, double
        - string, double
      - `discountLeakPct` union
        - number, double
        - string, double
      - `serviceMix` ServiceMixCategoryDto[]
        - `category` string
        - `percent` union
          - number, double
          - string, double
      - `categoryBreakdown` ClinicCategoryBreakdownDto[]
        - `category` string
        - `revenue` union
          - number, double
          - string, double
        - `leakage` union
          - number, double
          - string, double
      - `revenueForecast` ForecastPointDto[]
        - `weekStart` string, date
        - `projectedRevenue` union
          - number, double
          - string, double
        - `projectedRevPerHour` union
          - number, double
          - string, double
        - `bookedHours` union
          - number, double
          - string, double
        - `isFallback` boolean: True when the week had no forward bookings and fell back to trailing-average hours.
    - `providers` DvmProductionProviderDto[]
      - `providerId` string
      - `name` string
      - `revenue` union
        - number, double
        - string, double
      - `hours` union
        - number, double
        - string, double
      - `visits` union
        - integer
        - string, int32
      - `revPerHour` union
        - number, double
        - string, double
      - `visitsPerHour` union
        - number, double
        - string, double
      - `avgVisitValue` union
        - number, double
        - string, double
      - `diagPenetrationPct` union
        - number, double
        - string, double
      - `status` string
      - `compensation` DvmCompensationDto
        - `model` string
        - `annualSalary` union
          - number, double
          - string, double
        - `hourlyRate` union
          - number, double
          - string, double
        - `productionPercentage` union
          - number, double
          - string, double
        - `salaryCost` union
          - number, double
          - string, double
        - `productionPay` union
          - number, double
          - string, double
        - `totalCompensation` union
          - number, double
          - string, double
        - `compPercent` union
          - number, double
          - string, double
        - `margin` union
          - number, double
          - string, double
        - `profitPerHour` union
          - number, double
          - string, double
        - `compensationThresholdOverridePercent` union: Per-vet override of the clinic-level comp-% warning threshold. Null = use clinic default.
          - number, double
          - string, double
        - `excludedBuckets` string[]: Service-mix buckets excluded from this provider's production-pay revenue base (PAW-578).
        - `productionExcludedRevenue` union: Revenue stripped out of the production-pay calculation by List&lt;string&gt; DvmCompensationDto.ExcludedBuckets.
          - number, double
          - string, double
      - `discountLeakage` union
        - number, double
        - string, double
      - `discountLeakPct` union
        - number, double
        - string, double
      - `serviceMix` ServiceMixCategoryDto[]
        - `category` string
        - `percent` union
          - number, double
          - string, double
      - `isUnattributed` boolean: True for the synthetic "Unattributed" row — invoice lines with no ProviderId. It has revenue but no hours, visits or compensation, so rate-style columns are meaningless on it and it must not be ranked against real providers (ITE-772).
    - `signals` DvmSignalDto[]
      - `id` string
      - `type` string: "leak" | "highComp" | "lowRph" | "highYield".
      - `severity` string: "high" | "medium" | "low" — drives ordering and card colour.
      - `title` string
      - `message` string: Plain-text, fully formatted server-side.
      - `providerId` string, nullable
      - `providerName` string, nullable
      - `action` DvmSignalActionDto: Primary call-to-action for a signal. The backend emits an action type + payload; the frontend owns the route it maps to.
        - `label` string
        - `actionType` string: "coachProvider" | "tightenDiscounts".
        - `providerId` string, nullable
  - `error` string, nullable
  - `message` string, nullable

## Other responses

- `500`: Internal Server Error

## Changes

- **2026-09-17** `d4ae30be0619`: 6 info
  - added the optional property `data/oneOf[#/components/schemas/DvmProductionDto]/clinic/revenueBasis` to the response with the `200` status (media type: text/plain)
  - added the optional property `data/oneOf[#/components/schemas/DvmProductionDto]/clinic/revenueBasis` to the response with the `200` status (media type: application/json)
  - added the optional property `data/oneOf[#/components/schemas/DvmProductionDto]/clinic/revenueBasis` to the response with the `200` status (media type: text/json)
  - added the optional property `data/oneOf[#/components/schemas/DvmProductionDto]/providers/items/isUnattributed` to the response with the `200` status (media type: text/plain)
  - …2 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Metrics/dvm-production/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)
