PlanOpticon

planopticon / video_processor / api / openapi_spec.py
Source Blame History 183 lines
0981a08… noreply 1 """OpenAPI 3.0 specification stub for the PlanOpticon REST API."""
0981a08… noreply 2
0981a08… noreply 3
0981a08… noreply 4 def get_openapi_spec() -> dict:
0981a08… noreply 5 """Return an OpenAPI 3.0 spec dict for the planned PlanOpticon API."""
0981a08… noreply 6 return {
0981a08… noreply 7 "openapi": "3.0.3",
0981a08… noreply 8 "info": {
0981a08… noreply 9 "title": "PlanOpticon API",
0981a08… noreply 10 "version": "0.1.0",
0981a08… noreply 11 "description": "Video analysis and knowledge extraction REST API.",
0981a08… noreply 12 },
0981a08… noreply 13 "paths": {
0981a08… noreply 14 "/analyze": {
0981a08… noreply 15 "post": {
0981a08… noreply 16 "summary": "Submit a video for analysis",
0981a08… noreply 17 "operationId": "createAnalysis",
0981a08… noreply 18 "requestBody": {
0981a08… noreply 19 "required": True,
0981a08… noreply 20 "content": {
0981a08… noreply 21 "application/json": {
0981a08… noreply 22 "schema": {
0981a08… noreply 23 "type": "object",
0981a08… noreply 24 "required": ["video_url"],
0981a08… noreply 25 "properties": {
0981a08… noreply 26 "video_url": {"type": "string", "format": "uri"},
0981a08… noreply 27 "depth": {
0981a08… noreply 28 "type": "string",
0981a08… noreply 29 "enum": ["basic", "standard", "comprehensive"],
0981a08… noreply 30 },
0981a08… noreply 31 "focus_areas": {
0981a08… noreply 32 "type": "array",
0981a08… noreply 33 "items": {"type": "string"},
0981a08… noreply 34 },
0981a08… noreply 35 "webhook_url": {"type": "string", "format": "uri"},
0981a08… noreply 36 "speaker_hints": {
0981a08… noreply 37 "type": "array",
0981a08… noreply 38 "items": {"type": "string"},
0981a08… noreply 39 },
0981a08… noreply 40 },
0981a08… noreply 41 }
0981a08… noreply 42 }
0981a08… noreply 43 },
0981a08… noreply 44 },
0981a08… noreply 45 "responses": {
0981a08… noreply 46 "202": {
0981a08… noreply 47 "description": "Analysis job accepted",
0981a08… noreply 48 "content": {
0981a08… noreply 49 "application/json": {"schema": {"$ref": "#/components/schemas/Job"}}
0981a08… noreply 50 },
0981a08… noreply 51 }
0981a08… noreply 52 },
0981a08… noreply 53 }
0981a08… noreply 54 },
0981a08… noreply 55 "/jobs/{id}": {
0981a08… noreply 56 "get": {
0981a08… noreply 57 "summary": "Get analysis job status",
0981a08… noreply 58 "operationId": "getJob",
0981a08… noreply 59 "parameters": [
0981a08… noreply 60 {"name": "id", "in": "path", "required": True, "schema": {"type": "string"}}
0981a08… noreply 61 ],
0981a08… noreply 62 "responses": {
0981a08… noreply 63 "200": {
0981a08… noreply 64 "description": "Job status",
0981a08… noreply 65 "content": {
0981a08… noreply 66 "application/json": {"schema": {"$ref": "#/components/schemas/Job"}}
0981a08… noreply 67 },
0981a08… noreply 68 }
0981a08… noreply 69 },
0981a08… noreply 70 }
0981a08… noreply 71 },
0981a08… noreply 72 "/knowledge-graph/{id}/entities": {
0981a08… noreply 73 "get": {
0981a08… noreply 74 "summary": "List entities in a knowledge graph",
0981a08… noreply 75 "operationId": "listEntities",
0981a08… noreply 76 "parameters": [
0981a08… noreply 77 {
0981a08… noreply 78 "name": "id",
0981a08… noreply 79 "in": "path",
0981a08… noreply 80 "required": True,
0981a08… noreply 81 "schema": {"type": "string"},
0981a08… noreply 82 },
0981a08… noreply 83 {"name": "type", "in": "query", "schema": {"type": "string"}},
0981a08… noreply 84 ],
0981a08… noreply 85 "responses": {
0981a08… noreply 86 "200": {
0981a08… noreply 87 "description": "Entity list",
0981a08… noreply 88 "content": {
0981a08… noreply 89 "application/json": {
0981a08… noreply 90 "schema": {
0981a08… noreply 91 "type": "array",
0981a08… noreply 92 "items": {"$ref": "#/components/schemas/Entity"},
0981a08… noreply 93 }
0981a08… noreply 94 }
0981a08… noreply 95 },
0981a08… noreply 96 }
0981a08… noreply 97 },
0981a08… noreply 98 }
0981a08… noreply 99 },
0981a08… noreply 100 "/knowledge-graph/{id}/relationships": {
0981a08… noreply 101 "get": {
0981a08… noreply 102 "summary": "List relationships in a knowledge graph",
0981a08… noreply 103 "operationId": "listRelationships",
0981a08… noreply 104 "parameters": [
0981a08… noreply 105 {"name": "id", "in": "path", "required": True, "schema": {"type": "string"}}
0981a08… noreply 106 ],
0981a08… noreply 107 "responses": {
0981a08… noreply 108 "200": {
0981a08… noreply 109 "description": "Relationship list",
0981a08… noreply 110 "content": {
0981a08… noreply 111 "application/json": {
0981a08… noreply 112 "schema": {
0981a08… noreply 113 "type": "array",
0981a08… noreply 114 "items": {"$ref": "#/components/schemas/Relationship"},
0981a08… noreply 115 }
0981a08… noreply 116 }
0981a08… noreply 117 },
0981a08… noreply 118 }
0981a08… noreply 119 },
0981a08… noreply 120 }
0981a08… noreply 121 },
0981a08… noreply 122 "/knowledge-graph/{id}/query": {
0981a08… noreply 123 "get": {
0981a08… noreply 124 "summary": "Query the knowledge graph with natural language",
0981a08… noreply 125 "operationId": "queryKnowledgeGraph",
0981a08… noreply 126 "parameters": [
0981a08… noreply 127 {
0981a08… noreply 128 "name": "id",
0981a08… noreply 129 "in": "path",
0981a08… noreply 130 "required": True,
0981a08… noreply 131 "schema": {"type": "string"},
0981a08… noreply 132 },
0981a08… noreply 133 {
0981a08… noreply 134 "name": "q",
0981a08… noreply 135 "in": "query",
0981a08… noreply 136 "required": True,
0981a08… noreply 137 "schema": {"type": "string"},
0981a08… noreply 138 },
0981a08… noreply 139 ],
0981a08… noreply 140 "responses": {
0981a08… noreply 141 "200": {
0981a08… noreply 142 "description": "Query results",
0981a08… noreply 143 "content": {"application/json": {"schema": {"type": "object"}}},
0981a08… noreply 144 }
0981a08… noreply 145 },
0981a08… noreply 146 }
0981a08… noreply 147 },
0981a08… noreply 148 },
0981a08… noreply 149 "components": {
0981a08… noreply 150 "schemas": {
0981a08… noreply 151 "Job": {
0981a08… noreply 152 "type": "object",
0981a08… noreply 153 "properties": {
0981a08… noreply 154 "id": {"type": "string"},
0981a08… noreply 155 "status": {
0981a08… noreply 156 "type": "string",
0981a08… noreply 157 "enum": ["pending", "processing", "completed", "failed"],
0981a08… noreply 158 },
0981a08… noreply 159 "progress": {"type": "number", "format": "float"},
0981a08… noreply 160 "created_at": {"type": "string", "format": "date-time"},
0981a08… noreply 161 "completed_at": {"type": "string", "format": "date-time"},
0981a08… noreply 162 "result_url": {"type": "string", "format": "uri"},
0981a08… noreply 163 },
0981a08… noreply 164 },
0981a08… noreply 165 "Entity": {
0981a08… noreply 166 "type": "object",
0981a08… noreply 167 "properties": {
0981a08… noreply 168 "name": {"type": "string"},
0981a08… noreply 169 "type": {"type": "string"},
0981a08… noreply 170 "descriptions": {"type": "array", "items": {"type": "string"}},
0981a08… noreply 171 },
0981a08… noreply 172 },
0981a08… noreply 173 "Relationship": {
0981a08… noreply 174 "type": "object",
0981a08… noreply 175 "properties": {
0981a08… noreply 176 "source": {"type": "string"},
0981a08… noreply 177 "target": {"type": "string"},
0981a08… noreply 178 "type": {"type": "string"},
0981a08… noreply 179 },
0981a08… noreply 180 },
0981a08… noreply 181 }
0981a08… noreply 182 },
0981a08… noreply 183 }

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button