didi-lot2-backend/backend/services/orchestration-layer/agent-v3/openapi.yaml
2026-07-10 03:39:53 -07:00

4725 lines
134 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

openapi: 3.0.3
info:
title: DIDI Agent V3 — Pipeline Orchestration & Execution API
version: 3.0.0
description: 'API-ul motorului de analiză a dezinformării DIDI (Lot 2 — Modulele 13).
Toate endpoint-urile de analiză sunt asincrone (dispatch pe RabbitMQ, răspuns 202 + poll).
Pipeline = workflow cu dependențe explicite: intake → [media_preprocess] → {techniques ∥ ai_tampered ∥ claims
∥ domain} → verdict → persist.
Include dry-run, cancel, resume din checkpoint, istoric și coada de moderare HIL.
Autentificare: JWT Keycloak RS256 (verificat criptografic în backend, nu doar la gateway).'
servers:
- url: http://localhost:18000/agent-v3
description: Kong API Gateway (JWT enforced) — punctul unic de intrare public
tags:
- name: ai-tampered
- name: claims
- name: core
- name: domain
- name: health
- name: media
- name: moderation
- name: pipeline
- name: source-assessment
- name: techniques
security:
- bearerAuth: []
# =============================================================================
# Integrare cu Lotul 1 (Platforma AI) — dependențe OUTBOUND ale agent-v3.
# Nu sunt rute expuse de acest serviciu, ci servicii AI consumate prin HTTP pe
# rețeaua Docker `didi-network` (adresare pe nume de container). Fiecare integrare
# este fail-open (degradare grațioasă la indisponibilitate). Starea lor live este
# expusă prin GET /api/v3/health/all. Testele de integrare: raport 04 (Lot1↔Lot2).
# =============================================================================
x-integrations:
network: didi-network
contract: fail-open (timeout/indisponibil ⇒ degradare grațioasă, analiza nu eșuează)
health_probe: /api/v3/health/all
services:
- key: llm
env: LLM_ROUTER_URL
target: http://llm-api:14011
role: Modele LLM text (Qwen 3.5 local, vLLM) — analiză + explicație verdict
- key: vision
env: VISION_LLM_URL
target: http://llm-api:14011
role: OCR / analiză imagine (Qwen vision)
- key: whisper
env: M17_WHISPER_URL
target: http://audio-api:54300
role: Transcriere audio (Whisper large-v3)
- key: video
env: VIDEO_ANALYSIS_URL
target: http://video-api:54600
role: Detecție deepfake video (BusterX)
- key: extractors
env: EXTRACTORS_URL
target: http://extractors:54400
role: EXIF/ELA/spectrogramă, NER, YOLO, OCR
- key: forensic
env: FORENSIC_API_URL
target: http://forensic:8080
role: Trăsături forensice media (rPPG/lip-sync/forgery)
- key: brain
env: DIDI_BRAIN_URL
target: http://brain-api:8090
role: Cache verificare + RAG (fact-checking)
- key: web
env: M17_WEB_API_URL
target: http://web-api:51100
role: Căutare web pentru claims/surse (evidence)
- key: domain_check
env: DOMAIN_CHECK_API_URL
target: http://domain-check-api:11000
role: WHOIS/DNS/SSL/blacklist domeniu — scor credibilitate sursă (T4)
paths:
/:
get:
summary: Citește root
tags:
- core
security: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/ai-tampered/analyze:
post:
summary: Creează / execută analyze
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/ai-tampered/analyze-async:
post:
summary: Creează / execută analyze async
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/ai-tampered/analyze-image:
post:
summary: Creează / execută analyze image
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/ai-tampered/analyze-media:
post:
summary: Creează / execută analyze media
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/ai-tampered/categories:
get:
summary: Listează categories
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/ai-tampered/config:
get:
summary: Citește config
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/ai-tampered/health:
get:
summary: Citește health
tags:
- ai-tampered
security: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/ai-tampered/models:
get:
summary: Listează models
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/ai-tampered/quick:
post:
summary: Creează / execută quick
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/ai-tampered/results/{sessionId}:
get:
summary: Citește results
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/ai-tampered/stage-assignments:
get:
summary: Listează stage assignments
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
put:
summary: Actualizează stage assignments
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/ai-tampered/test-model:
post:
summary: Creează / execută test model
tags:
- ai-tampered
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/claims/analyze:
post:
summary: Creează / execută analyze
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/claims/analyze-async:
post:
summary: Creează / execută analyze async
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/claims/analyze-media:
post:
summary: Creează / execută analyze media
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/claims/config:
get:
summary: Citește config
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/claims/health:
get:
summary: Citește health
tags:
- claims
security: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/claims/models:
get:
summary: Listează models
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/claims/results/{sessionId}:
get:
summary: Citește results
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/claims/stage-assignments:
get:
summary: Listează stage assignments
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
put:
summary: Actualizează stage assignments
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/claims/statuses:
get:
summary: Listează statuses
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/claims/test-model:
post:
summary: Creează / execută test model
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/claims/types:
get:
summary: Listează types
tags:
- claims
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/domain/analyze:
post:
summary: Creează / execută analyze
tags:
- domain
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
deprecated: true
description: Legacy — înlocuit de /api/v3/source-assessment/analyze
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/domain/analyze-async:
post:
summary: Creează / execută analyze async
tags:
- domain
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
deprecated: true
description: Legacy — înlocuit de source-assessment
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/health:
get:
summary: Citește health
tags:
- health
security: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/health/all:
get:
summary: Health profund — dependențe interne + integrare Lot 1 (AI)
description: >
Sondează toate dependențele agent-v3: infrastructura proprie (PostgreSQL,
Redis, RabbitMQ, didiFramework) și **serviciile de inteligență artificială
din Lotul 1** consumate prin `didi-network` (llm/vision, whisper, web,
video/BusterX, extractors, forensic, brain, domain-check T4). Serviciile
Lot 1 sunt verificate *fail-open*: o dependență AI indisponibilă produce
`degraded` (HTTP 200), nu `unhealthy` — reflectând degradarea grațioasă a
pipeline-ului. Endpoint-ul dublează rol de sondă de integrare Lot1↔Lot2
(vezi `x-integrations` la nivel de specificație).
tags:
- health
security:
- bearerAuth: []
responses:
'200':
description: Sistem healthy sau degraded (dependențe AI fail-open indisponibile)
content:
application/json:
schema:
$ref: '#/components/schemas/DeepHealthResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Sistem unhealthy (o dependență critică internă e jos)
content:
application/json:
schema:
$ref: '#/components/schemas/DeepHealthResponse'
x-tested:
date: '2026-07-09'
http_status: 200
note: Probat live pe didi11; acoperă toate 9 integrări Lot 1 (raport 04)
/api/v3/media/download-url:
post:
summary: Creează / execută download url
tags:
- media
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/media/file/{bucket}/{objectKey}:
get:
summary: Citește {*objectKey}
tags:
- media
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: bucket
in: path
required: true
schema:
type: string
- name: objectKey
in: path
required: true
schema:
type: string
/api/v3/media/upload:
post:
summary: Creează / execută upload
tags:
- media
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/media/upload-url:
post:
summary: Creează / execută upload url
tags:
- media
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/moderation/flag:
post:
summary: Creează / execută flag
tags:
- moderation
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/moderation/queue:
get:
summary: 'Coada de review HIL (filtre: status CSV, priority CSV, assigned_to)'
tags:
- moderation
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/ModerationQueueEntry'
total:
type: integer
limit:
type: integer
offset:
type: integer
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/moderation/queue/{queueId}:
get:
summary: Citește queue
tags:
- moderation
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: queueId
in: path
required: true
schema:
type: string
/api/v3/moderation/queue/{queueId}/claim:
post:
summary: Creează / execută claim
tags:
- moderation
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 403
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: queueId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/moderation/queue/{queueId}/resolve:
put:
summary: Rezolva o intrare HIL (approved/corrected/rejected); approved/corrected promoveaza atomii brain la
gold
tags:
- moderation
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 403
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: queueId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ModerationResolveRequest'
/api/v3/moderation/stats:
get:
summary: Listează stats
tags:
- moderation
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/pipeline/{sessionId}/cancel:
post:
summary: Anuleaza o sesiune in curs (ownership check; starea `canceled` propagata Redis+PG)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/pipeline/{sessionId}/component/{name}:
get:
summary: Citește component
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
- name: name
in: path
required: true
schema:
type: string
/api/v3/pipeline/{sessionId}/queue-status:
get:
summary: Progres procesare async (procent + componente finalizate)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QueueStatus'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/pipeline/{sessionId}/result:
get:
summary: Rezultatul complet al sesiunii (cand status=completed)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AnalysisSession'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/pipeline/{sessionId}/resume:
post:
summary: 'Resume din checkpoint: re-dispatch DOAR componentele necompletate (409 daca completed/input expirat)'
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/pipeline/{sessionId}/status:
get:
summary: Status sesiune (polling)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/QueueStatus'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/pipeline/analyze:
post:
summary: Analiza completa sincrona (toate componentele + verdict)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AnalysisSession'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyzeRequest'
/api/v3/pipeline/analyze-async:
post:
summary: Analiza completa asincrona — dispatch pe RabbitMQ, 202 + poll
tags:
- pipeline
security:
- bearerAuth: []
responses:
'202':
description: 202 Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncAccepted'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyzeRequest'
/api/v3/pipeline/analyze-media:
post:
summary: Analiza media sincrona (media_url din MinIO)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyzeRequest'
/api/v3/pipeline/analyze-url:
post:
summary: Analiza URL inteligenta (detecteaza video/articol/imagine)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyzeRequest'
/api/v3/pipeline/dry-run:
post:
summary: 'Dry-run: rezolva planul complet (flow, dependente, cozi, lanturi modele, profil verdict) FARA dispatch
si zero credite'
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DryRunPlan'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyzeRequest'
/api/v3/pipeline/extension/analyze:
post:
summary: Creează / execută analyze
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 401
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/pipeline/extension/analyze-async:
post:
summary: Creează / execută analyze async
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 401
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/pipeline/extension/keys:
get:
summary: Listează keys
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
post:
summary: Creează / execută keys
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/pipeline/extension/keys/{id}:
delete:
summary: Șterge keys
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: id
in: path
required: true
schema:
type: string
/api/v3/pipeline/extension/status/{sessionId}:
get:
summary: Citește status
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 401
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/pipeline/extension/upload:
post:
summary: Creează / execută upload
tags:
- pipeline
security:
- apiKeyAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 401
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/pipeline/history:
get:
summary: Istoric analize utilizator (paginat)
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/HistoryPage'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/pipeline/history/{id}:
delete:
summary: Șterge history
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: id
in: path
required: true
schema:
type: string
get:
summary: Citește history
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: id
in: path
required: true
schema:
type: string
/api/v3/pipeline/history/admin:
get:
summary: 'Istoric admin, toti utilizatorii (filtre: search, risk_level, status, date) — necesita rol admin'
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/HistoryPage'
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/pipeline/history/admin/{id}:
delete:
summary: Șterge admin
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 404
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: id
in: path
required: true
schema:
type: string
get:
summary: Citește admin
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 500
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: id
in: path
required: true
schema:
type: string
/api/v3/pipeline/queue-health:
get:
summary: Citește queue health
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/pipeline/verdict-config:
get:
summary: Citește verdict config
tags:
- pipeline
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/source-assessment/analyze:
post:
summary: Creează / execută analyze
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/source-assessment/analyze-async:
post:
summary: Creează / execută analyze async
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/source-assessment/analyze-media:
post:
summary: Creează / execută analyze media
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/source-assessment/config:
get:
summary: Citește config
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/source-assessment/health:
get:
summary: Citește health
tags:
- source-assessment
security: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/source-assessment/models:
get:
summary: Listează models
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/source-assessment/stage-assignments:
get:
summary: Listează stage assignments
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
put:
summary: Actualizează stage assignments
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/source-assessment/test-model:
post:
summary: Creează / execută test model
tags:
- source-assessment
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/techniques/analyze:
post:
summary: Creează / execută analyze
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/techniques/analyze-async:
post:
summary: Creează / execută analyze async
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/techniques/analyze-media:
post:
summary: Creează / execută analyze media
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/techniques/config:
get:
summary: Citește config
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/techniques/definitions:
get:
summary: Listează definitions
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/techniques/models:
get:
summary: Listează models
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
/api/v3/techniques/results/{sessionId}:
get:
summary: Citește results
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
parameters:
- name: sessionId
in: path
required: true
schema:
type: string
/api/v3/techniques/stage-assignments:
get:
summary: Listează stage assignments
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
put:
summary: Actualizează stage assignments
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/techniques/test-model:
post:
summary: Creează / execută test model
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 400
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/api/v3/techniques/test-openrouter:
post:
summary: Creează / execută test openrouter
tags:
- techniques
security:
- bearerAuth: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: true
/metrics:
get:
summary: Listează metrics
tags:
- core
security: []
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
description: Payload-ul raspunsului
'400':
description: Cerere invalidă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Token lipsă/invalid (JWT RS256 verificat criptografic)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Resursă inexistentă
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
x-tested:
date: '2026-07-08'
http_status: 200
note: Probat live pe didi11 (proba non-distructivă)
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: JWT Keycloak (realms didi-clients / didi-admins), semnat RS256, verificat criptografic contra
JWKS atât la gateway (Kong) cât și în backend
apiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: Cheie API extensie browser (format didi_ext_..., emisă via /api/extension-keys)
schemas:
ErrorResponse:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
error_code:
type: string
correlation_id:
type: string
format: uuid
HealthCheck:
type: object
description: Rezultatul sondării unei dependențe individuale.
properties:
status:
type: string
enum: [healthy, unhealthy, unknown]
description: >
healthy = răspunde OK; unhealthy = eroare/HTTP non-2xx pe dependență
critică; unknown = dependență AL 1 fail-open indisponibilă (nu invalidează sistemul).
latency_ms:
type: integer
example: 12
error:
type: string
DeepHealthResponse:
type: object
description: >
Răspunsul GET /api/v3/health/all. `checks` conține infrastructura internă
(postgres, redis, rabbitmq, framework) și integrările Lot 1 (llm, vision,
whisper, video, extractors, forensic, brain, domain_check).
properties:
status:
type: string
enum: [healthy, degraded, unhealthy]
description: degraded = o integrare Lot 1 fail-open (unknown) e indisponibilă
example: healthy
service:
type: string
example: agent-v3
version:
type: string
example: 3.0.0
timestamp:
type: string
format: date-time
total_check_ms:
type: integer
example: 76
checks:
type: object
additionalProperties:
$ref: '#/components/schemas/HealthCheck'
properties:
postgres: { $ref: '#/components/schemas/HealthCheck' }
redis: { $ref: '#/components/schemas/HealthCheck' }
rabbitmq: { $ref: '#/components/schemas/HealthCheck' }
framework: { $ref: '#/components/schemas/HealthCheck' }
llm: { $ref: '#/components/schemas/HealthCheck' }
vision: { $ref: '#/components/schemas/HealthCheck' }
whisper: { $ref: '#/components/schemas/HealthCheck' }
video: { $ref: '#/components/schemas/HealthCheck' }
buster: { $ref: '#/components/schemas/HealthCheck' }
extractors: { $ref: '#/components/schemas/HealthCheck' }
forensic: { $ref: '#/components/schemas/HealthCheck' }
brain: { $ref: '#/components/schemas/HealthCheck' }
domain_check: { $ref: '#/components/schemas/HealthCheck' }
AnalyzeRequest:
type: object
properties:
text:
type: string
description: Text de analizat (2050000 caractere)
minLength: 20
maxLength: 50000
media_type:
type: string
enum:
- text
- url
- image
- audio
- video
media_url:
type: string
description: URL media (MinIO sau extern) pentru image/audio/video
url:
type: string
description: URL articol/video pentru analiza de tip url
user_id:
type: string
description: keycloak_id; in productie derivat din JWT (fallback body doar in STAGING_MODE)
plan_type:
type: integer
minimum: 1
maximum: 6
description: Plan abonament 16; decide tier free(13)/premium(46) si prioritatea in coada
components:
type: array
items:
type: string
enum:
- techniques
- ai_tampered
- claims
- domain
description: Subset de componente de rulat (implicit toate)
skip_components:
type: array
items:
type: string
user_flagged:
type: boolean
description: true = enqueue fortat in coada de moderare HIL
media_duration_sec:
type: number
description: 'Durata media (guard API: video max 180s, audio max 420s)'
required:
- media_type
AsyncAccepted:
type: object
properties:
success:
type: boolean
async_:
type: boolean
data:
type: object
properties:
session_id:
type: string
format: uuid
status:
type: string
example: processing
queued_components:
type: array
items:
type: string
plan_type:
type: integer
poll_url:
type: string
result_url:
type: string
AnalysisSession:
type: object
properties:
session_id:
type: string
format: uuid
user_id:
type: string
user_email:
type: string
input_type:
type: string
enum:
- text
- url
- image
- audio
- video
input_text:
type: string
input_url:
type: string
input_media_url:
type: string
input_hash:
type: string
status:
type: string
enum:
- pending
- processing
- running
- completed
- failed
- canceled
components_run:
type: array
items:
type: string
components_skipped:
type: array
items:
type: string
risk_score:
type: number
minimum: 0
maximum: 100
risk_category:
type: string
risk_level:
type: string
confidence:
type: number
confidence_level:
type: string
started_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
total_duration_ms:
type: integer
scenario_applied:
type: string
topic_applied:
type: string
source_app:
type: string
api_version:
type: string
example: v3
created_at:
type: string
format: date-time
techniques:
$ref: '#/components/schemas/TechniquesResult'
ai_tampered:
$ref: '#/components/schemas/AiTamperedResult'
claims:
$ref: '#/components/schemas/ClaimsResult'
domain:
$ref: '#/components/schemas/DomainResult'
verdict:
$ref: '#/components/schemas/VerdictResult'
description: 'Contractul central al platformei (Anexa B din propunerea tehnica): sesiunea de analiza cu rezultatele
celor 4 componente + verdict'
TechniquesResult:
type: object
properties:
manipulation_score:
type: number
minimum: 0
maximum: 100
total_severity:
type: number
dimensions_affected:
type: array
items:
type: string
techniques_count:
type: integer
techniques_detected:
type: array
items:
type: object
coupling_context:
type: object
llm_screening:
type: string
llm_deep:
type: string
screening_duration_ms:
type: integer
deep_analysis_duration_ms:
type: integer
total_duration_ms:
type: integer
fallbacks_screening:
type: integer
fallbacks_deep:
type: integer
AiTamperedResult:
type: object
properties:
ai_probability:
type: number
minimum: 0
maximum: 100
verdict:
type: string
risk_score:
type: number
categories_affected:
type: array
items:
type: string
indicators_count:
type: integer
disclosure_detected:
type: boolean
disclosure_explicit:
type: boolean
disclosure_text:
type: string
indicators_detected:
type: array
items:
type: object
content_type:
type: string
image_analysis:
type: object
llm_screening:
type: string
llm_deep:
type: string
total_duration_ms:
type: integer
ClaimsResult:
type: object
properties:
total_claims:
type: integer
verified_true:
type: integer
verified_false:
type: integer
unverified:
type: integer
opinions:
type: integer
credibility_score:
type: number
minimum: 0
maximum: 100
interpretation:
type: string
claims_by_status:
type: object
claims_by_type:
type: object
claims_verified:
type: array
items:
type: object
llm_extraction:
type: string
llm_verification:
type: string
web_searches_made:
type: integer
total_duration_ms:
type: integer
DomainResult:
type: object
properties:
domain:
type: string
trust_score:
type: number
minimum: 0
maximum: 100
verdict:
type: string
risk_level:
type: string
age_days:
type: integer
is_blacklisted:
type: boolean
has_ssl:
type: boolean
ssl_valid:
type: boolean
red_flags:
type: array
items:
type: string
warnings:
type: array
items:
type: string
duration_ms:
type: integer
VerdictResult:
type: object
properties:
risk_score:
type: number
minimum: 0
maximum: 100
risk_category:
type: string
risk_category_color:
type: string
risk_level:
type: string
risk_level_color:
type: string
severity:
type: string
recommended_action:
type: string
confidence:
type: number
confidence_level:
type: string
score_manipulation:
type: number
score_claims:
type: number
score_ai:
type: number
score_source:
type: number
score_context:
type: number
applied_weights:
type: object
override_applied:
type: boolean
override_type:
type: string
override_reason:
type: string
override_adjustment:
type: number
context_summary:
type: object
components_used:
type: array
items:
type: string
weights_source:
type: string
duration_ms:
type: integer
explanation_ro:
type: string
explanation_en:
type: string
virality_score:
type: number
virality_level:
type: string
virality_factors:
type: array
items:
type: object
DryRunPlan:
type: object
properties:
success:
type: boolean
dry_run:
type: boolean
example: true
data:
type: object
properties:
media_type:
type: string
plan_type:
type: integer
flow:
type: string
example: intake → [techniques ∥ ai_tampered ∥ claims] → verdict_aggregator → persist
description: Reprezentarea workflow-ului cu dependente explicite (DAG-sau-workflow, caiet r.982)
results_queue:
type: string
nodes:
type: array
items:
type: object
properties:
component:
type: string
queue:
type: string
priority:
type: integer
timeout_ms:
type: integer
depends_on:
type: array
items:
type: string
stages:
type: object
description: Lanturile de modele LLM per etapa si tier (primary + fallbacks)
prompt_config_keys:
type: array
items:
type: string
skipped:
type: array
items:
type: object
properties:
component:
type: string
reason:
type: string
verdict_profile:
type: object
properties:
profile_code:
type: string
profile_name:
type: string
is_active:
type: boolean
weights:
type: object
min_components:
type: integer
override_cap:
type: integer
note:
type: string
QueueStatus:
type: object
properties:
session_id:
type: string
format: uuid
status:
type: string
progress:
type: number
completed_components:
type: array
items:
type: string
total_components:
type: integer
HistoryPage:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
items:
type: array
items:
type: object
description: Sumar sesiune (fara JSONB-uri grele)
pagination:
type: object
properties:
page:
type: integer
limit:
type: integer
total:
type: integer
pages:
type: integer
ModerationQueueEntry:
type: object
properties:
queue_id:
type: integer
session_id:
type: string
format: uuid
priority:
type: integer
minimum: 1
maximum: 5
enqueue_reason:
type: string
enum:
- flagged
- low_confidence
- sensitive_topic
- mixed
enqueue_meta:
type: object
status:
type: string
enum:
- pending
- in_review
- resolved
- declined
- auto_closed
assigned_to:
type: string
assigned_at:
type: string
format: date-time
resolved_at:
type: string
format: date-time
resolved_by:
type: string
resolution_action:
type: string
enum:
- approved
- corrected
- rejected
time_in_queue_ms:
type: integer
time_in_review_ms:
type: integer
created_at:
type: string
format: date-time
ModerationResolveRequest:
type: object
properties:
action:
type: string
enum:
- approved
- corrected
- rejected
corrections:
type: object
description: 'Diff JSONB: {verdict?, techniques?, ai_tampered?, claims?}'
notes:
type: string
required:
- action