> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rescueconsole.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What this run needs on paper

> THE WHOLE LIST, replaced, the way the legs are: the list is the answer. A document that keeps its name keeps its ticks, so re-ordering does not lose what somebody has collected; one that is no longer on the list takes its ticks with it, because nobody is missing a document the run does not need. Needs **write** on Animals.



## OpenAPI

````yaml /api-reference/openapi.json put /api/animals/transports/{id}/papers
openapi: 3.1.0
info:
  title: RescueConsole API
  version: '2026-09-23'
  description: >-
    Your own organization's records, from your own software. There is no
    sandbox: every request goes to your live organization.
servers:
  - url: https://{organization}.rescueconsole.com
    description: Your own organization's address, the one you sign in at.
    variables:
      organization:
        default: your-rescue
        description: >-
          The first part of the address you sign in at. A key only works at the
          address of the organization it was made in.
security:
  - apiKey: []
tags:
  - name: Animals
    description: The animals in your care, and the ones you have placed.
  - name: Animal notes
    description: Notes written on an animal's record.
  - name: Animal weights
    description: An animal's weight readings, one per weighing.
  - name: Animal medical records
    description: >-
      Vaccines, treatments, procedures, tests, exams and other medical records
      on one animal.
  - name: Animal placements
    description: The people an animal came from or has been placed with, over time.
  - name: Animal nutrition
    description: 'What an animal eats: its feeding list and its diet.'
  - name: Animal relationships
    description: Siblings, parents, offspring and bonded pairs.
  - name: Animal tags
    description: Your own short labels on an animal.
  - name: Breeds
    description: The breed or kind lists your intake form offers for each species.
  - name: Litters
    description: Litters, and the animals born into them.
  - name: Locations and housing
    description: >-
      The places animals are housed at each of your locations: campuses,
      buildings, rooms and cages, the tunnels that join cages into one space,
      and who is in each.
  - name: Foster homes
    description: >-
      The people who foster for you, what each home can take, and the animals
      offered to and placed with them.
  - name: Intakes
    description: >-
      How each animal arrived: the route in, who brought it, why it was given up
      and the state it came in.
  - name: Medical due
    description: >-
      Medical work that is outstanding across all your animals, and one medical
      record added to many animals at once.
  - name: Transports
    description: >-
      Transport runs: a chain of drives, each leg with its own driver, that
      moves animals from one place to another.
  - name: Animal calendar
    description: >-
      The dated things in animal care on one calendar: medical work due,
      adoptions, foster placements starting and ending, arrivals, and meet and
      greets.
  - name: Animal reports
    description: >-
      The operations report: intakes, outcomes, live release rate and the
      animals in your care, each figure with its own definition.
  - name: Adoption applications
    description: >-
      Applications to adopt or foster, from first draft to a decision, and the
      adoption contract signed on an approved one.
  - name: Adoptions
    description: >-
      Animals that went home, what each adopter owes and has paid, and closing
      or reversing the adoption.
  - name: Signed contracts
    description: >-
      Contracts signed on an adoption, a foster placement or an intake, each
      kept exactly as it read when it was signed.
  - name: Contract templates
    description: >-
      The contracts your organization has people sign, with the merge fields
      that fill them in.
  - name: Reconciliations
    description: >-
      A payment processor's settlement lines, matched against the adoption
      payments you recorded.
  - name: Animal custom fields
    description: >-
      The extra fields your organization adds to animals, housing units and
      adoption applications.
  - name: Age groups
    description: >-
      What counts as a baby, an adult or a senior, per species, which fee rules
      and discounts read.
  - name: Animal statuses
    description: >-
      Your organization's status vocabulary for animal records, and what kind of
      status each one is.
  - name: Application stages
    description: >-
      The steps an adoption or foster application moves through before it is
      decided, in your organization's words.
  - name: Behaviour attributes
    description: >-
      The catalogue of behavioural traits, and where a trait with each name may
      be shown beyond the record.
  - name: Cage card templates
    description: >-
      The layouts your organization prints for the kennel door: paper, fields,
      photo and QR code.
  - name: Adoption fee schedules
    description: >-
      The rules that suggest an animal's adoption fee, and the discounts laid
      over them.
  - name: Medical catalogue
    description: >-
      The diagnoses, tests, vaccines, treatments, procedures, conditions and
      medications your medical records pick from.
  - name: People
    description: >-
      The people your organization deals with: adopters, donors, volunteers,
      fosters and everybody else.
  - name: Person notes
    description: Notes written on a person's record.
  - name: Person contacts
    description: >-
      A person's phone numbers and email addresses, one of each kind marked
      primary.
  - name: Person addresses
    description: A person's addresses, one of them primary.
  - name: Person tags
    description: Free-text labels on a person, added and removed one at a time.
  - name: People duplicates
    description: People who look like the same person entered twice, and merging them.
  - name: People custom fields
    description: The fields a person's record carries beyond the standard ones.
  - name: Organizations
    description: >-
      The outside organizations your rescue deals with: veterinary practices,
      partner rescues, shelters, suppliers, employers and agencies.
  - name: Organization locations
    description: An organization's places, one of them the main one.
  - name: Affiliations
    description: >-
      Who works at, volunteers for or otherwise belongs to an organization, now
      or in the past.
  - name: Forms
    description: >-
      The forms your organization publishes, such as an adoption application or
      a volunteer sign-up, and the questions on them.
  - name: Submissions
    description: >-
      What people sent through your forms, and what your team does with each
      one.
  - name: Tasks
    description: >-
      To-dos, on a record or for the whole organization, narrowed to the records
      your key may read.
  - name: Calendar
    description: >-
      The dated work across your organization in one list, narrowed to the areas
      your key may read.
  - name: Activity
    description: >-
      What was created, changed and deleted in your organization, narrowed to
      the areas your key may read.
  - name: Shift schedules
    description: >-
      Schedules: the occasions shifts are grouped under, such as an adoption day
      or Saturday kennel cover.
  - name: Shift windows
    description: >-
      Shifts: a stretch of time at a place, with the volunteer roles it needs
      and how many of each (the address calls a shift a window).
  - name: Shift bookings
    description: >-
      Sign-ups: a person taking a role on a shift, giving it up, and the hours
      they worked.
  - name: Volunteers
    description: >-
      The people who volunteer: where each stands, what they have done, and
      where they would rather work.
  - name: Volunteer roles
    description: >-
      The jobs a volunteer can sign up for, such as Dog walker or Adoption
      counselor.
  - name: Volunteer qualifications
    description: 'Approvals: who may take which role, and at which location.'
  - name: Shift policies
    description: The rules you set for sign-ups and cancellations.
  - name: Shift calendar
    description: Schedules and shifts as calendar items for a date range.
  - name: Shift custom fields
    description: Your own fields on schedules, shifts and sign-ups.
  - name: Events
    description: >-
      The occasions your rescue hosts: adoption days, fundraisers, clinics and
      the rest.
  - name: Events calendar
    description: Your events between two days, as calendar entries.
  - name: Campaigns
    description: >-
      Appeals you raise money for, each with its goal and what it has raised so
      far.
  - name: Donations
    description: 'Gifts of money: how much, from whom, and what they were given to.'
  - name: Donors
    description: The people who have given, with what each has given in all.
  - name: Wish list
    description: The things your rescue needs, and the deliveries that met them.
  - name: Auctions
    description: >-
      Gala auctions and the lots in them. An auction belongs to a campaign, so
      what it raises lands with the rest of that campaign's money.
  - name: Fundraising custom fields
    description: Your organization's own fields on donations and campaigns.
  - name: Funds and appeals
    description: >-
      What a giver said their money is for, and what made them give: two
      different questions, kept apart.
  - name: Message templates
    description: >-
      Saved wording your organization sends again and again, with merge fields
      filled from your records.
  - name: Sending
    description: >-
      Everything here sends real email from your organization, and none of it
      can be unsent.
  - name: Message log
    description: >-
      The email your organization has sent or tried to send, and what became of
      each message.
  - name: Conversations
    description: >-
      The email conversations in your organization's inboxes, and the records
      each one is about.
  - name: Inboxes
    description: >-
      The addresses your organization receives email at, and who may read each
      one.
  - name: Contact preferences
    description: >-
      Whether a person has asked not to be emailed, altogether or about one kind
      of message.
  - name: Suppressions
    description: >-
      Addresses no email goes to, because mail to them bounced or their owner
      asked not to be written to.
  - name: Sender and deliverability
    description: Who your organization's email goes out as, and how much of it arrives.
  - name: Registry flags
    description: >-
      Safety flags your organization files about a person or an animal, which
      other organizations using RescueConsole can see once the flag is vetted
      and shared.
  - name: Registry reviews
    description: >-
      Another organization's vote on a flag it did not file, which decides
      whether the flag becomes active or disputed.
  - name: Registry search
    description: >-
      The lookup by microchip number that anybody may make, with or without a
      key.
  - name: Registry marks
    description: >-
      Where a flag from another rescue matches one of YOUR records. A mark is a
      pointer with no narrative on it: it says what kind of thing was filed and
      which identifier matched, and reading the flag itself goes through the
      flag endpoints, which decide for themselves who may see what.
paths:
  /api/animals/transports/{id}/papers:
    parameters:
      - name: id
        in: path
        required: true
        description: The run's ID.
        schema:
          type: string
    put:
      tags:
        - Transports
      summary: What this run needs on paper
      description: >-
        THE WHOLE LIST, replaced, the way the legs are: the list is the answer.
        A document that keeps its name keeps its ticks, so re-ordering does not
        lose what somebody has collected; one that is no longer on the list
        takes its ticks with it, because nobody is missing a document the run
        does not need. Needs **write** on Animals.
      operationId: replaceTransportRunPapers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - papers
              properties:
                papers:
                  type: array
                  items:
                    type: object
                    required:
                      - label
                    properties:
                      label:
                        type: string
                      notes:
                        type:
                          - string
                          - 'null'
                      paper_id:
                        type:
                          - string
                          - 'null'
                        description: The line on the rescue's list, if it came from one.
            example:
              papers:
                - label: Certificate of Veterinary Inspection
                - label: SC import permit
      responses:
        '200':
          description: The run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransportRun'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '403':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/Problem'
components:
  schemas:
    TransportRun:
      type: object
      required:
        - id
        - name
        - scheduled_date
        - origin
        - destination
        - status
        - legs
        - animals
        - problems
      properties:
        id:
          type: string
        name:
          type: string
        scheduled_date:
          type: string
          format: date
        origin:
          type: string
        destination:
          type: string
        status:
          type: string
          enum:
            - planning
            - confirmed
            - in_progress
            - completed
            - cancelled
        notes:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        legs:
          type: array
          items:
            $ref: '#/components/schemas/TransportLeg'
          description: In order.
        animals:
          type: array
          items:
            type: object
            required:
              - id
            properties:
              id:
                type: string
                description: The animal's ID.
              name:
                type:
                  - string
                  - 'null'
              species:
                type: string
              status:
                type: string
                description: The animal's status now.
              notes:
                type:
                  - string
                  - 'null'
                description: The note for this animal on this run.
              crate_size:
                type:
                  - string
                  - 'null'
                enum:
                  - small
                  - medium
                  - large
                  - extra_large
                  - null
                description: >-
                  The size of crate this animal needs, which is what a capacity
                  is counted against. An animal with no size counts against
                  nothing.
              boards_place:
                type:
                  - string
                  - 'null'
                description: >-
                  The NAME of the stop where this animal joins the van (Phase
                  449b), or null for the start. A name and not a leg id, because
                  the leg editor replaces the whole chain on every save and
                  re-sequences it.
              leaves_place:
                type:
                  - string
                  - 'null'
                description: >-
                  The NAME of the stop where this animal leaves it, or null for
                  the end. Both null is the whole journey, which is what every
                  animal on every run meant before this.
          description: The animals on the run, by name.
        problems:
          type: array
          items:
            $ref: '#/components/schemas/TransportProblem'
          description: >-
            Every reason the run cannot be confirmed yet. Empty when it is
            ready.
        reminders:
          type: array
          items:
            type: object
            properties:
              days_before:
                type: integer
                description: 'How many days before the run this reminder was for: 3, then 1.'
              told:
                type: integer
                description: >-
                  How many people it reached. 0 is a real answer, and means the
                  run had nobody to tell.
              sent_at:
                type: string
                format: date-time
          description: >-
            What has already been sent about this run (Phase 447). A confirmed
            run reminds its drivers and every rescue holding space three days
            before and again the day before, once each. Read only: there is no
            endpoint that sends one.
        driver_person_id:
          type:
            - string
            - 'null'
          description: >-
            Who is driving the run (Phase 436). On a run with legs this is
            whoever is in charge of the whole journey; each leg has its own
            driver. Empty text or null clears it. An address is only rewritten
            when its key is sent, so a patch about a date never clears one
            somebody verified.
        driver_name:
          type:
            - string
            - 'null'
          description: The run driver's name. Empty text when there is no driver.
        origin_address:
          $ref: '#/components/schemas/TransportPlaceAddress'
        destination_address:
          $ref: '#/components/schemas/TransportPlaceAddress'
        origin_type:
          type:
            - string
            - 'null'
          enum:
            - residence
            - shelter
            - vet
            - break_stop
            - other
            - null
          description: >-
            What kind of place it is (Phase 438). It changes what a driver
            expects to find and how long to allow: break_stop covers a planned
            pause for fuel, a meal, rest or an overnight.
        destination_type:
          type:
            - string
            - 'null'
          enum:
            - residence
            - shelter
            - vet
            - break_stop
            - other
            - null
          description: >-
            What kind of place it is (Phase 438). It changes what a driver
            expects to find and how long to allow: break_stop covers a planned
            pause for fuel, a meal, rest or an overnight.
        vehicle_type:
          type:
            - string
            - 'null'
          enum:
            - car
            - suv
            - minivan
            - cargo_van
            - box_truck
            - trailer
            - other
            - null
          description: What is being driven (Phase 439).
        vehicle_notes:
          type:
            - string
            - 'null'
          description: Anything a driver should know about the vehicle.
        crate_capacity:
          $ref: '#/components/schemas/TransportCrateCapacity'
        transport_type:
          type:
            - string
            - 'null'
          enum:
            - one_way
            - round_trip
            - null
          description: >-
            Whether the van comes back (Phase 441). `round_trip` is checked: a
            run that says round trip and does not end where it started reports
            the problem `not_a_round_trip` and cannot be confirmed.
        series_id:
          type:
            - string
            - 'null'
          description: >-
            The first run of the series, on every run of it including the first.
            Null on a run that does not repeat.
        recurrence:
          oneOf:
            - $ref: '#/components/schemas/TransportRecurrence'
            - type: 'null'
          description: >-
            The rule, on the FIRST run of a series only. `series.rule` carries
            it on every run.
        series_through:
          type:
            - string
            - 'null'
          format: date
          description: >-
            Read only, and on the first run of a series only: the furthest date
            the series has ever put a run on. It is how a never-ending series is
            extended without minting a date somebody deleted.
        series:
          oneOf:
            - type: object
              required:
                - count
                - rule
              properties:
                count:
                  type: integer
                  description: How many runs the series has.
                rule:
                  oneOf:
                    - $ref: '#/components/schemas/TransportRecurrence'
                    - type: 'null'
                  description: The rule, wherever in the series this run is.
            - type: 'null'
          description: >-
            The series this run is one of, or null. Only on a single run, not in
            the list.
        origin_contact:
          type:
            - object
            - 'null'
          description: >-
            Who to ring at the start (Phase 449b). An address gets a van to a
            car park; a name and a number get an animal out of it. Either half
            may be empty; both empty reads back as null. Only rewritten when the
            key is sent, so a patch about a date never clears a number somebody
            finally got hold of. An unknown field is refused rather than
            dropped.
          properties:
            name:
              type:
                - string
                - 'null'
            phone:
              type:
                - string
                - 'null'
          additionalProperties: false
        destination_contact:
          type:
            - object
            - 'null'
          description: >-
            Who to ring at the end (Phase 449b). An address gets a van to a car
            park; a name and a number get an animal out of it. Either half may
            be empty; both empty reads back as null. Only rewritten when the key
            is sent, so a patch about a date never clears a number somebody
            finally got hold of. An unknown field is refused rather than
            dropped.
          properties:
            name:
              type:
                - string
                - 'null'
            phone:
              type:
                - string
                - 'null'
          additionalProperties: false
        weather_min_f:
          type:
            - integer
            - 'null'
          description: >-
            The coldest temperature this rescue will move animals in, in degrees
            Fahrenheit (Phase 449d). Between -60 and 140, and the coldest cannot
            be warmer than the warmest. Null is a rescue that has not said,
            which is most of them.
        weather_max_f:
          type:
            - integer
            - 'null'
          description: >-
            The warmest temperature this rescue will move animals in, in degrees
            Fahrenheit (Phase 449d). Between -60 and 140, and the coldest cannot
            be warmer than the warmest. Null is a rescue that has not said,
            which is most of them.
        weather_decision:
          type:
            - string
            - 'null'
          enum:
            - go
            - hold
            - null
          description: >-
            Whether somebody decided this run goes (Phase 449d). Nothing here
            checks the weather - we do not know it - so this records that a
            person looked and what they said. Setting it stamps who and when;
            re-sending the same decision does not re-stamp it, and clearing it
            clears the stamp.
        weather_note:
          type:
            - string
            - 'null'
          description: What the forecast said, in whoever wrote it words.
        weather_decided_at:
          type:
            - string
            - 'null'
          format: date-time
          description: When the decision was made. Read only.
        weather_decided_by_person_id:
          type:
            - string
            - 'null'
          description: Who made it. Read only.
        weather_decided_by_name:
          type:
            - string
            - 'null'
          description: >-
            And their name, because a decision that reads as an id settles
            nothing. Read only.
        papers:
          type: array
          items:
            $ref: '#/components/schemas/TransportRunPaper'
          description: >-
            What this run needs on paper (Phase 448), each document with who has
            it. Empty is ordinary.
    TransportLeg:
      type: object
      required:
        - id
        - sequence
        - from_place
        - to_place
        - driver_person_id
      properties:
        id:
          type: string
        sequence:
          type: integer
          description: Its place in the chain, from 1.
        from_place:
          type: string
        to_place:
          type: string
        depart_at:
          type:
            - string
            - 'null'
        arrive_at:
          type:
            - string
            - 'null'
        driver_person_id:
          type:
            - string
            - 'null'
        driver_name:
          type: string
          description: The driver's name. Empty text when there is no driver.
        notes:
          type:
            - string
            - 'null'
        from_address:
          $ref: '#/components/schemas/TransportPlaceAddress'
        to_address:
          $ref: '#/components/schemas/TransportPlaceAddress'
        from_type:
          type:
            - string
            - 'null'
          enum:
            - residence
            - shelter
            - vet
            - break_stop
            - other
            - null
          description: >-
            What kind of place it is (Phase 438). It changes what a driver
            expects to find and how long to allow: break_stop covers a planned
            pause for fuel, a meal, rest or an overnight.
        to_type:
          type:
            - string
            - 'null'
          enum:
            - residence
            - shelter
            - vet
            - break_stop
            - other
            - null
          description: >-
            What kind of place it is (Phase 438). It changes what a driver
            expects to find and how long to allow: break_stop covers a planned
            pause for fuel, a meal, rest or an overnight.
        from_contact:
          type:
            - object
            - 'null'
          description: >-
            Who to ring at the start of this leg (Phase 449b). An address gets a
            van to a car park; a name and a number get an animal out of it.
            Either half may be empty; both empty reads back as null. Only
            rewritten when the key is sent, so a patch about a date never clears
            a number somebody finally got hold of. An unknown field is refused
            rather than dropped.
          properties:
            name:
              type:
                - string
                - 'null'
            phone:
              type:
                - string
                - 'null'
          additionalProperties: false
        to_contact:
          type:
            - object
            - 'null'
          description: >-
            Who to ring at the end of this leg (Phase 449b). An address gets a
            van to a car park; a name and a number get an animal out of it.
            Either half may be empty; both empty reads back as null. Only
            rewritten when the key is sent, so a patch about a date never clears
            a number somebody finally got hold of. An unknown field is refused
            rather than dropped.
          properties:
            name:
              type:
                - string
                - 'null'
            phone:
              type:
                - string
                - 'null'
          additionalProperties: false
    TransportProblem:
      type: object
      required:
        - kind
        - sequence
        - message
      properties:
        kind:
          type: string
          enum:
            - sequence_gap
            - no_driver
            - gap
            - wrong_start
            - wrong_end
            - time_travel
            - over_capacity
            - not_a_round_trip
          description: >-
            no_driver: a leg with nobody driving, or a run with no legs and
            nobody driving it, in which case sequence is null. gap: a leg starts
            somewhere the one before it did not end. wrong_start and wrong_end:
            the first leg does not start at the origin, or the last does not end
            at the destination. time_travel: a leg arrives before it leaves, or
            leaves before the one before it arrives. sequence_gap: the legs are
            not numbered 1 to n. over_capacity: more crates of a size are needed
            than the vehicle holds. A RUN WITH NO LEGS IS NOT A PROBLEM (Phase
            436): a start, an end and a driver is a transport. not_a_round_trip:
            the run says round trip and does not end where it started, with
            sequence null.
        sequence:
          type:
            - integer
            - 'null'
          description: The leg it is about, or null for the whole run.
        message:
          type: string
          description: The problem, in a sentence you can show to a person.
    TransportPlaceAddress:
      type: object
      description: >-
        The place, as the six address fields (Phase 437). Every part is optional
        and a key not listed here is refused. Sent as an object and returned as
        one; an address with nothing in it is stored as nothing.
      additionalProperties: false
      properties:
        country:
          type:
            - string
            - 'null'
          description: >-
            The two-letter country code, such as US or GB. Lower case is
            accepted.
        line1:
          type:
            - string
            - 'null'
        line2:
          type:
            - string
            - 'null'
        city:
          type:
            - string
            - 'null'
        administrative_area:
          type:
            - string
            - 'null'
          description: The state, province or county.
        postal_code:
          type:
            - string
            - 'null'
    TransportCrateCapacity:
      type: object
      description: >-
        How many crates of each size the vehicle holds (Phase 439). Every size
        is optional, a size left out or zero is not counted, and a key that is
        not one of the four sizes is refused rather than dropped. AN EMPTY
        OBJECT MEANS NOBODY HAS SAID, and nothing is checked against it.
      additionalProperties: false
      properties:
        small:
          type: integer
          minimum: 0
        medium:
          type: integer
          minimum: 0
        large:
          type: integer
          minimum: 0
        extra_large:
          type: integer
          minimum: 0
    TransportRecurrence:
      type: object
      description: >-
        How the run repeats (Phase 441). The runs are worked out once, when the
        series is created, up to 100 of them; with neither `until` nor `count`
        nor `never_ends` the series runs a year ahead and stops there. Every run
        is an ordinary run with its own animals, drivers and legs.
      required:
        - freq
      properties:
        freq:
          type: string
          enum:
            - daily
            - weekly
            - monthly
            - yearly
        interval:
          type: integer
          minimum: 1
          maximum: 52
          default: 1
          description: Every this many days, weeks, months or years.
        by_weekday:
          type: array
          minItems: 1
          items:
            type: integer
            minimum: 0
            maximum: 6
          description: >-
            Weekly only: the days, 0 for Sunday to 6 for Saturday. The first
            run's own weekday when left out.
        monthly_by:
          type: string
          enum:
            - date
            - weekday
          description: >-
            Monthly only: the same date each month, or the same weekday, such as
            the second Tuesday. A month without that date or that weekday is
            skipped.
        until:
          type: string
          format: date
          description: The last day a run may fall on. Not with `count` or `never_ends`.
        count:
          type: integer
          minimum: 2
          maximum: 100
          description: How many runs, the first included. Not with `until` or `never_ends`.
        never_ends:
          type: boolean
          description: >-
            The series has no end: more runs are added nightly so it always
            reaches a year ahead, each with the first run's details and legs and
            its own times, and each at planning however far the first one has
            got. Not with `until` or `count`.
        tz:
          type: string
          description: >-
            The time zone the wall clock is kept in, such as America/New_York,
            so a leg that leaves at 8 leaves at 8 across a daylight-saving
            change.
    TransportRunPaper:
      type: object
      description: >-
        One document THIS run needs, with the animals that have it. The label is
        a COPY of the line in the rescue's list, so renaming or deleting that
        line never rewrites what a journey recorded.
      properties:
        id:
          type: string
        label:
          type: string
        notes:
          type:
            - string
            - 'null'
        paper_id:
          type:
            - string
            - 'null'
          description: 'The line it came from. Informational: nothing reads through it.'
        marks:
          type: array
          description: >-
            Only the animals somebody has said something about. No row means not
            in hand, which is the ordinary state and is shown as missing.
          items:
            type: object
            properties:
              animal_id:
                type: string
              in_hand:
                type: boolean
              note:
                type:
                  - string
                  - 'null'
  responses:
    Problem:
      description: What is wrong, in one sentence you can show to a person.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              error:
                type: string
          example:
            error: house_trained must be 1, 0 or null (not assessed)
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: An API key from Settings, API keys. It starts with rc_live_.

````