Branch master was renamed to main.

Files
breedr/API.md
Zenflow 2daccf7d8c INIT (zenflow 9c6862b8)
Scan the code, build the .md files you need to make it easier for the agent to preform modifications and fix bugs
2026-03-11 09:51:35 -05:00

4.9 KiB

BREEDR API Documentation (v0.6.1)

Base URL: /api

All endpoints return JSON responses. Errors follow the format { "error": "message" }.


1. Dogs (/api/dogs)

Manage individual dogs in the kennel.

GET /

Get active kennel dogs.

  • Query Params:
    • include_external=1: Include external dogs (studs/others)
    • external_only=1: Only show external dogs
  • Response: Array of Dog objects with sire and dam attached.

GET /:id

Get single dog details.

  • Response: Dog object including sire, dam, and offspring array.

POST /

Create a new dog.

  • Body: See Dog fields. name, breed, sex are required.
  • Response: The created Dog object.

PUT /:id

Update an existing dog.

  • Body: Dog fields to update.
  • Response: The updated Dog object.

DELETE /:id

Permanently delete a dog and its related records (health, heat, parents).

  • Response: { "success": true, "message": "..." }

POST /:id/photos

Upload a photo for a dog.

  • Form-Data: photo (file)
  • Response: { "url": "...", "photos": [...] }

DELETE /:id/photos/:photoIndex

Delete a specific photo from a dog's photo array.

  • Response: { "photos": [...] }

2. Litters (/api/litters)

Manage breeding litters and puppy logs.

GET /

Get all litters.

  • Response: Array of Litter objects with sire/dam names and puppies.

GET /:id

Get single litter details.

POST /

Create a new litter.

  • Body: sire_id, dam_id, breeding_date (required), whelping_date, puppy_count, notes.
  • Response: The created Litter object.

PUT /:id

Update litter details.

POST /:id/puppies/:puppyId

Link a dog to a litter as a puppy.

  • Side Effect: Automatically sets the litter's sire and dam as the puppy's parents.

DELETE /:id/puppies/:puppyId

Remove a puppy from a litter (sets litter_id to NULL).

GET /:litterId/puppies/:puppyId/logs

Get weight and health logs for a puppy.

POST /:litterId/puppies/:puppyId/logs

Add a weight/health log entry.

  • Body: record_date (required), weight_oz, weight_lbs, notes, record_type.

3. Health (/api/health)

Manage OFA clearances and veterinary records.

GET /dog/:dogId

Get all health records for a dog.

GET /dog/:dogId/clearance-summary

Get GRCA core clearance status (Hip, Elbow, Heart, Eyes).

  • Response: { summary, grca_eligible, age_eligible, chic_number }

GET /dog/:dogId/chic-eligible

Check if a dog has all required CHIC tests.

POST /

Create health record.

  • Body: dog_id, record_type, test_date (required), test_type, test_name, ofa_result, ofa_number, etc.

4. Genetics (/api/genetics)

Manage DNA panel results and breeding risks.

GET /dog/:dogId

Get the full genetic panel for a dog. Returns tests (actual records) and panel (full list including not_tested placeholders).

GET /pairing-risk?sireId=X&damId=Y

Check genetic compatibility between two dogs.

  • Response: { risks: [...], safe_to_pair: boolean }

POST /

Add a genetic test result.

  • Body: dog_id, marker, result (clear|carrier|affected|not_tested).

5. Breeding (/api/breeding)

Track heat cycles and whelping projections.

GET /heat-cycles/active

Get currently active heat cycles.

GET /heat-cycles/:id/suggestions

Get optimal breeding window (days 9-15) and whelping projections.

POST /heat-cycles

Log a new heat cycle. Dog must be female.

GET /whelping-calculator?breeding_date=YYYY-MM-DD

Standalone tool to calculate expected whelping window.


6. Pedigree (/api/pedigree)

Advanced ancestry and COI calculations.

GET /:id?generations=N

Get an interactive pedigree tree (ancestors). Default 5 generations.

GET /:id/descendants?generations=N

Get a descendant tree. Default 3 generations.

POST /trial-pairing

Calculate Coefficient of Inbreeding (COI) for a hypothetical mating.

  • Body: sire_id, dam_id.
  • Response: { coi, commonAncestors, directRelation, recommendation }

7. Settings (/api/settings)

GET /

Get kennel metadata (name, address, etc.).

PUT /

Update kennel settings.


Data Objects

Dog Object

{
  "id": 1,
  "name": "BREEDR Champion",
  "registration_number": "AKC123456",
  "breed": "Golden Retriever",
  "sex": "male",
  "birth_date": "2020-01-01",
  "color": "Golden",
  "microchip": "900123456789",
  "is_active": 1,
  "is_champion": 1,
  "is_external": 0,
  "photo_urls": ["/uploads/img.jpg"],
  "notes": "Excellent temperament",
  "sire": { "id": 10, "name": "Sire Name" },
  "dam": { "id": 11, "name": "Dam Name" }
}

Litter Object

{
  "id": 5,
  "sire_id": 1,
  "dam_id": 2,
  "breeding_date": "2023-01-01",
  "whelp_date": "2023-03-05",
  "total_count": 8,
  "puppies": [ ... ]
}