Download docs/docs.go from ishaq101/Orchestrator-Agent-Service: direct link, hf CLI and curl.
- Browser
- Download file 89.9 kB
-
https://huggingface.co/spaces/ishaq101/Orchestrator-Agent-Service/resolve/main/docs/docs.go
- Command line
-
hf download hf://spaces/ishaq101/Orchestrator-Agent-Service/docs/docs.go
-
curl -L -o docs.go https://huggingface.co/spaces/ishaq101/Orchestrator-Agent-Service/resolve/main/docs/docs.go
89.9 kB
| // Package docs Code generated by swaggo/swag. DO NOT EDIT | |
| package docs | |
| import "github.com/swaggo/swag" | |
| const docTemplate = `{ | |
| "schemes": {{ marshal .Schemes }}, | |
| "swagger": "2.0", | |
| "info": { | |
| "description": "{{escape .Description}}", | |
| "title": "{{.Title}}", | |
| "contact": { | |
| "name": "Maintiva" | |
| }, | |
| "version": "{{.Version}}" | |
| }, | |
| "host": "{{.Host}}", | |
| "basePath": "{{.BasePath}}", | |
| "paths": { | |
| "/api/login": { | |
| "post": { | |
| "description": "Verifikasi email dan password, lalu mengembalikan profil user, access_token Bearer 1 jam, dan refresh_token 7 hari.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "auth" | |
| ], | |
| "summary": "Login user and issue token pair", | |
| "parameters": [ | |
| { | |
| "description": "Login credentials", | |
| "name": "body", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/auth.loginRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/auth.AuthResult" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/refresh": { | |
| "post": { | |
| "description": "Menggunakan refresh_token aktif untuk menerbitkan access_token baru dan refresh_token pengganti. Refresh token lama tidak dapat dipakai ulang.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "auth" | |
| ], | |
| "summary": "Rotate refresh token and issue token pair", | |
| "parameters": [ | |
| { | |
| "description": "Refresh token", | |
| "name": "body", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/auth.refreshRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/auth.AuthResult" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/auth.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/analyses": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengembalikan daftar analysis milik authenticated user. Default status adalah active.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analyses" | |
| ], | |
| "summary": "List analysis user", | |
| "parameters": [ | |
| { | |
| "enum": [ | |
| "active", | |
| "inactive" | |
| ], | |
| "type": "string", | |
| "description": "Filter status: active atau inactive", | |
| "name": "status", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 1, | |
| "description": "Nomor halaman", | |
| "name": "page", | |
| "in": "query" | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 20, | |
| "description": "Jumlah item per halaman, maksimal 100", | |
| "name": "limit", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Membuat analysis aktif dengan business_questions dan minimal satu data source yang sudah dimiliki authenticated user.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analyses" | |
| ], | |
| "summary": "Buat analysis baru", | |
| "parameters": [ | |
| { | |
| "description": "Payload analysis baru", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/api.CreateAnalysisRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Analysis" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "409": { | |
| "description": "Limit active analysis tercapai", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/analyses/{id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengambil satu analysis berdasarkan ID dan authenticated user. Analysis milik user lain tidak akan dikembalikan.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analyses" | |
| ], | |
| "summary": "Ambil detail analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Analysis" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Menghapus analysis milik authenticated user.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analyses" | |
| ], | |
| "summary": "Hapus analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "204": { | |
| "description": "No Content" | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "patch": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengubah judul, objective, atau status analysis. Status hanya active atau inactive.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analyses" | |
| ], | |
| "summary": "Update metadata analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Field yang ingin diubah", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/api.UpdateAnalysisRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Analysis" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/analyses/{id}/data-bind": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengganti daftar data source yang ter-bind ke analysis secara atomic menggunakan expected_version. Minimal satu data source harus tersisa dan semua source harus milik authenticated user.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analyses" | |
| ], | |
| "summary": "Update data source binding analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Versi dan daftar data source baru", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/api.UpdateDataBindRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/models.Analysis" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "409": { | |
| "description": "Stale version, inactive analysis, atau limit violation", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/analyses/{id}/data-catalog": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengembalikan data catalog yang scoped ke analysis dan authenticated user. Catalog ini mengikuti data_bind analysis, bukan seluruh catalog user. Response menyertakan \"warnings\" untuk table/sheet yang dipilih pada data_bind namun saat ini tidak ditemukan di data catalog user.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "data-catalog" | |
| ], | |
| "summary": "Ambil catalog data analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/analyses/{id}/data-catalog/rebuild": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Membangun ulang data catalog scope analysis berdasarkan data_bind analysis milik authenticated user, dengan mengindeks dari data catalog user (scope_type=user) tanpa introspection/re-profiling ulang. Response menyertakan \"warnings\" untuk table/sheet yang dipilih namun tidak lagi ada di source.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "data-catalog" | |
| ], | |
| "summary": "Rebuild catalog data analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/analyses/{id}/messages": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengambil riwayat percakapan analysis milik authenticated user dari analyses_messages. Setiap pesan menyertakan status (success|failed) dan note (hanya terisi jika status=failed).", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analysis-messages" | |
| ], | |
| "summary": "List pesan analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "integer", | |
| "default": 100, | |
| "description": "Jumlah pesan, maksimal 100", | |
| "name": "limit", | |
| "in": "query" | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Menyimpan tepat satu pesan role=user atau role=ai ke analyses_messages. Endpoint ini tidak memanggil agentic backend dan tidak membuat balasan AI otomatis. Untuk role=ai, message_id wajib diisi; jika kosong, pesan tetap tersimpan (201) namun dengan status=failed, message_id default, dan content fallback hardcoded. Untuk role=user, message_id TIDAK PERLU dikirim frontend dan selalu diabaikan — message_id selalu memakai nilai default (system-generated).", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "analysis-messages" | |
| ], | |
| "summary": "Tambah pesan conversation analysis", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Analysis ID", | |
| "name": "id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "description": "Pesan conversation", | |
| "name": "request", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "$ref": "#/definitions/api.CreateMessageRequest" | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "401": { | |
| "description": "Unauthorized", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "409": { | |
| "description": "Analysis inactive", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/data-catalog/rebuild": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Reintrospect semua sumber data (DB clients + dokumen tabular) dan bangun ulang catalog", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "data-catalog" | |
| ], | |
| "summary": "Rebuild seluruh catalog user", | |
| "parameters": [ | |
| { | |
| "description": "User ID", | |
| "name": "body", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "429": { | |
| "description": "Rate limit exceeded", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/data-catalog/{user_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengembalikan index catalog (sources saja, tanpa detail tabel)", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "data-catalog" | |
| ], | |
| "summary": "Ambil catalog data user", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/data-catalog/{user_id}/sources/{source_id}/tables": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengembalikan daftar table (database) atau sheet (xlsx/csv) milik satu source dari data catalog user, tanpa introspection/re-profiling ulang. Dipakai UI sebelum melakukan binding table selection ke analysis.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "data-catalog" | |
| ], | |
| "summary": "List table/sheet selection untuk sebuah source", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Source ID (document ID atau database client ID)", | |
| "name": "source_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Source belum ter-ingest ke data catalog", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/database-clients": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Enkripsi credentials dan simpan. Jika sudah ada koneksi dengan identity yang sama, kembalikan yang existing (HTTP 200).", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "Daftarkan koneksi database baru", | |
| "parameters": [ | |
| { | |
| "description": "Database connection info", | |
| "name": "body", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "credentials": { | |
| "type": "object" | |
| }, | |
| "db_type": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "Duplicate — returning existing", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/database_clients.DBClient" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "201": { | |
| "description": "Created", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/database_clients.DBClient" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "429": { | |
| "description": "Rate limit exceeded", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/database-clients/dbtypes": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mengembalikan semua tipe database beserta schema field yang dibutuhkan untuk membuat koneksi. Gunakan untuk render form dinamis di frontend.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "List tipe database yang didukung beserta definisi field kredensial", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/database_clients.DBTypeInfo" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/database-clients/{client_id}": { | |
| "put": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "Update koneksi database", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Client ID", | |
| "name": "client_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "User ID (ownership check)", | |
| "name": "user_id", | |
| "in": "query", | |
| "required": true | |
| }, | |
| { | |
| "description": "Fields to update", | |
| "name": "body", | |
| "in": "body", | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "credentials": { | |
| "type": "object" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/database_clients.DBClient" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| }, | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Menghapus koneksi dan memicu pembersihan catalog", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "Hapus koneksi database", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Client ID", | |
| "name": "client_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "User ID (ownership check)", | |
| "name": "user_id", | |
| "in": "query", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/database-clients/{client_id}/ingest": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "Introspect schema database dan simpan ke catalog", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "Client ID", | |
| "name": "client_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "User ID (ownership check)", | |
| "name": "user_id", | |
| "in": "query", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "409": { | |
| "description": "Client is inactive", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "429": { | |
| "description": "Rate limit exceeded", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/database-clients/{user_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "List koneksi database milik user", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/database_clients.DBClient" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/database-clients/{user_id}/{client_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "database-clients" | |
| ], | |
| "summary": "Ambil detail satu koneksi database", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| }, | |
| { | |
| "type": "string", | |
| "description": "Client ID", | |
| "name": "client_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/database_clients.DBClient" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/document/delete": { | |
| "delete": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Menghapus file dari object storage, embeddings, Parquet, dan record database", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "documents" | |
| ], | |
| "summary": "Hapus dokumen", | |
| "parameters": [ | |
| { | |
| "description": "Document ID dan User ID", | |
| "name": "body", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "document_id": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/document/process": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Processing berjalan di background. Response 202 dikembalikan segera setelah validasi. Pantau progress via GET /api/v1/documents/{user_id}.", | |
| "consumes": [ | |
| "application/json" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "documents" | |
| ], | |
| "summary": "Proses dokumen secara async (extract text / convert ke Parquet)", | |
| "parameters": [ | |
| { | |
| "description": "Document ID dan User ID", | |
| "name": "body", | |
| "in": "body", | |
| "required": true, | |
| "schema": { | |
| "type": "object", | |
| "properties": { | |
| "document_id": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| } | |
| ], | |
| "responses": { | |
| "202": { | |
| "description": "Accepted", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/documents.ProcessResult" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "403": { | |
| "description": "Forbidden", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "404": { | |
| "description": "Not Found", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/document/upload": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Mendukung pdf, docx, txt, csv, xlsx. Maksimum 10 MB. Stream ke private object storage tanpa mengubah kontrak upload frontend.", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "documents" | |
| ], | |
| "summary": "Upload dokumen ke private object storage", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "file", | |
| "description": "File dokumen", | |
| "name": "file", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "$ref": "#/definitions/documents.Document" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/document/upload-local": { | |
| "post": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "description": "Sama seperti /upload tetapi menyimpan file ke folder files/ lokal. Digunakan untuk membandingkan performa vs private object storage.", | |
| "consumes": [ | |
| "multipart/form-data" | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "documents" | |
| ], | |
| "summary": "Upload dokumen ke local filesystem (benchmarking)", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "formData", | |
| "required": true | |
| }, | |
| { | |
| "type": "file", | |
| "description": "File dokumen", | |
| "name": "file", | |
| "in": "formData", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "201": { | |
| "description": "Created", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "400": { | |
| "description": "Bad Request", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/documents/doctypes": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "documents" | |
| ], | |
| "summary": "List tipe dokumen yang didukung", | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/documents.DocTypeInfo" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/api/v1/documents/{user_id}": { | |
| "get": { | |
| "security": [ | |
| { | |
| "BearerAuth": [] | |
| } | |
| ], | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "documents" | |
| ], | |
| "summary": "List dokumen milik user", | |
| "parameters": [ | |
| { | |
| "type": "string", | |
| "description": "User ID", | |
| "name": "user_id", | |
| "in": "path", | |
| "required": true | |
| } | |
| ], | |
| "responses": { | |
| "200": { | |
| "description": "OK", | |
| "schema": { | |
| "allOf": [ | |
| { | |
| "$ref": "#/definitions/api.APIResponse" | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "data": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/documents.Document" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| }, | |
| "500": { | |
| "description": "Internal Server Error", | |
| "schema": { | |
| "$ref": "#/definitions/api.APIResponse" | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "/health": { | |
| "get": { | |
| "description": "Returns holistic readiness and dependency health for the service.", | |
| "produces": [ | |
| "application/json" | |
| ], | |
| "tags": [ | |
| "system" | |
| ], | |
| "summary": "Health check", | |
| "responses": { | |
| "200": { | |
| "description": "Health report", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": true | |
| } | |
| }, | |
| "503": { | |
| "description": "Critical dependency unavailable", | |
| "schema": { | |
| "type": "object", | |
| "additionalProperties": true | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| "definitions": { | |
| "api.APIResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": {}, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "warnings": {} | |
| } | |
| }, | |
| "api.CreateAnalysisRequest": { | |
| "type": "object", | |
| "required": [ | |
| "analysis_title", | |
| "business_questions", | |
| "data_bind", | |
| "objective" | |
| ], | |
| "properties": { | |
| "analysis_title": { | |
| "type": "string" | |
| }, | |
| "business_questions": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "data_bind": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.DataBindItem" | |
| } | |
| }, | |
| "objective": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.CreateMessageRequest": { | |
| "type": "object", | |
| "properties": { | |
| "content": { | |
| "type": "string" | |
| }, | |
| "message_id": { | |
| "description": "MessageID is required for role=ai; it is always ignored for role=user,\nwhich gets a system-generated message_id regardless of any value sent here.", | |
| "type": "string" | |
| }, | |
| "role": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.CreateSessionRequest": { | |
| "type": "object", | |
| "properties": { | |
| "framework_id": { | |
| "type": "string" | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "mode": { | |
| "type": "string" | |
| }, | |
| "room_id": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.CreateSessionResponse": { | |
| "type": "object", | |
| "properties": { | |
| "first_question": { | |
| "type": "string" | |
| }, | |
| "framework_id": { | |
| "type": "string" | |
| }, | |
| "opening_message": { | |
| "type": "string" | |
| }, | |
| "room_id": { | |
| "type": "string" | |
| }, | |
| "session_id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.ErrorResponse": { | |
| "type": "object", | |
| "properties": { | |
| "error": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.FinishSessionResponse": { | |
| "type": "object", | |
| "properties": { | |
| "result": { | |
| "$ref": "#/definitions/api.InterviewResultDTO" | |
| }, | |
| "room_id": { | |
| "type": "string" | |
| }, | |
| "session_id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.InterviewResultDTO": { | |
| "type": "object", | |
| "properties": { | |
| "ended_at": { | |
| "type": "string" | |
| }, | |
| "framework_name": { | |
| "type": "string" | |
| }, | |
| "goals": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "key_insights": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "mode": { | |
| "type": "string" | |
| }, | |
| "section_results": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/api.SectionResultDTO" | |
| } | |
| }, | |
| "started_at": { | |
| "type": "string" | |
| }, | |
| "summary": { | |
| "type": "string" | |
| }, | |
| "unresolved_items": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| } | |
| } | |
| }, | |
| "api.QAPairDTO": { | |
| "type": "object", | |
| "properties": { | |
| "answer_cleaned": { | |
| "type": "string" | |
| }, | |
| "follow_ups": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/api.QAPairDTO" | |
| } | |
| }, | |
| "question_text": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.RoomSessionResponse": { | |
| "type": "object", | |
| "properties": { | |
| "framework_id": { | |
| "type": "string" | |
| }, | |
| "framework_name": { | |
| "type": "string" | |
| }, | |
| "language": { | |
| "type": "string" | |
| }, | |
| "mode": { | |
| "type": "string" | |
| }, | |
| "room_id": { | |
| "type": "string" | |
| }, | |
| "session_id": { | |
| "type": "string" | |
| }, | |
| "started_at": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "turns": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/api.TurnDTO" | |
| } | |
| } | |
| } | |
| }, | |
| "api.SectionResultDTO": { | |
| "type": "object", | |
| "properties": { | |
| "objective": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "qa_pairs": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/api.QAPairDTO" | |
| } | |
| }, | |
| "section_summary": { | |
| "type": "string" | |
| }, | |
| "section_title": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.SendTextRequest": { | |
| "type": "object", | |
| "properties": { | |
| "message": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.SendTextResponse": { | |
| "type": "object", | |
| "properties": { | |
| "finished": { | |
| "type": "boolean" | |
| }, | |
| "reply": { | |
| "type": "string" | |
| }, | |
| "stage": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.TurnDTO": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "speaker": { | |
| "type": "string" | |
| }, | |
| "text": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.UpdateAnalysisRequest": { | |
| "type": "object", | |
| "properties": { | |
| "analysis_title": { | |
| "type": "string" | |
| }, | |
| "objective": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "api.UpdateDataBindRequest": { | |
| "type": "object", | |
| "properties": { | |
| "data_bind": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.DataBindItem" | |
| } | |
| }, | |
| "expected_version": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "auth.APIResponse": { | |
| "type": "object", | |
| "properties": { | |
| "data": {}, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "auth.AuthResult": { | |
| "type": "object", | |
| "properties": { | |
| "access_token": { | |
| "type": "string" | |
| }, | |
| "expires_in": { | |
| "type": "integer" | |
| }, | |
| "refresh_expires_in": { | |
| "type": "integer" | |
| }, | |
| "refresh_token": { | |
| "type": "string" | |
| }, | |
| "token_type": { | |
| "type": "string" | |
| }, | |
| "user": { | |
| "$ref": "#/definitions/auth.User" | |
| } | |
| } | |
| }, | |
| "auth.User": { | |
| "type": "object", | |
| "properties": { | |
| "company": { | |
| "type": "string" | |
| }, | |
| "company_size": { | |
| "type": "string" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "email": { | |
| "type": "string" | |
| }, | |
| "fullname": { | |
| "type": "string" | |
| }, | |
| "function": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "role": { | |
| "type": "string" | |
| }, | |
| "site": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "auth.loginRequest": { | |
| "type": "object", | |
| "properties": { | |
| "email": { | |
| "type": "string" | |
| }, | |
| "password": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "auth.refreshRequest": { | |
| "type": "object", | |
| "properties": { | |
| "refresh_token": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "database_clients.DBClient": { | |
| "type": "object", | |
| "properties": { | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "credentials": { | |
| "type": "object", | |
| "additionalProperties": {} | |
| }, | |
| "db_type": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "updated_at": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "database_clients.DBFieldDef": { | |
| "type": "object", | |
| "properties": { | |
| "default": {}, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "options": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "required": { | |
| "type": "boolean" | |
| }, | |
| "sensitive": { | |
| "type": "boolean" | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "database_clients.DBTypeInfo": { | |
| "type": "object", | |
| "properties": { | |
| "db_type": { | |
| "type": "string" | |
| }, | |
| "display_name": { | |
| "type": "string" | |
| }, | |
| "fields": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/database_clients.DBFieldDef" | |
| } | |
| }, | |
| "logo": { | |
| "type": "string" | |
| }, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "description": "active | inactive", | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "documents.DocTypeInfo": { | |
| "type": "object", | |
| "properties": { | |
| "max_size_mb": { | |
| "type": "integer" | |
| }, | |
| "message": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string", | |
| "enum": [ | |
| "active", | |
| "inactive" | |
| ] | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "documents.Document": { | |
| "type": "object", | |
| "properties": { | |
| "blob_name": { | |
| "type": "string" | |
| }, | |
| "chunks_count": { | |
| "type": "integer" | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "error_message": { | |
| "type": "string" | |
| }, | |
| "file_size": { | |
| "type": "integer" | |
| }, | |
| "file_type": { | |
| "type": "string" | |
| }, | |
| "filename": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "processed_at": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "documents.ProcessResult": { | |
| "type": "object", | |
| "properties": { | |
| "document_id": { | |
| "type": "string" | |
| }, | |
| "file_type": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Analysis": { | |
| "type": "object", | |
| "properties": { | |
| "analysis_title": { | |
| "type": "string" | |
| }, | |
| "business_questions": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "created_at": { | |
| "type": "string" | |
| }, | |
| "data_bind": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.DataBindItem" | |
| } | |
| }, | |
| "data_bind_version": { | |
| "type": "integer" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "objective": { | |
| "type": "string" | |
| }, | |
| "report_collection": { | |
| "type": "array", | |
| "items": { | |
| "$ref": "#/definitions/models.ReportCollectionItem" | |
| } | |
| }, | |
| "report_id": { | |
| "type": "string" | |
| }, | |
| "status": { | |
| "type": "string" | |
| }, | |
| "updated_at": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.DataBindItem": { | |
| "type": "object", | |
| "properties": { | |
| "group_type": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "tables": { | |
| "type": "array", | |
| "items": { | |
| "type": "string" | |
| } | |
| }, | |
| "type": { | |
| "type": "string" | |
| } | |
| } | |
| }, | |
| "models.Report": { | |
| "type": "object", | |
| "properties": { | |
| "analysis_id": { | |
| "type": "string" | |
| }, | |
| "content": { | |
| "type": "string" | |
| }, | |
| "generated_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| }, | |
| "user_id": { | |
| "type": "string" | |
| }, | |
| "version": { | |
| "type": "integer" | |
| } | |
| } | |
| }, | |
| "models.ReportCollectionItem": { | |
| "type": "object", | |
| "properties": { | |
| "generated_at": { | |
| "type": "string" | |
| }, | |
| "id": { | |
| "type": "string" | |
| }, | |
| "title": { | |
| "type": "string" | |
| }, | |
| "version": { | |
| "type": "integer" | |
| } | |
| } | |
| } | |
| }, | |
| "securityDefinitions": { | |
| "BearerAuth": { | |
| "description": "Type \"Bearer \" followed by a valid access token from /api/login or /api/refresh.", | |
| "type": "apiKey", | |
| "name": "Authorization", | |
| "in": "header" | |
| } | |
| } | |
| }` | |
| // SwaggerInfo holds exported Swagger Info so clients can modify it | |
| var SwaggerInfo = &swag.Spec{ | |
| Version: "1.0", | |
| Host: "localhost:8081", | |
| BasePath: "/", | |
| Schemes: []string{}, | |
| Title: "Orchestrator Agent API", | |
| Description: "Backend service untuk Analysis, documents, database clients, catalog, auth, and knowledge ingestion endpoints.", | |
| InfoInstanceName: "swagger", | |
| SwaggerTemplate: docTemplate, | |
| LeftDelim: "{{", | |
| RightDelim: "}}", | |
| } | |
| func init() { | |
| swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) | |
| } | |