- CI/CD GitLab (.gitlab-ci.yml): verify -> test -> build -> publish -> deploy cu health-gate (/api/v3/health/all) + rollback manual - Publicare pe retele sociale (LinkedIn/Facebook) din Analysis History (social.ts, linkedin.ts, facebook.ts, SocialPostModal) - Specificatii OpenAPI: agent-v3 (87 op.) si didi-framework (287 op.) - Matrice testare acceptanta beneficiar + script dovezi API - Fix nginx SSL: redirect port 3001 (error_page 497, absolute_redirect off) - Adrese interne inlocuite cu hostname-uri generice (.local)
4725 lines
134 KiB
YAML
4725 lines
134 KiB
YAML
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 1–3).
|
||
|
||
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 (20–50000 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 1–6; decide tier free(1–3)/premium(4–6) 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
|