---
title: "GET /api/Vaccinations/by-appointment/{appointmentId}"
method: GET
path: "/api/Vaccinations/by-appointment/{appointmentId}"
tags: ["Vaccinations"]
---

# GET /api/Vaccinations/by-appointment/{appointmentId}

`GET /api/Vaccinations/by-appointment/{appointmentId}`

## Request

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

## Path parameters

- `appointmentId` string, required

## Response `200`

OK

- VaccinationRecordDto[]
  - `id` string
  - `patientId` string
  - `appointmentId` string, nullable
  - `vaccineType` VaccineTypeSummaryDto: Vaccine type summary for dropdowns and lists
    - `id` string
    - `code` string
    - `name` string
    - `species` string
    - `isCore` boolean
    - `isRabies` boolean
  - `administrationGroupId` string, nullable: Shared by the per-antigen records of one combo administration (ITE-692); null for legacy/manual records. Voiding any member retracts the group.
  - `administeredDate` string, date-time
  - `expirationDate` string, date-time, nullable: Next-due date (when the current dose lapses). Not the vial expiry — see DateTime? VaccinationRecordDto.VaccineExpirationDate.
  - `vaccineExpirationDate` string, date-time, nullable: Physical vaccine vial/lot expiration date (distinct from the next-due DateTime? VaccinationRecordDto.ExpirationDate).
  - `administeredBy` UserSummaryDto
    - `id` string
    - `email` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `displayName` string, nullable
    - `type` string
    - `roleId` string, nullable
    - `roleName` string, nullable
  - `doctorOfRecord` UserSummaryDto
    - `id` string
    - `email` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `displayName` string, nullable
    - `type` string
    - `roleId` string, nullable
    - `roleName` string, nullable
  - `lotNumber` string, nullable
  - `manufacturer` string, nullable
  - `route` string, nullable
  - `site` string, nullable
  - `notes` string, nullable
  - `inventoryTransactionId` string, nullable
  - `scheduleStageSequence` union: Schedule stage this dose was resolved to at administration (1 = first dose / series restart); null for legacy records.
    - integer
    - string, int32
  - `hasUnresolvedLot` boolean: True when the underlying inventory lot is a temporary placeholder awaiting resolution. Certificate generation is blocked while this is true.
  - `isVoided` boolean: True when the dose was retracted (billing line voided, or a mis-entry corrected). The record stays on the chart for audit but is not a valid dose: it drives no reminders, does not count toward vaccination status or schedule stage, and cannot be certified. Render it struck through.
  - `voidedAt` string, date-time, nullable
  - `voidedBy` UserSummaryDto
    - `id` string
    - `email` string
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `displayName` string, nullable
    - `type` string
    - `roleId` string, nullable
    - `roleName` string, nullable
  - `voidReason` string, nullable
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Changes

- **2026-09-11** `503cd0546309`: 3 info
  - added the optional property `items/administrationGroupId` to the response with the `200` status (media type: text/plain)
  - added the optional property `items/administrationGroupId` to the response with the `200` status (media type: application/json)
  - added the optional property `items/administrationGroupId` to the response with the `200` status (media type: text/json)
- **2026-08-07** `a905bde4e796`: 18 info
  - added the optional property `items/doctorOfRecord` to the response with the `200` status (media type: text/plain)
  - added the optional property `items/doctorOfRecord` to the response with the `200` status (media type: application/json)
  - added the optional property `items/doctorOfRecord` to the response with the `200` status (media type: text/json)
  - added the optional property `items/isVoided` to the response with the `200` status (media type: text/plain)
  - …14 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/api/Vaccinations/by-appointment/:appointmentId/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)
