Skip to content

🔌 FastAPI REST API Referenca ​

FastAPi sloj (definisan u [api/server.py](file:///home/kizabgd/.gemini/extensions/ai-workflow-orchestrator/api/server.py)) obezbeđuje kompletan REST interfejs za asinhrono podnošenje workflow zahteva, nadgledanje procesa debata, upite nad forenzičkom memorijom i kontrolu token budžeta.


🚀 Bazne Rute i Swagger Dokumentacija ​

Kada se server pokrene lokalno (npr. preko python -m uvicorn api.server:app --port 7860), interaktivna dokumentacija je dostupna na:

  • Swagger UI: http://localhost:7860/api/docs
  • ReDoc: http://localhost:7860/api/redoc

📊 Pregled API Endpoint-ova ​

Sve rute su grupisane po funkcionalnim slojevima (Tagovima):

1. Grupa: System (Sistem) ​

GET /api/health ​

Vraća status operativnosti celokupnog sistema, uključujući status konekcije sa perzistentnim memorijskim slojem (MongoDB Atlas / SQLite).

  • Shema Odgovora (HealthResponse):
    json
    {
      "status": "operational",
      "memory_backend": "MongoDB Atlas",
      "gemini_model": "gemini-2.5-flash",
      "version": "1.0.0"
    }

2. Grupa: Workflow (Tokovi rada) ​

POST /api/workflow ​

Asinhrono pokreće kompletan 11-stepeni orkestracioni pipeline. Korisnički zahtev se prosleđuje u Background Task, a API odmah vraća ID posla (HTTP 202 Accepted) radi sprečavanja blokiranja niti.

  • Telo Zahteva (WorkflowRequest):
    json
    {
      "request": "Izgradi bezbednu Kubernetes admission kontrolu na GKE",
      "trace_id": "opciono-uuid-v4-string"
    }
  • Odgovor (HTTP 202):
    json
    {
      "job_id": "job_9b1deb4d-3b7d-4bad-9bdd-2b0e7b3d2b0e",
      "status": "accepted"
    }

GET /api/status/{job_id} ​

Omogućava "polling" (periodične upite) statusa pokrenutog debatnog posla.

  • Statusi poslova: created, running, completed, failed.
  • Primer Odgovora (completed):
    json
    {
      "job_id": "job_9b1deb4d-3b7d-4bad-9bdd-2b0e7b3d2b0e",
      "status": "completed",
      "result": {
        "trace_id": "673fbbfa-2fcd-40a2-9477-9be7365691c2",
        "workflow_id": "workflow_589b3f",
        "final_decision": "PROCEED: Consensus reached. Plan: Deploy securityContext with runAsNonRoot: true...",
        "confidence_score": 0.88,
        "message": "Workflow completed successfully"
      }
    }

3. Grupa: Memory (Memorija) ​

GET /api/debates ​

Vraća najnovije zabeležene debate i trace-ove direktno iz MongoDB Atlasa (ili lokalnog SQLite-a u slučaju failover-a).

  • Query Parametri: limit (Default: 5).
  • Primer Odgovora:
    json
    {
      "debates": [
        {
          "debate_id": "673fbbfa-2fcd-40a2-9477-9be7365691c2",
          "final_decision": "PROCEED: Consensus reached...",
          "confidence_score": 0.88,
          "created_at": "2026-05-18T17:05:30Z"
        }
      ],
      "backend": "MongoDB Atlas",
      "count": 1
    }

GET /api/memory/health ​

Detektuje i prikazuje taÄŤan broj dokumenata u Atlas kolekcijama (debates, arguments, decision_history).

  • Primer Odgovora:
    json
    {
      "status": "connected",
      "backend": "MongoDB Atlas",
      "database": "ai_workflow_orchestrator",
      "collections": {
        "debates": 142,
        "arguments": 710,
        "decisions": 48
      }
    }

4. Grupa: Security (Sigurnost & Tokeni) ​

GET /api/security/budget ​

Vraća statistiku o potrošnji tokena Gemini modela u tekućoj sesiji i status prekidača (Circuit Breaker).

  • Primer Odgovora:
    json
    {
      "input_tokens_consumed": 24050,
      "output_tokens_consumed": 8900,
      "total_tokens_consumed": 32950,
      "limit": 100000,
      "is_tripped": false
    }

POST /api/security/budget/reset ​

RuÄŤno resetuje brojaÄŤ sesijskih tokena na nulu, ÄŤime se otkljuÄŤava rad sistema nakon tripping incidenta.

  • Odgovor:
    json
    {
      "message": "Token budget reset successful.",
      "stats": {
        "input_tokens_consumed": 0,
        "output_tokens_consumed": 0,
        "total_tokens_consumed": 0,
        "limit": 100000,
        "is_tripped": false
      }
    }

POST /api/security/budget/limit ​

Omogućava dinamičku promenu token limita bez zaustavljanja ili restartovanja servera.

  • Telo Zahteva (BudgetLimitRequest):
    json
    {
      "limit": 200000
    }

Izgrađeno sa Nultim Poverenjem i Adversarial Poravnanjem.