169 lines
7.8 KiB
Python
169 lines
7.8 KiB
Python
"""Wed backend OpenAPI subset used to generate orchestration tools.
|
|
|
|
The source backend lives at `/Volumes/Corsair/Wed/wed-backend` and exposes these
|
|
FastAPI routes:
|
|
|
|
- `POST /tasks/`
|
|
- `PATCH /tasks/{task_id}`
|
|
- `POST /notes/`
|
|
- `PATCH /notes/{note_id}`
|
|
- `POST /reservations/guest`
|
|
- `PATCH /reservations/{reservation_id}`
|
|
"""
|
|
|
|
from typing import Any
|
|
|
|
|
|
def wed_openapi_subset() -> dict[str, Any]:
|
|
"""Return a minimal OpenAPI document matching the real Wed backend payloads."""
|
|
|
|
return {
|
|
"openapi": "3.1.0",
|
|
"info": {"title": "Wedding Plan API", "version": "1.0"},
|
|
"paths": {
|
|
"/tasks/": {
|
|
"post": {
|
|
"operationId": "create_task",
|
|
"summary": "Create task in Wed backend",
|
|
"requestBody": {
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/TaskCreate"}}}
|
|
},
|
|
}
|
|
},
|
|
"/tasks/{task_id}": {
|
|
"patch": {
|
|
"operationId": "update_task",
|
|
"summary": "Update task in Wed backend",
|
|
"requestBody": {
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/UpdateTask"}}}
|
|
},
|
|
}
|
|
},
|
|
"/notes/": {
|
|
"post": {
|
|
"operationId": "create_note",
|
|
"summary": "Create note in Wed backend",
|
|
"requestBody": {
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoteCreateSchema"}}}
|
|
},
|
|
}
|
|
},
|
|
"/notes/{note_id}": {
|
|
"patch": {
|
|
"operationId": "update_note",
|
|
"summary": "Update note in Wed backend",
|
|
"requestBody": {
|
|
"content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoteUpdateSchema"}}}
|
|
},
|
|
}
|
|
},
|
|
"/reservations/guest": {
|
|
"post": {
|
|
"operationId": "create_guest_reservation",
|
|
"summary": "Create guest reservation request in Wed backend",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {"$ref": "#/components/schemas/ReservationPendingCreateGuestSchema"}
|
|
}
|
|
}
|
|
},
|
|
}
|
|
},
|
|
"/reservations/{reservation_id}": {
|
|
"patch": {
|
|
"operationId": "update_reservation",
|
|
"summary": "Update reservation in Wed backend",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {"schema": {"$ref": "#/components/schemas/ReservationsUpdateSchema"}}
|
|
}
|
|
},
|
|
}
|
|
},
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"TaskCreate": {
|
|
"type": "object",
|
|
"required": ["title"],
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"title": {"type": "string"},
|
|
"description": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": None},
|
|
"notes": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": None},
|
|
"is_completed": {"type": "boolean", "default": False},
|
|
"due_date": {
|
|
"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}],
|
|
"default": None,
|
|
},
|
|
},
|
|
},
|
|
"UpdateTask": {
|
|
"type": "object",
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"title": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"description": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"notes": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"is_completed": {"anyOf": [{"type": "boolean"}, {"type": "null"}]},
|
|
"due_date": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}]},
|
|
},
|
|
},
|
|
"NoteCreateSchema": {
|
|
"type": "object",
|
|
"required": ["content"],
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"content": {"type": "string"},
|
|
"reservation_id": {
|
|
"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}],
|
|
"default": None,
|
|
},
|
|
},
|
|
},
|
|
"NoteUpdateSchema": {
|
|
"type": "object",
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"content": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"reservation_id": {"anyOf": [{"type": "string", "format": "uuid"}, {"type": "null"}]},
|
|
},
|
|
},
|
|
"ReservationPendingCreateGuestSchema": {
|
|
"type": "object",
|
|
"required": ["partner_id", "guest_first_name", "guest_last_name", "guest_email"],
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"partner_id": {"type": "string", "format": "uuid"},
|
|
"guest_first_name": {"type": "string"},
|
|
"guest_last_name": {"type": "string"},
|
|
"guest_email": {"type": "string", "format": "email"},
|
|
"guest_phone": {"anyOf": [{"type": "string"}, {"type": "null"}], "default": None},
|
|
"event_date": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}]},
|
|
"details": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"budget_per_reservation": {"anyOf": [{"type": "number"}, {"type": "null"}]},
|
|
"interested_dates": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"guest_count": {"anyOf": [{"type": "integer"}, {"type": "null"}]},
|
|
"event_type": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"other_comments": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
},
|
|
},
|
|
"ReservationsUpdateSchema": {
|
|
"type": "object",
|
|
"additionalProperties": False,
|
|
"properties": {
|
|
"status": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"event_date": {"anyOf": [{"type": "string", "format": "date-time"}, {"type": "null"}]},
|
|
"details": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"budget_per_reservation": {"anyOf": [{"type": "number"}, {"type": "null"}]},
|
|
"interested_dates": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"guest_count": {"anyOf": [{"type": "integer"}, {"type": "null"}]},
|
|
"event_type": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
"other_comments": {"anyOf": [{"type": "string"}, {"type": "null"}]},
|
|
},
|
|
},
|
|
}
|
|
},
|
|
}
|