Files
SIB/backend/vertexdc_openapi.json

2 lines
37 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"openapi":"3.1.0","info":{"title":"SIBU Transportation API","description":"API for SIBU public transportation system","version":"1.0.0"},"paths":{"/api/routes":{"get":{"tags":["routes"],"summary":"Get Routes","description":"Get all routes.","operationId":"get_routes_api_routes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RouteResponse"},"type":"array","title":"Response Get Routes Api Routes Get"}}}}}},"post":{"tags":["routes"],"summary":"Create Route","description":"Create a new route (Admin only).","operationId":"create_route_api_routes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/routes/{route_id}":{"get":{"tags":["routes"],"summary":"Get Route","description":"Get a single route by ID.","operationId":"get_route_api_routes__route_id__get","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","title":"Route Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["routes"],"summary":"Update Route","description":"Update a route (Admin only).","operationId":"update_route_api_routes__route_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","title":"Route Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["routes"],"summary":"Delete Route","description":"Delete a route (Admin only).","operationId":"delete_route_api_routes__route_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","title":"Route Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/routes/{route_id}/stops":{"get":{"tags":["routes"],"summary":"Get Route Stops","description":"Get all stops for a route.","operationId":"get_route_stops_api_routes__route_id__stops_get","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","title":"Route Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["routes"],"summary":"Add Stop To Route","description":"Add a stop to a route with cascading order adjustment.","operationId":"add_stop_to_route_api_routes__route_id__stops_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","title":"Route Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteStopCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/routes/{route_id}/stops/{stop_id}":{"put":{"tags":["routes"],"summary":"Update Route Stop Order","description":"Update a route stop, potentially reordering others.","operationId":"update_route_stop_order_api_routes__route_id__stops__stop_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","title":"Route Id"}},{"name":"stop_id","in":"path","required":true,"schema":{"type":"string","title":"Stop Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteStopUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bus-stops":{"get":{"tags":["bus-stops"],"summary":"Get Bus Stops","description":"Get all bus stops.","operationId":"get_bus_stops_api_bus_stops_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/BusStopResponse"},"type":"array","title":"Response Get Bus Stops Api Bus Stops Get"}}}}}},"post":{"tags":["bus-stops"],"summary":"Create Bus Stop","description":"Create a new bus stop (Admin only).","operationId":"create_bus_stop_api_bus_stops_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusStopCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusStopResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/bus-stops/{stop_id}":{"get":{"tags":["bus-stops"],"summary":"Get Bus Stop","description":"Get a single bus stop by ID.","operationId":"get_bus_stop_api_bus_stops__stop_id__get","parameters":[{"name":"stop_id","in":"path","required":true,"schema":{"type":"string","title":"Stop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusStopResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["bus-stops"],"summary":"Update Bus Stop","description":"Update a bus stop (Admin only).","operationId":"update_bus_stop_api_bus_stops__stop_id__put","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"stop_id","in":"path","required":true,"schema":{"type":"string","title":"Stop Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusStopUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusStopResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["bus-stops"],"summary":"Delete Bus Stop","description":"Delete a bus stop (Admin only).","operationId":"delete_bus_stop_api_bus_stops__stop_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"stop_id","in":"path","required":true,"schema":{"type":"string","title":"Stop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bus-stops/{stop_id}/routes":{"get":{"tags":["bus-stops"],"summary":"Get Bus Stop Routes","description":"Get all routes passing through a bus stop.","operationId":"get_bus_stop_routes_api_bus_stops__stop_id__routes_get","parameters":[{"name":"stop_id","in":"path","required":true,"schema":{"type":"string","title":"Stop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/schedules":{"get":{"tags":["schedules"],"summary":"Get Schedules","description":"Get schedules for a route or stop.","operationId":"get_schedules_api_schedules_get","parameters":[{"name":"route_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route Id"}},{"name":"stop_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stop Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/coupons":{"get":{"tags":["coupons"],"summary":"Get Coupons","description":"Get all coupons with optional filters.","operationId":"get_coupons_api_coupons_get","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/taxis":{"get":{"tags":["taxis"],"summary":"Get Taxis","description":"Get all taxis with optional filters.","operationId":"get_taxis_api_taxis_get","parameters":[{"name":"corregimiento","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corregimiento"}},{"name":"shift","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shift"}},{"name":"is_active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Root","description":"Root endpoint.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","description":"Health check endpoint.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BusStopCreate":{"properties":{"name":{"type":"string","title":"Name"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"city":{"type":"string","title":"City"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"stop_type":{"$ref":"#/components/schemas/StopType","default":"regular"},"has_shelter":{"type":"boolean","title":"Has Shelter","default":false},"has_seating":{"type":"boolean","title":"Has Seating","default":false},"is_accessible":{"type":"boolean","title":"Is Accessible","default":false},"stop_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stop Order"}},"type":"object","required":["name","latitude","longitude","city"],"title":"BusStopCreate","description":"Schema for creating a bus stop."},"BusStopResponse":{"properties":{"name":{"type":"string","title":"Name"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"city":{"type":"string","title":"City"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"stop_type":{"$ref":"#/components/schemas/StopType","default":"regular"},"has_shelter":{"type":"boolean","title":"Has Shelter","default":false},"has_seating":{"type":"boolean","title":"Has Seating","default":false},"is_accessible":{"type":"boolean","title":"Is Accessible","default":false},"stop_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stop Order"},"id":{"type":"string","title":"Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["name","latitude","longitude","city","id"],"title":"BusStopResponse","description":"Schema for bus stop response."},"BusStopUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"stop_type":{"anyOf":[{"$ref":"#/components/schemas/StopType"},{"type":"null"}]},"has_shelter":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Shelter"},"has_seating":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Seating"},"is_accessible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Accessible"}},"type":"object","title":"BusStopUpdate","description":"Schema for updating a bus stop."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LoginRequest":{"properties":{"password":{"type":"string","title":"Password"}},"type":"object","required":["password"],"title":"LoginRequest"},"RouteCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"origin_city":{"type":"string","title":"Origin City"},"destination_city":{"type":"string","title":"Destination City"},"distance_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Km"},"estimated_duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estimated Duration Minutes"},"average_speed_kmh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Speed Kmh"},"status":{"$ref":"#/components/schemas/RouteStatus","default":"active"}},"type":"object","required":["name","origin_city","destination_city"],"title":"RouteCreate","description":"Schema for creating a route."},"RouteResponse":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"origin_city":{"type":"string","title":"Origin City"},"destination_city":{"type":"string","title":"Destination City"},"distance_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Km"},"estimated_duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estimated Duration Minutes"},"average_speed_kmh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Speed Kmh"},"status":{"$ref":"#/components/schemas/RouteStatus","default":"active"},"id":{"type":"string","title":"Id"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["name","origin_city","destination_city","id"],"title":"RouteResponse","description":"Schema for route response."},"RouteStatus":{"type":"string","enum":["active","inactive","maintenance"],"title":"RouteStatus","description":"Route status enumeration."},"RouteStopCreate":{"properties":{"stop_id":{"type":"string","format":"uuid","title":"Stop Id"},"stop_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stop Order"},"travel_time_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Travel Time Minutes"},"stop_delay_minutes":{"type":"integer","title":"Stop Delay Minutes","default":0},"is_pickup_point":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Pickup Point","default":true},"is_dropoff_point":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Dropoff Point","default":true}},"type":"object","required":["stop_id"],"title":"RouteStopCreate"},"RouteStopUpdate":{"properties":{"stop_order":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stop Order"},"travel_time_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Travel Time Minutes"},"stop_delay_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stop Delay Minutes"},"is_pickup_point":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Pickup Point"},"is_dropoff_point":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Dropoff Point"}},"type":"object","title":"RouteStopUpdate"},"RouteUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"origin_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin City"},"destination_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Destination City"},"distance_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Distance Km"},"estimated_duration_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estimated Duration Minutes"},"average_speed_kmh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Speed Kmh"},"status":{"anyOf":[{"$ref":"#/components/schemas/RouteStatus"},{"type":"null"}]}},"type":"object","title":"RouteUpdate","description":"Schema for updating a route."},"StopType":{"type":"string","enum":["terminal","regular","express_only"],"title":"StopType","description":"Stop type enumeration."},"Token":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type"}},"type":"object","required":["access_token","token_type"],"title":"Token"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/auth/login"}}}}}}