Docs Italia beta

Documenti pubblici, digitali.

4.2. Raccomandazioni sul formato dei dati

4.2.1. [RAC_GEN_FORMAT_001] Utilizzare Content-Type semanticamente coerenti

Quando si ritornano dati binari, immagini o documenti (eg. pdf, png, …) si DEVONO utilizzare i rispettivi Content-Type. Nel protocollo HTTP, l’HTTP header Content-Type indica il media-type di una risorsa.

4.2.2. [RAC_GEN_FORMAT_002] Evitare Content-Type personalizzati

Si DOVREBBE evitare l’uso di media-type personalizzati come da RFC 6838#section-3.4 (eg. application/x.custom.name+xml, application/x.custom.name+json) ed utilizzare nomi standard come:

  • application/xml
  • application/soap+xml
  • application/json​
  • application/problem+json​
  • application/jose+json

L’elenco dei media-type è reperibile sul sito IANA.

4.2.3. [RAC_GEN_FORMAT_003] Formati standard per Data ed Ora

Le date DEVONO essere conformi:

  • alla sintassi «full-date» indicata in RFC 3339, ad esempio 2015-05-28 se si indica una data;
  • alla sintassi «date-time» indicata in RFC 3339, ad esempio 2015-05-28T14:07:17Z o nel formato UNIX Timestamp definito in «The Open Group Base Specifications Issue 7, Rationale: Base Definitions, section A.4 General Concepts» se si indica un momento esatto nel tempo.

RFC 3339 permette di indicare una timezone prefissando la data con la distanza da UTC:

  • 2015-05-28T14:07:17+01:00
  • 2015-05-28T14:07:17-05:00

Quando la data è specificata in UTC occorre utilizzare sempre il suffisso Z (Zulu time zone):

  • 2015-05-28T14:07:17Z

Ove non dettagliato nelle specifiche, le date negli header HTTP DEVONO essere conformi:

  • o al formato UNIX Timestamp;
  • o alla sintassi HTTP-date definito in RFC 7231, eg. «Sun, 06 Nov 1994 08:49:37 GMT».

4.2.4. [RAC_GEN_FORMAT_004] Tempi di durata e intervalli

I tempi di durata e gli intervalli DEVONO essere espresse in secondi o usare lo standard ISO 8601.

Di seguito alcuni esempi di durata in formato ISO 8601.

I tempi di durata sono prefissati da «P»; giorni e ore sono separati da «T».

Esempi:

  • P1Y2M3D - 1 anno, 2 mesi e 3 giorni
  • PT1H4M5S - 1 ora, 4 minuti e 5 secondi
  • P1M - 1 mese
  • PT1M - 1 minuto
  • P1Y2M10DT2H30M - 1 anno, 2 mesi, 10 giorni 2 ore e 30 minuti

4.2.5. [RAC_GEN_FORMAT_005] Lingue e monete

Si DEVONO utilizzare per le codifiche standard indicate nelle Linee Guida per la Valorizzazione del Patrimonio Informativo Nazionale [1], inclusi:

  • ISO 3166-1-alpha2 country (due lettere)
  • ISO 639-1 language code
  • ISO 639-1 per le varianti dei linguaggi.
  • ISO 4217 alpha-3 currency codes

Per le valute è possibile basarsi sullo schema Money - ripreso dal lavoro di standardizzazione del Berlin Group sotto l’egida dello European Standards e contenente i campi:

  • amount (string)
  • currency [ISO-4217]

Esempio:

{
        "tax_id": "imu-e472",
        "value": {
                "amount": "100.23",
                "currency": "EUR"
        }
}
<payment>
        <taxId>imu-e472</taxId>
        <value>
                <currency>EUR</currency>
                <amount>100.23</amount>
        </value>
</payment>
[1]Cfr. https://docs.italia.it/italia/daf/lg-patrimonio-pubblico/it/bozza/index.html