Эх сурвалжийг харах

cambiato operazioni di get misure e altri minor fixes per compliance openapi 3.1.0

fabio 2 сар өмнө
parent
commit
1bc98afc68
1 өөрчлөгдсөн 51 нэмэгдсэн , 45 устгасан
  1. 51 45
      panorama.yaml

+ 51 - 45
panorama.yaml

@@ -1,6 +1,6 @@
 # yaml-language-server: $schema=https://schemas.sourcemeta.com/openapi/v3.1/schema/2025-09-15.json
 
-openapi: 3.0.9
+openapi: 3.1.0
 info:
   title: Edison Next Panorama - Integration API
   description: |-
@@ -10,7 +10,7 @@ info:
     name: API Support
     email: support@panorama.edisonnext.it
 
-  version: 0.9.4
+  version: 0.9.8
   
   license:
     name: © 2025 - 2030 Copyright Edison Next Spa. All rights reserved
@@ -167,6 +167,7 @@ paths:
           description: Fonte Dati non valida
 
   /source/{id}:
+
     put:
       summary: Modifica una sorgente dati esistente (admin only)
       tags: [Data Source]
@@ -210,7 +211,7 @@ paths:
   /terminology:
     get:
       summary: Restituisce le Nomenclature definite
-      tags: [Terminology]
+      tags: [Type]
       operationId: getTerminologies
       responses:
         '200':
@@ -223,7 +224,7 @@ paths:
                   $ref: '#/components/schemas/Terminology'
     post:
       summary: Crea una nuova Nomenclatura (admin only)
-      tags: [Terminology]
+      tags: [Type]
       security:
         - panorama_administrator_api_key: []
       requestBody:
@@ -239,9 +240,10 @@ paths:
           description: Nomenclatura non valida
 
   /terminology/{id}:
+
     get:
       summary: Restituisce una singola Nomenclatura
-      tags: [Terminology]
+      tags: [Type]
       parameters:
         - in: path
           name: id
@@ -260,7 +262,7 @@ paths:
 
     put:
       summary: Modifica una Nomenclatura esistente (admin only)
-      tags: [Terminology]
+      tags: [Type]
       security:
         - panorama_administrator_api_key: []
       parameters:
@@ -285,7 +287,7 @@ paths:
 
     delete:
       summary: Elimina una Nomenclatura (senza riferimenti in qualche tipo) esistente (admin only)
-      tags: [Terminology]
+      tags: [Type]
       security:
         - panorama_administrator_api_key: []
       parameters:
@@ -419,7 +421,7 @@ paths:
   /state/{id}:
     put:
       summary: Modifica lo stato di un'Entità
-      tags: [State]
+      tags: [Entity]
       security:
         - panorama_provider_api_key: []
       parameters:
@@ -445,7 +447,7 @@ paths:
   /history/{id}:
     get:
       summary: Ottiene la storia delle variazioni di stato di un'Entità
-      tags: [History]
+      tags: [Entity]
       parameters:
         - in: path
           name: id
@@ -468,7 +470,7 @@ paths:
                       format: date-time
                     state:
                       type: string
-                      example: ['off', '22°C']
+                      examples: ['off', '22°C']
         '404':
           description: Entità non trovata
 
@@ -490,7 +492,7 @@ paths:
     get:
       summary: Ottiene informazioni su un singolo dispositivo
       tags: [Device]
-      parameters:     
+      parameters:
         - in: path
           name: id
           required: true
@@ -507,13 +509,17 @@ paths:
           description: Dispositivo non trovato
           
 		  
-  /measures:
+  /device/{id}/measures:
     get:
-      summary: Ottiene tutte le misure
+      summary: Ottiene tutte le misure di un device
+      tags: [Device]
       operationId: getMeasures
-      tags:
-        - Measure
       parameters:       
+        - in: path
+          name: id
+          required: true
+          schema:
+            type: string
         - name: measurement_date_from
           in: query
           description: Filter by measurement date (from)
@@ -540,14 +546,13 @@ paths:
                 items:
                   $ref: '#/components/schemas/Measure'
                   
-  /measures/getLast/{pod}:
+  /device/{id}/last:
     get:
       summary: Ottieni ultima misura da un POD
+      tags: [Device]
       operationId: getMeasureByPod
-      tags:
-        - Measure
       parameters:      
-        - name: pod
+        - name: id
           in: path
           required: true
           schema:
@@ -560,13 +565,13 @@ paths:
               schema:
                 $ref: '#/components/schemas/Measure'
         '404':
-          description: Misura non trovata	  
+          description: Nessuna Misura trovata
                     
   /measurementType/{id}:
     get:
       summary: Restituisce un singolo tipo di misura
       operationId: getMeasurementTypeById
-      tags: [MeasurementType]
+      tags: [Device]
       parameters:
         - in: path
           name: id
@@ -585,7 +590,7 @@ paths:
           
     put:
       summary: Modifica un tipo di misura esistente (admin only)
-      tags: [MeasurementType]
+      tags: [Device]
       security:
         - panorama_administrator_api_key: []
       parameters:
@@ -610,7 +615,7 @@ paths:
 
     delete:
       summary: Elimina un tipo di misura esistente (admin only)
-      tags: [MeasurementType]
+      tags: [Device]
       security:
         - panorama_administrator_api_key: []
       parameters:
@@ -628,7 +633,7 @@ paths:
   /measurementType:
     get:
       summary: Restituisce tutti i tipi di misura definiti
