A quick version update for the god like catch all CRUD endpoints. Version 3 will be even better!
This commit is contained in:
53
documentation/API_SIMPLIFICATION_PLAN.md
Normal file
53
documentation/API_SIMPLIFICATION_PLAN.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Aether API V3 Implementation Plan
|
||||
|
||||
This document outlines the plan to build the Aether API V3. The goal of V3 is to create a new, modern, and consistent set of API endpoints that will run in parallel with the existing legacy endpoints. No existing endpoints will be modified or deleted.
|
||||
|
||||
## V3 Architecture
|
||||
|
||||
The V3 API will be centered around a new generic CRUD router that implements a hierarchical, nested URL structure for parent-child object relationships.
|
||||
|
||||
- **Endpoint Prefix:** All new endpoints will be under `/v3/crud/`.
|
||||
- **Top-Level Objects:** Handled via a flat URL structure.
|
||||
- `GET /v3/crud/journal/`
|
||||
- `POST /v3/crud/journal/`
|
||||
- `GET /v3/crud/journal/{journal_id}`
|
||||
- **Child Objects:** Handled via a nested URL structure that enforces the parent-child relationship.
|
||||
- `GET /v3/crud/journal/{journal_id}/journal_entry/`
|
||||
- `POST /v3/crud/journal/{journal_id}/journal_entry/`
|
||||
- `GET /v3/crud/journal/{journal_id}/journal_entry/{entry_id}`
|
||||
|
||||
This structure will be implemented in a new `app/routers/api_crud_v3.py` file, which will be inspired by the logic in the existing `api_crud_v2.py` but with updated routing to handle the nesting.
|
||||
|
||||
## Implementation Phases
|
||||
|
||||
### Phase 1: Create Stub V3 Endpoint (Proof-of-Concept)
|
||||
|
||||
The first step is to create a minimal, non-functional "stub" endpoint to prove that the basic routing and application integration works.
|
||||
|
||||
1. **Create File:** Create a new file: `app/routers/api_crud_v3.py`.
|
||||
2. **Add Stub Endpoint:** Add a simple health-check or "hello world" endpoint within this file, for example, a `GET` endpoint at `/v3/crud/health`.
|
||||
3. **Update Main App:** In `app/main.py`, import and include the new V3 router.
|
||||
|
||||
### Phase 2: Implement Top-Level Object CRUD
|
||||
|
||||
Using `journal` as the first test case, implement the full set of CRUD operations for a top-level object.
|
||||
|
||||
- `GET /v3/crud/journal/`
|
||||
- `POST /v3/crud/journal/`
|
||||
- `GET /v3/crud/journal/{journal_id}`
|
||||
- `PATCH /v3/crud/journal/{journal_id}`
|
||||
- `DELETE /v3/crud/journal/{journal_id}`
|
||||
|
||||
### Phase 3: Implement Nested Object CRUD
|
||||
|
||||
Using `journal_entry` as the first test case, implement the full set of CRUD operations for a child object, ensuring the `journal_id` from the URL is used for filtering.
|
||||
|
||||
- `GET /v3/crud/journal/{journal_id}/journal_entry/`
|
||||
- `POST /v3/crud/journal/{journal_id}/journal_entry/`
|
||||
- `GET /v3/crud/journal/{journal_id}/journal_entry/{entry_id}`
|
||||
- `PATCH /v3/crud/journal/{journal_id}/journal_entry/{entry_id}`
|
||||
- `DELETE /v3/crud/journal/{journal_id}/journal_entry/{entry_id}`
|
||||
|
||||
### Phase 4: Incremental Rollout
|
||||
|
||||
Once the patterns for top-level and nested objects are proven with Journal and Journal Entry, we will apply the same pattern to other Aether objects in batches.
|
||||
Reference in New Issue
Block a user