openapi: 3.2.0
info:
title: imgauth — API di attestazione opere digitali Badge API
version: 1.34.1
description: 'Motore di attestazione Spazio Genesi ETS. Full privacy: l''impronta SHA-256 si calcola sul client, il file non viene mai inviato al server. Contratto reale in italiano (non tradurre i nomi campo). Vedi https://attestazione.spaziogenesi.org per l''interfaccia utente e https://github.com/SPAZIO-GENESI/imgauth per il codice sorgente (AGPL-3.0).'
contact:
name: Spazio Genesi ETS
url: https://spaziogenesi.org
license:
name: AGPL-3.0-only
url: https://github.com/SPAZIO-GENESI/imgauth/blob/main/LICENSE
servers:
- url: https://imgauth.spaziogenesi.org
description: produzione
tags:
- name: Badge
paths:
/api/badge:
get:
summary: Badge SVG "Opera attestata"
description: Embeddabile via
. Verde solo se l'hash è realmente in archivio; mai errore HTTP (per non rompere l'immagine).
parameters:
- name: hash
in: query
required: true
schema:
type: string
responses:
'200':
description: SVG (verde 24h cache, grigio 60s cache)
content:
image/svg+xml:
schema:
type: string
tags:
- Badge
/api/badge/integration:
get:
summary: Badge SVG "Funziona con Attestazione Spazio Genesi"
description: Embeddabile via
nel sito del partner (P28). Verde solo se la candidatura con quell'id è 'approved' in vetrina; mai errore HTTP (id malformato o non approvata → badge grigio "integrazione non verificata").
parameters:
- name: id
in: query
required: true
schema:
type: string
pattern: ^int_[0-9a-f]{8}$
responses:
'200':
description: SVG (verde 24h cache, grigio 60s cache)
content:
image/svg+xml:
schema:
type: string
tags:
- Badge
components:
securitySchemes:
agentBearer:
type: http
scheme: bearer
bearerFormat: sg_k__ oppure sg_s__
description: 'Credenziale agente (P21): API key per convenzioni o session token da device flow. Sblocca SOLO il bypass della challenge Turnstile su POST /api/hash — HMAC, timestamp server e rate limit per-IP restano invariati. Facoltativa: senza header, il percorso Turnstile è identico a prima.'
voucherHeader:
type: apiKey
in: header
name: X-SG-Voucher
description: 'Voucher firmato stateless (P25 §2.7): ottenuto SOLO tramite il flusso OAuth "Attesta con la tua email" sul sito — non c''è un endpoint pubblico in questo contratto che lo emette. TTL 8h. Bypassa il solo Turnstile su /api/hash e /api/cert-pdf, applica pool/tetto di un''eventuale convenzione o la fascia Professionale — stesso principio del bearer agente.'