Gingr Invoices & Payments API

List and retrieve invoices and charges, refund invoice line items, charge a card on file, pay or refund an invoice or a deposit. Complements the point-of-sale and billing flows inside the Gingr application.

OpenAPI Specification

gingr-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Gingr Partner API
  description: >-
    Gingr's Partner API for pet-care business management software (dog daycare,
    boarding, training, and grooming). The API is JSON:API-flavored - request
    and response bodies wrap resource attributes under a `data` object - and
    every request must send a `subdomain` header identifying the facility's
    Gingr account plus an `Accept: application/vnd.api+json` header. Endpoints
    below are a curated subset (owners/parents, pets, bookings/reservations,
    services and configuration, invoices/payments, immunizations, report
    cards, and waitlist) drawn from Gingr's official public OpenAPI document at
    https://docs.gingr.io/documentation/swagger.json (Gingr API v1.8.0), which
    documents 158 operations in total. This document is a representative
    subset, not a full mirror; consult the live swagger.json for every
    operation, filter, and field.
  version: '1.8.0'
  contact:
    name: Gingr
    url: https://www.gingrapp.com
servers:
  - url: https://api.gingr.io
    description: Gingr Partner API (production)
security:
  - ApiKeyAuth: []
tags:
  - name: Owners
    description: Owner/client ("parent") records.
  - name: Pets
    description: Pet profiles belonging to an owner.
  - name: Reservations
    description: Bookings/reservations for daycare, boarding, training, and grooming.
  - name: Services
    description: Service catalog and facility configuration.
  - name: Invoices
    description: Invoices and charges.
  - name: Payments
    description: Charging and refunding cards on file, invoices, and deposits.
  - name: Vaccinations
    description: Pet immunization/vaccination records.
  - name: Report Cards
    description: Daily activity report cards generated for a pet's stay.
  - name: Waitlist
    description: Managing bookings that are on the facility waitlist.
paths:
  /v1/parents:
    get:
      operationId: v1ParentsList
      tags:
        - Owners
      summary: Parents - List
      description: Lists owner ("parent") records, filterable by name, email, phone, home location, or created date range.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[firstName]
          in: query
          required: false
          schema: { type: string, minLength: 3, maxLength: 255 }
        - name: filter[lastName]
          in: query
          required: false
          schema: { type: string, minLength: 3, maxLength: 255 }
        - name: filter[contact][email]
          in: query
          required: false
          schema: { type: string, format: email }
        - name: filter[homeLocationIds]
          in: query
          required: false
          schema: { type: array, items: { type: integer } }
        - name: page[size]
          in: query
          required: false
          schema: { type: integer, enum: [10, 25, 50, 100] }
        - name: page[number]
          in: query
          required: false
          schema: { type: integer, minimum: 1 }
      responses:
        '200':
          description: A page of parent resources.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: v1ParentsCreate
      tags:
        - Owners
      summary: Parents - Create
      description: Creates a new owner ("parent") record with required contact and address information.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/ParentCreateRequest'
      responses:
        '200':
          description: The created parent resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /v1/parents/{parentId}:
    parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - name: parentId
        in: path
        required: true
        schema: { type: integer }
    get:
      operationId: v1ParentsDetails
      tags:
        - Owners
      summary: Parents - Details
      description: Retrieves a single owner ("parent") record by ID.
      responses:
        '200':
          description: The requested parent resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: v1ParentsUpdate
      tags:
        - Owners
      summary: Parents - Update
      description: Updates an existing owner ("parent") record.
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/ParentCreateRequest'
      responses:
        '200':
          description: The updated parent resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ParentResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: v1ParentsDelete
      tags:
        - Owners
      summary: Parents - Delete
      description: Deletes an owner ("parent") record.
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/parents/validate-email:
    get:
      operationId: v1ParentsValidateEmail
      tags:
        - Owners
      summary: Validate if an email address is already registered
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: email
          in: query
          required: true
          schema: { type: string, format: email }
      responses:
        '200':
          description: Whether the email address already belongs to an owner record.
  /v1/parents/validate-phone:
    get:
      operationId: v1ParentsValidatePhone
      tags:
        - Owners
      summary: Validate if a phone number is already registered
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: phone
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Whether the phone number already belongs to an owner record.
  /v1/parents/merge:
    post:
      operationId: v1ParentsMerge
      tags:
        - Owners
      summary: Merge two parent accounts
      description: Merges a duplicate owner ("parent") record into a surviving record.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        sourceParentId: { type: integer }
                        targetParentId: { type: integer }
      responses:
        '200':
          description: Merge confirmation.
  /v1/pets:
    get:
      operationId: v1PetsList
      tags:
        - Pets
      summary: Pets - List
      description: Lists pet profiles, filterable by name, owner, species, or breed.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[parentId]
          in: query
          required: false
          schema: { type: integer }
        - name: page[size]
          in: query
          required: false
          schema: { type: integer, enum: [10, 25, 50, 100] }
        - name: page[number]
          in: query
          required: false
          schema: { type: integer, minimum: 1 }
      responses:
        '200':
          description: A page of pet resources.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/PetListResponse'
    post:
      operationId: v1PetsCreate
      tags:
        - Pets
      summary: Pets - Create
      description: Creates a new pet profile belonging to an owner.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/PetCreateRequest'
      responses:
        '200':
          description: The created pet resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/PetResponse'
        '422':
          $ref: '#/components/responses/ValidationError'
  /v1/pets/{petId}:
    parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - name: petId
        in: path
        required: true
        schema: { type: integer }
    get:
      operationId: v1PetsDetails
      tags:
        - Pets
      summary: Pets - Details
      description: Retrieves a single pet profile by ID, including breed, feeding, and medication data.
      responses:
        '200':
          description: The requested pet resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/PetResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: v1PetsUpdate
      tags:
        - Pets
      summary: Pets - Update
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/PetCreateRequest'
      responses:
        '200':
          description: The updated pet resource.
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: v1PetsDelete
      tags:
        - Pets
      summary: Delete Pet
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/pets/merge:
    post:
      operationId: v1PetsMerge
      tags:
        - Pets
      summary: Pets - Merge
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
      responses:
        '200':
          description: Merge confirmation.
  /v1/bookings:
    get:
      operationId: v1BookingsList
      tags:
        - Reservations
      summary: Bookings - List
      description: >-
        Lists bookings/reservations, filterable by created date range, booking
        start/end date range, status (completed, cancelled, checked_in,
        confirmed, pending_acceptance, wait_listed, unconfirmed), owner, pet,
        location, or booking category.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[status][type]
          in: query
          required: false
          schema:
            type: string
            enum: [completed, cancelled, checked_in, confirmed, pending_acceptance, wait_listed, unconfirmed]
        - name: filter[status][from]
          in: query
          required: false
          schema: { type: string, format: date }
        - name: filter[status][to]
          in: query
          required: false
          schema: { type: string, format: date }
        - name: filter[parentId]
          in: query
          required: false
          schema: { type: integer }
        - name: filter[petIds]
          in: query
          required: false
          schema: { type: array, items: { type: integer } }
        - name: filter[locationIds]
          in: query
          required: false
          schema: { type: array, items: { type: integer } }
        - name: page[size]
          in: query
          required: false
          schema: { type: integer, enum: [10, 25, 50, 100] }
        - name: page[number]
          in: query
          required: false
          schema: { type: integer, minimum: 1 }
      responses:
        '200':
          description: A page of booking resources.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/BookingListResponse'
    post:
      operationId: v1BookingsCreate
      tags:
        - Reservations
      summary: Bookings - Create
      description: Creates a new booking/reservation for a pet.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/BookingCreateRequest'
      responses:
        '200':
          description: The created booking resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/BookingResponse'
        '422':
          $ref: '#/components/responses/ValidationError'
  /v1/bookings/{bookingId}:
    parameters:
      - $ref: '#/components/parameters/Subdomain'
      - $ref: '#/components/parameters/Accept'
      - name: bookingId
        in: path
        required: true
        schema: { type: integer }
    get:
      operationId: v1BookingsDetails
      tags:
        - Reservations
      summary: Bookings - Details
      responses:
        '200':
          description: The requested booking resource.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/BookingResponse'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: v1BookingsUpdate
      tags:
        - Reservations
      summary: Bookings - Update
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              $ref: '#/components/schemas/BookingCreateRequest'
      responses:
        '200':
          description: The updated booking resource.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/bookings/{bookingId}/cancel:
    put:
      operationId: v1BookingsCancel
      tags:
        - Reservations
      summary: Bookings - Cancel
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        cancellationReasonId: { type: integer }
      responses:
        '200':
          description: The cancelled booking resource.
  /v1/bookings/{bookingId}/check-in:
    post:
      operationId: v1BookingCheckIn
      tags:
        - Reservations
      summary: Check In Booking
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The checked-in booking resource.
  /v1/bookings/{bookingId}/checkout:
    post:
      operationId: v1BookingsCheckout
      tags:
        - Reservations
      summary: Bookings - Checkout
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The checked-out booking resource, typically generating an invoice.
  /v1/bookings/{bookingId}/estimate:
    get:
      operationId: v1BookingEstimate
      tags:
        - Reservations
      summary: Booking - Estimate
      description: Returns an estimated price for a booking based on its configured services and dates.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Estimated pricing breakdown for the booking.
  /v1/bookings/{bookingId}/services:
    put:
      operationId: v1BookingAddService
      tags:
        - Reservations
      summary: Add Service to Booking
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        serviceTypeId: { type: integer }
      responses:
        '200':
          description: The updated booking resource with the added service.
  /v1/bookings/available-lodgings:
    get:
      operationId: v1BookingsAvailableLodgings
      tags:
        - Reservations
      summary: Bookings Available Lodgings
      description: Returns the lodgings (kennels/runs/suites) available for a given date range and booking type.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[bookingStart]
          in: query
          required: true
          schema: { type: string, format: date }
        - name: filter[bookingEnd]
          in: query
          required: true
          schema: { type: string, format: date }
      responses:
        '200':
          description: A list of available lodgings.
  /v1/bookings/{bookingId}/wait-list:
    post:
      operationId: v1BookingMoveToWaitList
      tags:
        - Waitlist
      summary: Move Booking to Wait List
      description: Moves a booking to wait_listed status, typically because the requested location or lodging is at capacity.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The booking resource with status set to wait_listed and a waitListDate recorded.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/BookingResponse'
  /v1/bookings/{bookingId}/accept:
    post:
      operationId: v1BookingsAccept
      tags:
        - Waitlist
      summary: Bookings - Accept
      description: Accepts a wait-listed or pending booking off the waitlist/queue and confirms it, recording a waitListAcceptedDate when applicable.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: bookingId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The accepted/confirmed booking resource.
  /v1/config/service-types:
    get:
      operationId: v1ConfigServiceTypes
      tags:
        - Services
      summary: Service Types - List
      description: Lists the facility's configured service types (e.g. daycare, boarding, grooming, training add-ons).
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: page[size]
          in: query
          required: false
          schema: { type: integer, enum: [10, 25, 50, 100] }
        - name: page[number]
          in: query
          required: false
          schema: { type: integer, minimum: 1 }
      responses:
        '200':
          description: A page of service type resources.
  /v1/config/service-types/{serviceTypeId}:
    get:
      operationId: v1ConfigServiceTypeDetails
      tags:
        - Services
      summary: Retrieve detailed information for a specific service type
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: serviceTypeId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The requested service type resource.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/config/booking-types:
    get:
      operationId: v1ConfigBookingTypes
      tags:
        - Services
      summary: Retrieve a paginated list of booking types
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[bookingCategoryId]
          in: query
          required: false
          schema: { type: integer }
        - name: filter[locationIds]
          in: query
          required: false
          schema: { type: array, items: { type: integer } }
        - name: filter[appointmentBased]
          in: query
          required: false
          schema: { type: boolean }
        - name: page[size]
          in: query
          required: false
          schema: { type: integer, enum: [10, 25, 50, 100] }
        - name: page[number]
          in: query
          required: false
          schema: { type: integer, minimum: 1 }
      responses:
        '200':
          description: A page of booking type resources.
  /v1/config/lodgings:
    get:
      operationId: v1ConfigLodgings
      tags:
        - Services
      summary: Lodgings - List
      description: Lists the facility's configured lodgings (kennels/runs/suites).
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: A list of lodging resources.
  /v1/config/locations:
    get:
      operationId: v1ConfigLocations
      tags:
        - Services
      summary: Location - List
      description: Lists the facility's locations, for multi-location Gingr accounts.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[active]
          in: query
          required: false
          schema: { type: boolean }
        - name: filter[locationName]
          in: query
          required: false
          schema: { type: string }
      responses:
        '200':
          description: A list of location resources.
  /v1/config/locations/{locationId}:
    get:
      operationId: v1ConfigLocationDetails
      tags:
        - Services
      summary: Location - Detail
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: locationId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The requested location resource.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/invoices:
    get:
      operationId: v1InvoicesList
      tags:
        - Invoices
      summary: Invoices - List
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: filter[parentId]
          in: query
          required: false
          schema: { type: integer }
        - name: page[size]
          in: query
          required: false
          schema: { type: integer, enum: [10, 25, 50, 100] }
        - name: page[number]
          in: query
          required: false
          schema: { type: integer, minimum: 1 }
      responses:
        '200':
          description: A page of invoice resources.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/InvoiceListResponse'
  /v1/invoices/{invoiceId}:
    get:
      operationId: v1InvoiceDetails
      tags:
        - Invoices
      summary: Invoice - Details
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: invoiceId
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: The requested invoice resource with line items.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/InvoiceResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/invoices/charges:
    get:
      operationId: v1InvoicesCharges
      tags:
        - Invoices
      summary: Invoices - Charges
      description: Lists individual charge line items across invoices.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: A list of charge line items.
  /v1/invoices/{invoiceId}/refund-items:
    post:
      operationId: v1InvoicesRefundItems
      tags:
        - Invoices
      summary: Invoices - Refund Items
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: invoiceId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        itemIds: { type: array, items: { type: integer } }
                        refundReasonId: { type: integer }
      responses:
        '200':
          description: Refund confirmation for the specified invoice line items.
  /v1/payments/charge:
    post:
      operationId: v1PaymentsCharge
      tags:
        - Payments
      summary: Payment - Charge
      description: Charges an owner's card on file for an arbitrary amount, outside of a specific invoice.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        required: true
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
                        parentId: { type: integer }
                        amount: { type: number, format: float }
      responses:
        '200':
          description: Charge confirmation.
  /v1/payments/invoices/{invoiceId}:
    post:
      operationId: v1PaymentsPayInvoice
      tags:
        - Payments
      summary: Payments - Pay Invoice
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: invoiceId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
      responses:
        '200':
          description: Payment confirmation for the invoice.
  /v1/payments/invoices/{invoiceId}/refund:
    post:
      operationId: v1PaymentsRefundInvoice
      tags:
        - Payments
      summary: Payments - Refund Invoices
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: invoiceId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
      responses:
        '200':
          description: Refund confirmation for the invoice.
  /v1/payments/deposits/{depositId}:
    post:
      operationId: v1PaymentsPayDeposit
      tags:
        - Payments
      summary: Payments - Pay Deposit
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: depositId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
      responses:
        '200':
          description: Payment confirmation for the deposit.
  /v1/pets/{petId}/immunizations:
    get:
      operationId: v1PetsImmunizationsList
      tags:
        - Vaccinations
      summary: Pets Immunizations - List
      description: Lists a pet's immunization/vaccination records against the facility's configured immunization types.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - name: petId
          in: path
          required: true
          schema: { type: integer }
        - name: filter[isExpired]
          in: query
          required: false
          schema: { type: boolean }
      responses:
        '200':
          description: A list of the pet's immunization records.
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/ImmunizationListResponse'
  /v1/pets/{petId}/immunizations/{immunizationTypeId}:
    put:
      operationId: v1PetsImmunizationsUpdate
      tags:
        - Vaccinations
      summary: Pets Immunizations - Update
      description: Records or updates a pet's immunization/vaccination date and expiration for a given immunization type.
      parameters:
        - $ref: '#/components/parameters/Subdomain'
        - $ref: '#/components/parameters/Accept'
        - $ref: '#/components/parameters/ContentType'
        - name: petId
          in: path
          required: true
          schema: { type: integer }
        - name: immunizationTypeId
          in: path
          required: true
          schema: { type: integer }
      requestBody:
        content:
          application/vnd.api+json:
            schema:
              type: object
              properties:
                data:
                  type: object
                  properties:
                    attributes:
                      type: object
                      properties:
             

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/gingr/refs/heads/main/openapi/gingr-openapi.yml