A fictional dinosaur park: creatures, enclosure capacity, and a breach simulator. Practice CRUD, Bearer auth, nested resources, capacity conflicts (409), pagination and optimistic concurrency.
The Dino Park API runs a park: dinosaurs, the enclosures holding them, and an incident log for when those two facts stop agreeing. Enclosures have capacity and species compatibility rules, so writes are validated against the current state rather than accepted blindly — which makes it a good target for testing business-rule failures rather than schema failures.
Base URL: https://funapi.dev/api/dinopark/v1 · 9 endpoints · OpenAPI 3.1 spec and Postman collection available. New here? Read the getting started guide.
seven residents, one very hungry rex
GET /dinopark/v1/dinosaurs — List dinosaurs (paginated, filter by diet)GET /dinopark/v1/dinosaurs/{id} — Get one dinosaurGET /dinopark/v1/dinosaurs/{id}/enclosure — Get a dinosaur's enclosure (nested resource)POST /dinopark/v1/dinosaurs — Add a dinosaur (409 if enclosure is at capacity) (requires Bearer auth)PUT /dinopark/v1/dinosaurs/{id} — Update a dinosaur (requires Bearer auth)DELETE /dinopark/v1/dinosaurs/{id} — Relocate a dinosaur off-site (requires Bearer auth)capacity matters
GET /dinopark/v1/enclosures — List all enclosures with current occupancybreach reports, growing list
POST /dinopark/v1/incidents/breach — Simulate a containment breach (random dinosaur & severity) (requires Bearer auth)GET /dinopark/v1/incidents — List incident history (empty until you POST a breach)