-      tags: [MeasurementType]
+      tags: [Device]
       operationId: getMeasurementTypes
       responses:
         '200':
@@ -641,7 +646,7 @@ paths:
                   $ref: '#/components/schemas/MeasurementType'
     post:
       summary: Crea un nuovo tipo di misura (admin only)
-      tags: [MeasurementType]
+      tags: [Device]
       security:
         - panorama_administrator_api_key: []
       requestBody:
@@ -667,7 +672,7 @@ components:
           type: string
           format: uri
           description: Identificativo univoco della Nomenclatura (terminology)
-          example: 
+          examples: 
             - http://dati.beniculturali.it/cis
         name:
           type: string
@@ -679,18 +684,18 @@ components:
           type: string
           format: uri
           description: Link alla documentazione della Nomenclatura
-          example: 
+          examples: 
             - 'https://schema.gov.it/'
         subject:
           type: string
           description: Soggetto titolare del Tipo
-          example:
+          examples:
             - 'Ministero per i Beni e le Attività Culturali'
         uri:
           type: string
           format: uri
           description: URI autoritativa della Nomenclatura
-          example: 
+          examples: 
             - http://dati.beniculturali.it/cis
 
     Type:
@@ -702,12 +707,12 @@ components:
           type: string
           format: uri
           description: Identificativo univoco del Tipo di Entità
-          example:
+          examples:
             - http://dati.beniculturali.it/cis/CulturalInstituteOrSite
         name:
           type: string
           description: Nome canonico del Tipo di Entità
-          example:
+          examples:
             - Istituti e Luoghi Della Cultura Italiani (musei, biblioteche, cinema, ecc)
         native:
           type: boolean
@@ -720,7 +725,7 @@ components:
           type: string
           format: json
           description: Definizione (JSON-LD) della sintassi del Tipo di Entità
-          example: 
+          examples: 
             - {
                 "@context": "https://json-ld.org/contexts/person.jsonld",
                 "@id": "http://dbpedia.org/resource/John_Lennon",
@@ -730,13 +735,13 @@ components:
               }
         terminology:
           $ref: '#/components/schemas/Terminology'
-          example:
+          examples:
             - http://dati.beniculturali.it/cis
         uri:
           type: string
           format: uri
           description: URI autoritativo del Tipo (se non nativo)
-          example: 
+          examples: 
             - http://dati.beniculturali.it/cis/CulturalInstituteOrSite
 
 #    State:
@@ -775,11 +780,11 @@ components:
           type: string
           format: uri
           description: ID univoco dell'Entità sulla piattaforma
-          example: [20738]
+          examples: [20738]
         name:
           type: string
           description: Nome canonico dell'Entità sulla piattaforma
-          example:
+          examples:
             - Antiquarium e Acquedotto romano di Trieste
         geometry:
           type: object
@@ -788,11 +793,11 @@ components:
             lat:
               type: number
               description: Latitudine dell'Entità
-              example: [45.61809]
+              examples: [45.61809]
             long:
               type: number
               description: Longitudine dell'Entità
-              example: [13.827805]
+              examples: [13.827805]
         type:
           $ref: '#/components/schemas/Type'
         parent:
@@ -802,7 +807,7 @@ components:
         externalId:
           type: string
           description: Identificativo dell'Entità nel sistema sorgente
-          example:
+          examples:
             - http://dati.beniculturali.it/mibact/luoghi/resource/CISNameInTime/20738
         state:
           type: object
@@ -831,7 +836,7 @@ components:
           type: object
           description: Attributi personalizzati in base al tipo di entità
           additionalProperties: true
-          example: 
+          examples: 
             - { chiusura: 'Lunedì|Giovedì|Domenica' }
         deviceId:
           description: Device associato all'entità
@@ -855,13 +860,13 @@ components:
           type: string
           format: uri
           description: ID univoco della Fonte Dati
-          example: 
+          examples: 
             - 'fvg_ispfor_tsgo'
             - 'fvg_ispfor'
         name:
           type: string
           description: Nome canonico della Fonte Dati
-          example:
+          examples:
             - 'Ministero per i Beni e le Attività Culturali'
             - 'Vincolo idrogeologico. L. 3267/1923 Comune di Trieste'
             - 'Ispettorati forestali'
@@ -876,7 +881,7 @@ components:
         organization:
           type: string
           description: Organizzazione di riferimento (ovvero soggetto alimentante) per la Fonte Dati
-          example:
+          examples:
             - 'Ministero per i Beni e le Attività Culturali'
             - 'Regione Autonoma Friuli Venezia Giulia - ISPETTORATO FORESTALE DI TRIESTE E GORIZIA'
             - 'RAFVG - DC Risorse agroalimentari, forestali e ittiche - Area foreste e territorio'
@@ -886,7 +891,7 @@ components:
         processor:
           type: string
           description: Organizzazione che gestisce tecnicamente la Fonte Dati
-          example: 
+          examples: 
             - 'Insiel S.p.A.'
             - 'Regione autonoma Friuli Venezia Giulia'
       required: [id, name, organization, internal]
@@ -1015,7 +1020,7 @@ components:
           type: string
           format: json
           description: Definizione (JSON-LD) della sintassi del Tipo di Misura
-          example: 
+          examples: 
             - https://github.com/FIWARE/data-models/tree/master/specs/PointOfInterest
 
     Payload:
@@ -1026,6 +1031,7 @@ components:
           $ref: '#/components/schemas/MeasurementType' 
         value: 
           type: object       
+          additionalProperties: true
         
   securitySchemes:
     panorama_auth: