Beta

Gestione degli appalti

API end-to-end per la presentazione e il ritiro delle offerte su 5 portali di appalti pubblici. Cifratura, upload di file e logging step-by-step — il tutto tramite un'unica REST API. Attualmente in fase di beta testing — per richiedere l'accesso contattateci.

Portali supportati

GET/api/v2/procurement/portals

NEN (nen.nipez.cz), E-ZAK (URL istanza), TenderArena, Eveza (URL istanza), E-zakazky.cz (URL istanza). I portali E-ZAK, Eveza ed E-zakazky richiedono portalUrl — URL della specifica istanza.

Presentazione dell'offerta

POST/api/v2/procurement/bids

Parametri body

ParametroTipoDescrizione
portal*stringNEN | EZAK | TENDERARENA | EVEZA | EZAKAZKY
tenderId*stringID della gara sul portale
credentialIdstringID dell'accesso salvato (o credentials)
credentialsobjectOggetto con i campi username, password e (facoltativamente) portalUrl — alternativa a credentialId
filesarrayArray di oggetti (name, url, size) — file dell'offerta
criteriaarrayArray di oggetti (name, value) — criteri di valutazione
tenderTitlestringNome della gara (per la panoramica)
dryRunbooleantrue = test senza invio definitivo
curl -X POST https://veritra.io/api/v2/procurement/bids \
  -H "X-API-Key: mrw_procurement_..." \
  -H "Content-Type: application/json" \
  -d '{
    "portal": "NEN",
    "tenderId": "N006-24-V00012345",
    "credentialId": "clx1abc...",
    "files": [{"name": "offerta.pdf", "url": "https://..."}],
    "criteria": [{"name": "Prezzo dell'offerta", "value": "1500000"}]
  }'
{
  "jobId": "clx1abc...",
  "status": "PENDING",
  "message": "Job created — will be processed by cron"
}

Stato del job

GET/api/v2/procurement/bids/:jobId
{
  "id": "clx1abc...",
  "type": "SUBMIT_BID",
  "status": "COMPLETED",
  "portal": "NEN",
  "steps": [
    {"step": 1, "action": "login", "status": "ok", "durationMs": 1240},
    {"step": 2, "action": "load_tender", "status": "ok", "durationMs": 890},
    {"step": 3, "action": "encrypt", "status": "ok", "durationMs": 320},
    {"step": 4, "action": "upload_file", "status": "ok", "durationMs": 2100},
    {"step": 5, "action": "submit", "status": "ok", "durationMs": 1560}
  ]
}

Elenco delle offerte

GET/api/v2/procurement/bids

Ritiro dell'offerta

DELETE/api/v2/procurement/bids/:jobId

Parametri body

ParametroTipoDescrizione
reasonstringMotivo del ritiro (facoltativo)

Analisi AI

POST/api/v2/procurement/analyze
ParametroTipoDescrizione
tenderId*stringID della gara nel database RWX

Restituisce un JSON strutturato con oltre 50 campi: denominazione, importo, criteri, qualificazione, rischi, raccomandazioni AI, stima della probabilità di aggiudicazione.

Accessi ai portali

Gli accessi ai portali vengono gestiti nella dashboard su /dashboard/procurement/credentials. Le password sono cifrate con AES-256-GCM e non vengono mai memorizzate in chiaro.

Costi in crediti

ParametroTipoDescrizione
Presentazione dell'offertaPOST bids50 crediti
Ritiro dell'offertaDELETE bids/:id20 crediti
Analisi AIPOST analyze10 crediti
Lettura (elenco, dettaglio)GET1 credito
Elenco dei portaliGET portals0 crediti

Workflow

Procedura tipica: 1) Salvare le credenziali nella dashboard → 2) Testare il login → 3) Trovare una gara (GET tenders) → 4) Analizzare la documentazione (POST analyze) → 5) Presentare un'offerta (POST bids) → 6) Monitorare lo stato (GET bids/:jobId)