{ "openapi": "3.1.0", "info": { "title": "Omnigraph API", "description": "HTTP API for the Omnigraph graph database", "license": { "name": "MIT", "identifier": "MIT" }, "version": "0.2.2" }, "paths": { "/branches": { "get": { "tags": [ "branches" ], "operationId": "listBranches", "responses": { "200": { "description": "List of branches", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchListOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] }, "post": { "tags": [ "branches" ], "operationId": "createBranch", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchCreateRequest" } } }, "required": true }, "responses": { "200": { "description": "Branch created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchCreateOutput" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "409": { "description": "Branch already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/branches/merge": { "post": { "tags": [ "branches" ], "operationId": "mergeBranches", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchMergeRequest" } } }, "required": true }, "responses": { "200": { "description": "Branches merged", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchMergeOutput" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "409": { "description": "Merge conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/branches/{branch}": { "delete": { "tags": [ "branches" ], "operationId": "deleteBranch", "parameters": [ { "name": "branch", "in": "path", "description": "Branch name to delete", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Branch deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BranchDeleteOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "404": { "description": "Branch not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/change": { "post": { "tags": [ "mutations" ], "operationId": "change", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangeRequest" } } }, "required": true }, "responses": { "200": { "description": "Mutation results", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChangeOutput" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "409": { "description": "Merge conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/commits": { "get": { "tags": [ "commits" ], "operationId": "listCommits", "parameters": [ { "name": "branch", "in": "query", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "description": "List of commits", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CommitListOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/commits/{commit_id}": { "get": { "tags": [ "commits" ], "operationId": "getCommit", "parameters": [ { "name": "commit_id", "in": "path", "description": "Commit identifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Commit details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CommitOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "404": { "description": "Commit not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/export": { "post": { "tags": [ "queries" ], "operationId": "export", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExportRequest" } } }, "required": true }, "responses": { "200": { "description": "Exported data as NDJSON", "content": { "application/x-ndjson": {} } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/healthz": { "get": { "tags": [ "health" ], "operationId": "health", "responses": { "200": { "description": "Server is healthy", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthOutput" } } } } } } }, "/ingest": { "post": { "tags": [ "mutations" ], "operationId": "ingest", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngestRequest" } } }, "required": true }, "responses": { "200": { "description": "Ingest results", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngestOutput" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/read": { "post": { "tags": [ "queries" ], "operationId": "read", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadRequest" } } }, "required": true }, "responses": { "200": { "description": "Query results", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadOutput" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/runs": { "get": { "tags": [ "runs" ], "operationId": "listRuns", "responses": { "200": { "description": "List of runs", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunListOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/runs/{run_id}": { "get": { "tags": [ "runs" ], "operationId": "getRun", "parameters": [ { "name": "run_id", "in": "path", "description": "Run identifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Run details", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "404": { "description": "Run not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/runs/{run_id}/abort": { "post": { "tags": [ "runs" ], "operationId": "abortRun", "parameters": [ { "name": "run_id", "in": "path", "description": "Run identifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Run aborted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "404": { "description": "Run not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/runs/{run_id}/publish": { "post": { "tags": [ "runs" ], "operationId": "publishRun", "parameters": [ { "name": "run_id", "in": "path", "description": "Run identifier", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Run published", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RunOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "404": { "description": "Run not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/schema": { "get": { "tags": [ "schema" ], "operationId": "getSchema", "responses": { "200": { "description": "Current schema source", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/schema/apply": { "post": { "tags": [ "mutations" ], "operationId": "applySchema", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaApplyRequest" } } }, "required": true }, "responses": { "200": { "description": "Schema apply results", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SchemaApplyOutput" } } } }, "400": { "description": "Bad request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } }, "/snapshot": { "get": { "tags": [ "snapshots" ], "operationId": "getSnapshot", "parameters": [ { "name": "branch", "in": "query", "required": false, "schema": { "type": [ "string", "null" ] } } ], "responses": { "200": { "description": "Database snapshot", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnapshotOutput" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorOutput" } } } } }, "security": [ { "bearer_token": [] } ] } } }, "components": { "schemas": { "BranchCreateOutput": { "type": "object", "required": [ "uri", "from", "name" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "from": { "type": "string" }, "name": { "type": "string" }, "uri": { "type": "string" } } }, "BranchCreateRequest": { "type": "object", "required": [ "name" ], "properties": { "from": { "type": [ "string", "null" ] }, "name": { "type": "string" } } }, "BranchDeleteOutput": { "type": "object", "required": [ "uri", "name" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "uri": { "type": "string" } } }, "BranchListOutput": { "type": "object", "required": [ "branches" ], "properties": { "branches": { "type": "array", "items": { "type": "string" } } } }, "BranchMergeOutcome": { "type": "string", "enum": [ "already_up_to_date", "fast_forward", "merged" ] }, "BranchMergeOutput": { "type": "object", "required": [ "source", "target", "outcome" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "outcome": { "$ref": "#/components/schemas/BranchMergeOutcome" }, "source": { "type": "string" }, "target": { "type": "string" } } }, "BranchMergeRequest": { "type": "object", "required": [ "source" ], "properties": { "source": { "type": "string" }, "target": { "type": [ "string", "null" ] } } }, "ChangeOutput": { "type": "object", "required": [ "branch", "query_name", "affected_nodes", "affected_edges" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "affected_edges": { "type": "integer", "minimum": 0 }, "affected_nodes": { "type": "integer", "minimum": 0 }, "branch": { "type": "string" }, "query_name": { "type": "string" } } }, "ChangeRequest": { "type": "object", "required": [ "query_source" ], "properties": { "branch": { "type": [ "string", "null" ] }, "params": {}, "query_name": { "type": [ "string", "null" ] }, "query_source": { "type": "string" } } }, "CommitListOutput": { "type": "object", "required": [ "commits" ], "properties": { "commits": { "type": "array", "items": { "$ref": "#/components/schemas/CommitOutput" } } } }, "CommitOutput": { "type": "object", "required": [ "graph_commit_id", "manifest_version", "created_at" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "created_at": { "type": "integer", "format": "int64" }, "graph_commit_id": { "type": "string" }, "manifest_branch": { "type": [ "string", "null" ] }, "manifest_version": { "type": "integer", "format": "int64", "minimum": 0 }, "merged_parent_commit_id": { "type": [ "string", "null" ] }, "parent_commit_id": { "type": [ "string", "null" ] } } }, "ErrorCode": { "type": "string", "enum": [ "unauthorized", "forbidden", "bad_request", "not_found", "conflict", "internal" ] }, "ErrorOutput": { "type": "object", "required": [ "error" ], "properties": { "code": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/ErrorCode" } ] }, "error": { "type": "string" }, "merge_conflicts": { "type": "array", "items": { "$ref": "#/components/schemas/MergeConflictOutput" } } } }, "ExportRequest": { "type": "object", "properties": { "branch": { "type": [ "string", "null" ] }, "table_keys": { "type": "array", "items": { "type": "string" } }, "type_names": { "type": "array", "items": { "type": "string" } } } }, "HealthOutput": { "type": "object", "required": [ "status", "version" ], "properties": { "source_version": { "type": [ "string", "null" ] }, "status": { "type": "string" }, "version": { "type": "string" } } }, "IngestOutput": { "type": "object", "required": [ "uri", "branch", "base_branch", "branch_created", "mode", "tables" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "base_branch": { "type": "string" }, "branch": { "type": "string" }, "branch_created": { "type": "boolean" }, "mode": { "$ref": "#/components/schemas/LoadMode" }, "tables": { "type": "array", "items": { "$ref": "#/components/schemas/IngestTableOutput" } }, "uri": { "type": "string" } } }, "IngestRequest": { "type": "object", "required": [ "data" ], "properties": { "branch": { "type": [ "string", "null" ] }, "data": { "type": "string" }, "from": { "type": [ "string", "null" ] }, "mode": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/LoadMode" } ] } } }, "IngestTableOutput": { "type": "object", "required": [ "table_key", "rows_loaded" ], "properties": { "rows_loaded": { "type": "integer", "minimum": 0 }, "table_key": { "type": "string" } } }, "LoadMode": { "type": "string", "description": "Shadow enum for documenting [`LoadMode`] in the OpenAPI schema.", "enum": [ "overwrite", "append", "merge" ] }, "MergeConflictKindOutput": { "type": "string", "enum": [ "divergent_insert", "divergent_update", "delete_vs_update", "orphan_edge", "unique_violation", "cardinality_violation", "value_constraint_violation" ] }, "MergeConflictOutput": { "type": "object", "required": [ "table_key", "kind", "message" ], "properties": { "kind": { "$ref": "#/components/schemas/MergeConflictKindOutput" }, "message": { "type": "string" }, "row_id": { "type": [ "string", "null" ] }, "table_key": { "type": "string" } } }, "ReadOutput": { "type": "object", "required": [ "query_name", "target", "row_count", "rows" ], "properties": { "columns": { "type": "array", "items": { "type": "string" } }, "query_name": { "type": "string" }, "row_count": { "type": "integer", "minimum": 0 }, "rows": {}, "target": { "$ref": "#/components/schemas/ReadTargetOutput" } } }, "ReadRequest": { "type": "object", "required": [ "query_source" ], "properties": { "branch": { "type": [ "string", "null" ] }, "params": {}, "query_name": { "type": [ "string", "null" ] }, "query_source": { "type": "string" }, "snapshot": { "type": [ "string", "null" ] } } }, "ReadTargetOutput": { "type": "object", "properties": { "branch": { "type": [ "string", "null" ] }, "snapshot": { "type": [ "string", "null" ] } } }, "RunListOutput": { "type": "object", "required": [ "runs" ], "properties": { "runs": { "type": "array", "items": { "$ref": "#/components/schemas/RunOutput" } } } }, "RunOutput": { "type": "object", "required": [ "run_id", "target_branch", "run_branch", "base_snapshot_id", "base_manifest_version", "status", "created_at", "updated_at" ], "properties": { "actor_id": { "type": [ "string", "null" ] }, "base_manifest_version": { "type": "integer", "format": "int64", "minimum": 0 }, "base_snapshot_id": { "type": "string" }, "created_at": { "type": "integer", "format": "int64" }, "operation_hash": { "type": [ "string", "null" ] }, "published_snapshot_id": { "type": [ "string", "null" ] }, "run_branch": { "type": "string" }, "run_id": { "type": "string" }, "status": { "type": "string" }, "target_branch": { "type": "string" }, "updated_at": { "type": "integer", "format": "int64" } } }, "SchemaApplyOutput": { "type": "object", "required": [ "uri", "supported", "applied", "step_count", "manifest_version", "steps" ], "properties": { "applied": { "type": "boolean" }, "manifest_version": { "type": "integer", "format": "int64", "minimum": 0 }, "step_count": { "type": "integer", "minimum": 0 }, "steps": { "type": "array", "items": {} }, "supported": { "type": "boolean" }, "uri": { "type": "string" } } }, "SchemaApplyRequest": { "type": "object", "required": [ "schema_source" ], "properties": { "schema_source": { "type": "string" } } }, "SchemaOutput": { "type": "object", "required": [ "schema_source" ], "properties": { "schema_source": { "type": "string" } } }, "SnapshotOutput": { "type": "object", "required": [ "branch", "manifest_version", "tables" ], "properties": { "branch": { "type": "string" }, "manifest_version": { "type": "integer", "format": "int64", "minimum": 0 }, "tables": { "type": "array", "items": { "$ref": "#/components/schemas/SnapshotTableOutput" } } } }, "SnapshotTableOutput": { "type": "object", "required": [ "table_key", "table_path", "table_version", "row_count" ], "properties": { "row_count": { "type": "integer", "format": "int64", "minimum": 0 }, "table_branch": { "type": [ "string", "null" ] }, "table_key": { "type": "string" }, "table_path": { "type": "string" }, "table_version": { "type": "integer", "format": "int64", "minimum": 0 } } } }, "securitySchemes": { "bearer_token": { "type": "http", "scheme": "bearer" } } } }