openapi: 3.0.1 info: title: Caitel_Catalogo-imp description: CAITEL - Api pubblicate per consultare il catagolo degli impianti contact: name: Supporto Catalogo Impianti Caitel url: https://servizi.regione.liguria.it/page/welcome/CAITEL email: caitel-api-assistenza@liguriadigitale.it version: 1.0.2 servers: - url: https://services-caitel.regione.liguria.it/api/catalogo-imp description: Url Server di PRODUZIONE specifico per catalogo impianti x-sandbox: false - url: https://services-caitel-test.regione.liguria.it/api/catalogo-imp description: Url Server di TEST specifico per catalogo impianti x-sandbox: false security: - BearerAuth: [] tags: - name: catalogo-impianti-controller description: Operazioni relative al catalogo impianto - name: tipologiche-controller description: Operazioni relative alle tipologiche - name: sistema-controller description: Operazioni di sistema - name: proprieta-controller description: Operazioni relative alle proprieta' - name: enums-controller description: Operazioni relative alle enumerations paths: /impianto/cerca/tra-tutti-gli-impianti: post: tags: - catalogo-impianti-controller summary: "Cerca impianto in tutto il catalogo " description: Cerca impianto tra tutti gli impianti anche se la ditta non e' manutentrice. Attenzione, vi sono dei campi cobbligatori, controllare le proprieta' con il servizio apposito operationId: cercaTraTuttiImpianti parameters: - name: pagina in: query description: La prima pagina 1 (Uno basata) required: false schema: minimum: 1 type: integer default: 1 - name: numeroElementiPerPagina in: query description: Quanti elementi in una pagina required: false schema: minimum: 20 type: integer default: 20 - name: ordinaPer in: query description: Ordina secondo questo campo required: false schema: type: string default: "-" - name: versoOrdinamento in: query description: Verso ordinamento crescente|decrescente required: false schema: type: string default: crescente - name: ordinaPerConVerso in: query description: Ordinamento e verso in un unica stringa, split '||'. required: false schema: type: string default: "-" - $ref: "#/components/parameters/CodiceFiscaleOperatore" requestBody: description: Criteri di ricerca per l'impianto nel catalogo completo content: application/json: schema: $ref: "#/components/schemas/FiltroRicercaImpiantiTraTutti" required: true responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/RicercaImpiantiTraTuttiRisposta" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /impianto/cerca/tra-miei-impianti: post: tags: - catalogo-impianti-controller summary: Cerca impianto nel catalogo dei miei impianti description: Cerca impianto tra tutti gli impianti di cui la ditta e' manutentrice di almeno un gruppo omogeneo che prevede rapporto operationId: cercaTraMieiImpianti parameters: - name: pagina in: query description: La prima pagina 1 (Uno basata) required: false schema: minimum: 1 type: integer default: 1 - name: numeroElementiPerPagina in: query description: Quanti elementi in una pagina required: false schema: minimum: 20 type: integer default: 20 - name: ordinaPer in: query description: Ordina secondo questo campo required: false schema: type: string default: "-" - name: versoOrdinamento in: query description: Verso ordinamento crescente|decrescente required: false schema: type: string default: crescente - name: ordinaPerConVerso in: query description: Ordinamento e verso in un unica stringa, split '||'. required: false schema: type: string default: "-" - $ref: "#/components/parameters/CodiceFiscaleOperatore" requestBody: description: Criteri di ricerca per l'impianto nel catalogo completo content: application/json: schema: $ref: "#/components/schemas/FiltroRicercaImpiantiTraMiei" required: true responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/RicercaImpiantiTraMieiRisposta" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /tipologiche/province-liguria: get: tags: - tipologiche-controller summary: Get lista province Liguria description: Retrieve la lista delle quattro province della Liguria (GE, IM, SP, SV). Lista fissa. operationId: recuperoListaProvinceLiguria parameters: - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/ListaValori" examples: province-liguria: description: province-liguria value: lista: - identificativo: "010" valore: GENOVA - identificativo: "008" valore: IMPERIA - identificativo: "011" valore: LA SPEZIA - identificativo: "009" valore: SAVONA numeroElementiLista: 4 responseStatus: 200 OK "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /tipologiche/comuni-provincia/{identificativo-provincia}: get: tags: - tipologiche-controller summary: Get lista comuni per provincia description: Retrieve la lista dei comuni appartenenti a una specifica provincia operationId: recuperoListaComuniPerProvincia parameters: - name: identificativo-provincia in: path description: Identificativo ISTAT della provincia required: true schema: type: string example: "010" - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/ListaValoriWithRequest" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /status: get: tags: - sistema-controller summary: Api di verifica risposta sistema description: Fornisce informazioni sullo stato del sistema operationId: informazioniSistema parameters: - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/BooleanProblemAndJson" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /proprieta/catalogo-impianti/{sezione}: get: tags: - proprieta-controller summary: Get proprieta campi della sezione description: Retrieve tutti i campi e le loro proprieta tramite identificativo della sezione contenitore operationId: recuperoDatiProprietaCatalogo parameters: - name: sezione in: path required: true schema: pattern: cercaTraMieiImpianti|cercaTraTuttiImpianti type: string - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/MapRespStringProprietaResp" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /enums/cerca-impianto/verso: get: tags: - enums-controller summary: Lista versi ordinamento per cerca impianto description: Restituisce le direzioni di ordinamento (Crescente/Decrescente) operationId: cercaImpiantoVerso parameters: - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/ListaValori" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /enums/cerca-impianto/ordina-per: get: tags: - enums-controller summary: Lista campi secondo cui ordinare cerca impianto description: Elenco dei campi utilizzabili per l'ordinamento secondo cui ordinare il risultato ricerca impianto operationId: cercaImpiantoOrdinaPer parameters: - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/ListaValori" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" /enums/cerca-impianto/ordina-per-con-verso: get: tags: - enums-controller summary: Ordinamento completo cerca impianto (campo + verso) description: Restituisce le combinazioni di campo e verso (es. codiceImpianto||crescente) secondo cui ordinare il risultato ricerca impianto operationId: cercaImpiantoOrdinaPerConVerso parameters: - $ref: "#/components/parameters/CodiceFiscaleOperatore" responses: "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/ListaValori" "400": description: Dati sintatticamente errati content: application/problem+json: schema: $ref: "#/components/schemas/BadRequestCaitelResponse" "403": description: Richiesta non autorizzata content: application/problem+json: schema: $ref: "#/components/schemas/ForbiddenCaitelResponse" "404": description: Non trovati content: application/problem+json: schema: $ref: "#/components/schemas/NotFoundCaitelResponse" "500": description: Internal server error content: application/problem+json: schema: $ref: "#/components/schemas/InternalServerErrorCaitelResponse" components: schemas: FiltroRicercaImpiantiTraTutti: required: - codiceImpianto type: object properties: identificativoImpianto: type: string description: Identificativo univoco dell'impianto (se noto) example: "1574" codiceImpianto: pattern: 0[7][A-Z0-9]{4}[A-Z0-9]{2}[0-9]{8} type: string description: "Codice Caitel dell'impianto. Formato: 07 seguito da codice belfiore del comune e ulteriori 10 numeri." example: 07A1110000000069 identificativoIndirizzo: type: string description: Identificativo univoco dell'indirizzo (se noto) example: "3201" identificativoResponsabile: type: string description: Identificativo univoco del responsabile (se noto) example: "892" identificativoFiscaleResponsabile: maxLength: 16 minLength: 11 type: string description: Identificativo fiscale del responsabile (codice fiscale 16 caratteri oppure partita IVA 11 cifre). example: BNCMRC80A01D969Z identificativoProvincia: type: string description: Codice ISTAT della provincia dell'impianto, chiamare il servizio associato (/tipologiche/province-liguria). example: "008" identificativoComune: type: string description: Codice ISTAT del comune della provincia selezionata, chiamare il servizio associato (/tipologiche/comuni-provincia/{identificativo-provincia}). example: "001" valoreParzialeIndirizzo: minLength: 8 type: string description: Valore parziale dell'indirizzo, comprensivo di dug (via, piazza...). example: via roma civico: type: string description: Numero civico. example: "17" interno: type: string description: Numero interno. example: "17" catastoSezione: type: string description: Dato catastale - sezione. example: PRA catastoFoglio: type: string description: Dato catastale - foglio. example: "102" catastoParticella: type: string description: Dato catastale - particella. example: "450" catastoSubDa: type: string description: Dato catastale - inizio subalterno. example: "1" catastoSubA: type: string description: Dato catastale - fine subalterno. example: "12" pod: maxLength: 15 type: string description: Dati della fornitura energia elettrica - POD (Point Of Delivery). example: IT123E012345678 pdr: maxLength: 14 type: string description: Dati della fornitura energia elettrica - PDR (Punto Di Raccolta). example: "88880123456789" description: "Criteri di ricerca per \"tra-tutti-gli-impianti\": tutti i campi sono opzionali eccetto codiceImpianto, ma la ricerca ha senso solo valorizzando almeno un criterio oltre a codiceImpianto (altrimenti il risultato e' vuoto, a differenza di \"tra-miei-impianti\" che senza filtri restituisce tutti gli impianti in gestione)." Base: type: object description: Corpo della request originale BasePairString: type: object properties: identificativo: type: string description: Chiave tecnica o ID dell'elemento example: D969 valore: type: string description: Etichetta descrittiva da mostrare all'utente example: Genova altroValore: type: string description: Eventuale informazione aggiuntiva di supporto example: GE selezionato: type: boolean description: Indica se l'elemento è quello selezionato di default example: true description: Elenco dei parametri path/query della request NotFoundCaitelResponse: type: object properties: responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" title: type: string detail: type: string status: type: integer format: int32 RequestPayloadBase: type: object properties: corpo: $ref: "#/components/schemas/Base" parametri: type: array description: Elenco dei parametri path/query della request items: $ref: "#/components/schemas/BasePairString" description: Oggetto contenente i dati della request originaria utilizzati per la chiamata del servizio ResponseMessage: type: object properties: tipo: type: string enum: - UNDEF - INFO - WARNING - ERROR - SUCCESS - QUESTION systemMessageCode: type: string confirmationToken: type: string messaggio: type: string ulterioriMessaggi: type: array items: type: string ulterioriMessaggiConDettagli: type: array items: $ref: "#/components/schemas/ResponseMessageDetails" stringaUnicaHtmlCompleta: type: string stringaUnicaHtml: type: string ResponseMessageDetails: type: object properties: tipo: type: string enum: - UNDEF - INFO - WARNING - ERROR - SUCCESS - QUESTION dettaglio: type: string ulterioriDettagli: type: array items: $ref: "#/components/schemas/BasePairString" conclusione: type: string domanda: type: string possibiliRisposteDomanda: type: array items: $ref: "#/components/schemas/BasePairString" RequestPayloadFiltroRicercaImpiantiTraTutti: type: object properties: corpo: $ref: "#/components/schemas/FiltroRicercaImpiantiTraTutti" parametri: type: array description: Elenco dei parametri path/query della request items: $ref: "#/components/schemas/BasePairString" description: Oggetto contenente i dati della request originaria utilizzati per la chiamata del servizio RicercaImpiantiTraTuttiRisposta: type: object properties: lista: type: array description: Lista degli impianti trovati nella pagina corrente items: $ref: "#/components/schemas/RisultatoCercaImpiantoResp" numeroElementiLista: type: integer description: Numero di elementi nella pagina corrente format: int32 example: 20 numeroTotaleElementi: type: integer description: Numero totale di impianti trovati (su tutte le pagine) format: int32 example: 1 paginaAttuale: type: integer description: Numero della pagina corrente (1-based) format: int32 example: 1 pagineTotali: type: integer description: Numero totale di pagine disponibili format: int32 example: 1 responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadFiltroRicercaImpiantiTraTutti" description: Risposta al servizio di ricerca impianti in tutto il catalogo, paginata. RisultatoCercaImpiantoResp: type: object properties: ithElemento: type: integer description: Posizione (1-based) dell'elemento nella lista completa dei risultati, indipendentemente dalla pagina format: int64 example: 1 numeroTotaleElementi: type: integer description: Numero totale di elementi trovati dalla ricerca (su tutte le pagine) format: int64 example: 486 identificativoIndirizzo: type: string description: Identificativo univoco dell'indirizzo example: "3201" codiceImpianto: type: string description: Codice Caitel dell'impianto example: 07D9690099931476 indirizzoCompleto: type: string description: Indirizzo completo dell'impianto (via, civico, comune) example: Via Roma 17, Genova coloreCivico: type: string description: Colore del civico (es. rosso/nero) example: nero letteraOpalazzo: type: string description: Lettera o palazzo example: A scala: type: string description: Scala example: B interno: type: string description: Numero interno example: "3" internoLettera: type: string description: Lettera interno example: A responsabileNome: type: string description: Nominativo del responsabile dell'impianto example: Rossi Mario responsabileTipo: type: string description: Tipo di responsabilità example: Proprietario responsabileIdentificativoFiscale: type: string description: Codice fiscale o partita IVA del responsabile example: RSSMRA80A01D969Z identificativoResponsabile: type: string description: Identificativo univoco del responsabile example: "892" identificativoImpianto: type: string description: Identificativo univoco dell'impianto example: "1574" identificativoLibrettoInBozzaAzienda: type: string description: Identificativo del libretto in bozza dell'azienda (null/assente se l'azienda non ha un libretto in bozza per l'impianto) example: "5021" isLibrettoBloccato: type: boolean description: Indica se il libretto è bloccato (es. anche per errori nella generazione del PDF) example: false isImpiantoAnnullato: type: boolean description: Indica se l'impianto è annullato example: true description: Elemento di risultato di una ricerca impianti InternalServerErrorCaitelResponse: type: object properties: responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" title: type: string detail: type: string status: type: integer format: int32 BadRequestCaitelResponse: type: object properties: responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" title: type: string detail: type: string status: type: integer format: int32 ForbiddenCaitelResponse: type: object properties: responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" title: type: string detail: type: string status: type: integer format: int32 FiltroRicercaImpiantiTraMiei: type: object properties: identificativoImpianto: type: string description: Identificativo univoco dell'impianto (se noto) example: "1574" codiceImpianto: pattern: ^07[A-ILM][0-9]{13}$ type: string description: "Codice Caitel dell'impianto. Formato: 07 seguito da codice belfiore del comune e ulteriori 10 numeri." example: 07A1110000000069 identificativoIndirizzo: type: string description: Identificativo univoco dell'indirizzo (se noto) example: "3201" identificativoResponsabile: type: string description: Identificativo univoco del responsabile (se noto) example: "892" identificativoFiscaleResponsabile: maxLength: 16 minLength: 11 type: string description: Identificativo fiscale del responsabile (codice fiscale 16 caratteri oppure partita IVA 11 cifre). example: BNCMRC80A01D969Z identificativoProvincia: type: string description: Codice ISTAT della provincia dell'impianto, chiamare il servizio associato (/tipologiche/province-liguria). example: "008" identificativoComune: type: string description: Codice ISTAT del comune della provincia selezionata, chiamare il servizio associato (/tipologiche/comuni-provincia/{identificativo-provincia}). example: "001" valoreParzialeIndirizzo: type: string description: Valore parziale dell'indirizzo, comprensivo di dug (via, piazza...). example: via roma civico: type: string description: Numero civico. example: "17" interno: type: string description: Numero interno. example: "17" catastoSezione: type: string description: Dato catastale - sezione. example: PRA catastoFoglio: type: string description: Dato catastale - foglio. example: "102" catastoParticella: type: string description: Dato catastale - particella. example: "450" catastoSubDa: type: string description: Dato catastale - inizio subalterno. example: "1" catastoSubA: type: string description: Dato catastale - fine subalterno. example: "12" pod: maxLength: 15 type: string description: Dati della fornitura energia elettrica - POD (Point Of Delivery). example: IT123E012345678 pdr: maxLength: 14 type: string description: Dati della fornitura energia elettrica - PDR (Punto Di Raccolta). example: "88880123456789" description: "Criteri di ricerca per \"tra-miei-impianti\": tutti i campi sono opzionali, inclusi codiceImpianto e valoreParzialeIndirizzo. Senza filtri restituisce tutti gli impianti di cui la ditta e' manutentrice di almeno un gruppo omogeneo che prevede rapporto." RequestPayloadFiltroRicercaImpiantiTraMiei: type: object properties: corpo: $ref: "#/components/schemas/FiltroRicercaImpiantiTraMiei" parametri: type: array description: Elenco dei parametri path/query della request items: $ref: "#/components/schemas/BasePairString" description: Oggetto contenente i dati della request originaria utilizzati per la chiamata del servizio RicercaImpiantiTraMieiRisposta: type: object properties: lista: type: array description: Lista degli impianti trovati nella pagina corrente items: $ref: "#/components/schemas/RisultatoCercaImpiantoResp" numeroElementiLista: type: integer description: Numero di elementi nella pagina corrente format: int32 example: 20 numeroTotaleElementi: type: integer description: Numero totale di impianti trovati (su tutte le pagine) format: int32 example: 486 paginaAttuale: type: integer description: Numero della pagina corrente (1-based) format: int32 example: 1 pagineTotali: type: integer description: Numero totale di pagine disponibili format: int32 example: 25 responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadFiltroRicercaImpiantiTraMiei" description: Risposta al servizio di ricerca impianti tra quelli in gestione alla ditta chiamante, paginata. ListaValori: type: object properties: lista: type: array items: $ref: "#/components/schemas/BasePairString" numeroElementiLista: type: integer format: int32 numeroTotaleElementi: type: integer format: int32 paginaAttuale: type: integer format: int32 pagineTotali: type: integer format: int32 responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" description: Risposta semplice contenente una lista di valori chiave/valore ListaValoriWithRequest: type: object properties: lista: type: array items: $ref: "#/components/schemas/BasePairString" numeroElementiLista: type: integer format: int32 numeroTotaleElementi: type: integer format: int32 paginaAttuale: type: integer format: int32 pagineTotali: type: integer format: int32 responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" description: Risposta completa contenente una lista di valori chiave/valore che include i parametri di ricerca originali BooleanProblemAndJson: type: object properties: elemento: type: boolean responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" title: type: string detail: type: string status: type: integer format: int32 MapRespStringProprietaResp: type: object properties: mappa: type: object additionalProperties: $ref: "#/components/schemas/ProprietaResp" numeroElementiMappa: type: integer format: int32 responseStatus: type: string informazioni: $ref: "#/components/schemas/ResponseMessage" request: $ref: "#/components/schemas/RequestPayloadBase" extra: $ref: "#/components/schemas/BasePairString" ProprietaResp: type: object properties: campo: type: string description: Nome del campo (chiave nella mappa delle proprietà) example: pod parentDotCampo: type: string etichetta: type: string description: Etichetta da visualizzare nel form example: POD - Point of Delivery Rete Elettrica placeholder: type: string description: Testo placeholder del campo input example: Inserire il codice POD ulterioreTesto: type: string description: Testo aggiuntivo da mostrare sotto il campo unitaMisura: type: string description: Unità di misura del campo example: kW parent: type: string description: Identificatore della sezione padre nel form example: s0102ubicazioneEDestinazioneEdificio proprieta: type: string description: Visibilità del campo per il ruolo corrente example: NON-VISIBILE enum: - EDITABILE - NON-VISIBILE - SOLA-LETTURA - OBBLIGATORIO tipoCampo: type: string description: Tipo di campo example: TESTUALE enum: - TESTUALE - INTERO - DECIMALE - CENTESIMALE - MILLESIMALE - BOOLEANO - DATA - TIPOLOGICA - AREADITESTO - OGGETTO condizioneDescrizione: type: string description: Messaggio di errore da mostrare se la condizione non è rispettata example: Formato POD non corretto [IT, 3 cifre, E e 8/9 cifre] condizioneRegexp1: type: string description: Espressione regolare primaria di validazione example: ^[iI][tT][0-9]{3}[eE][0-9]{8,9}$ condizioneRegexp2: type: string description: Espressione regolare secondaria di validazione (alternativa a regexp1) condizioneLengthMin: type: integer description: Lunghezza minima del valore format: int64 example: 14 condizioneLengthMax: type: integer description: Lunghezza massima del valore format: int64 example: 15 condizioneValueMin: type: number description: Valore numerico minimo condizioneStepSpin: type: number description: Step per i campi di tipo SPIN format: double example: 0.5 condizioneValueMax: type: number description: Valore numerico massimo condizioneDateMinAbs: pattern: ^\d{4}-\d{2}-\d{2}$ type: string description: Data minima assoluta (formato yyyy-MM-dd) format: date example: 2020-01-01 condizioneDateMaxAbs: pattern: ^\d{4}-\d{2}-\d{2}$ type: string description: Data massima assoluta (formato yyyy-MM-dd) format: date example: 2030-12-31 condizioneDateMinDayRelToNow: type: integer description: Giorni minimi relativi alla data odierna (negativo = passato) format: int32 example: -365 condizioneDateMaxDayRelToNow: type: integer description: Giorni massimi relativi alla data odierna (0 = oggi, positivo = futuro) format: int32 example: 0 condizioneSetValues1: type: string description: Insieme di valori ammessi — primo set (valori separati da virgola) example: S,N,2,3,4 condizioneOrSetValues2: type: string description: Secondo insieme di valori ammessi (AND o OR con il primo set) condizioneOrSetValues3: type: string description: Terzo insieme di valori ammessi (AND o OR con il primo e secondo set) condizioneDipendendeDaAltriCampi: type: boolean description: Indica se la visibilità del campo dipende dal valore di altri campi example: false testoAlert: type: string description: Ulteriore testo di alert testoWarning: type: string description: Ulteriore testo di warning description: Proprietà di visibilità e validazione di un campo del form, come restituita dalla view V_LIB_CAMPI_FE example: pod: campo: pod etichetta: POD - Point of Delivery Rete Elettrica parent: s0102ubicazioneEDestinazioneEdificio proprieta: NON-VISIBILE tipoCampo: TESTUALE condizioneDescrizione: Formato POD non corretto [IT, 3 cifre, E e 8/9 cifre] condizioneRegexp1: ^[iI][tT][0-9]{3}[eE][0-9]{8,9}$ condizioneLengthMin: 14 condizioneLengthMax: 15 condizioneDipendendeDaAltriCampi: false parameters: CodiceFiscaleOperatore: name: codice-fiscale-operatore in: header description: Codice Fiscale operatore required: true schema: pattern: ^[A-Za-z]{6}[0-9LMNPQRSTUVlmnpqrstuv]{2}[A-EHLMPRSTa-ehlmprst][0-9LMNPQRSTUVlmnpqrstuv]{2}[A-Za-z][0-9LMNPQRSTUVlmnpqrstuv]{3}[A-Za-z]$ type: string securitySchemes: BearerAuth: type: http description: Token Bearer ottenuto tramite OAuth2 client_credentials dal server di autorizzazione di Regione Liguria. Il token ha durata di 3600 secondi e va rinnovato alla scadenza. Richiede inoltre il certificato mTLS firmato da Liguria Digitale configurato sul client TLS. scheme: bearer bearerFormat: JWT