| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507 |
- openapi: 3.1.0
- info:
- title: Edison Next Panorama - Integration API
- description: |-
- API standard di integrazione di *Edison Next Panorama* con sistemi esterni
- version: 1.0.0
- #servers:
- # - url: https://api.panorama.edisonnext.it/api/v1
- # description: Main (production) API server
- # - url: <Here staging API server>
- # description: Staging API server
- # - url: <Here development API server>
- # description: Development API server
- tags:
- - name: Type
- description: operations to query data catalog and data types
- - name: Entity
- description: operations to manage entities
- - name: Device
- description: Operations about Devices
- paths:
- /type:
- get:
- summary: Restituisce i Tipi di Entità definiti
- tags: [Type]
- operationId: getTypes
- responses:
- '200':
- description: successful operation
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Type'
- /catalog:
- get:
- summary: Restituisce i Cataloghi disponibili
- tags: [Type]
- operationId: getCatalogs
- parameters:
- - name: sources
- in: query
- description: Sources to filter by
- required: false
- explode: true
- schema:
- type: array
- items:
- type: string
- responses:
- '200':
- description: successful operation
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Catalog'
- /terminology:
- get:
- summary: Restituisce le Nomenclature definite
- tags: [Type]
- operationId: getTerminologies
- responses:
- '200':
- description: successful operation
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Terminology'
- /entity:
- get:
- summary: Elenco di tutte le entità
- tags: [Entity]
- responses:
- '200':
- description: Lista di entità
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Entity'
- post:
- summary: Crea una nuova entità
- tags: [Entity]
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Entity'
- responses:
- '201':
- description: Entità creata
- /entity/{id}:
- get:
- summary: Ottiene una singola entità
- tags: [Entity]
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- responses:
- '200':
- description: Entità trovata
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Entity'
- '404':
- description: Entità non trovata
- put:
- summary: Modifica un'entità esistente (escluso lo stato)
- tags: [Entity]
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Entity'
- responses:
- '200':
- description: Entità aggiornata
- delete:
- summary: Elimina un'entità
- tags: [Entity]
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- responses:
- '204':
- description: Entità eliminata
- /state/{id}:
- put:
- summary: Modifica lo stato di un'Entità
- tags: [Entity]
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: string
- responses:
- '200':
- description: Stato Entità aggiornato
- /history/{id}:
- get:
- summary: Ottiene la storia delle variazioni di stato di un'Entità
- tags: [Entity]
- parameters:
- - in: path
- name: id
- description: l'ID dell'entità di cui ottenere la storia
- required: true
- schema:
- type: string
- responses:
- '200':
- description: Entità trovata
- content:
- application/json:
- schema:
- type: array
- items:
- type: object
- properties:
- timestamp:
- type: string
- format: date-time
- state:
- type: string
- examples: ['off', '22°C']
- '404':
- description: Entità non trovata
- /device:
- get:
- summary: Elenco di tutti i dispositivi
- responses:
- '200':
- description: Lista di dispositivi
- content:
- application/json:
- schema:
- type: array
- items:
- $ref: '#/components/schemas/Device'
- post:
- summary: Crea un nuovo dispositivo
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Device'
- responses:
- '201':
- description: Device creato
- /device/{id}:
- get:
- summary: Ottiene un singolo dispositivo
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- responses:
- '200':
- description: Dispositivo trovato
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Device'
- '404':
- description: Dispositivo non trovato
- put:
- summary: Modifica un dispositivo esistente
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- requestBody:
- required: true
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Device'
- responses:
- '200':
- description: Dispositivo aggiornato
- delete:
- summary: Elimina un dispositivo
- parameters:
- - in: path
- name: id
- required: true
- schema:
- type: string
- responses:
- '204':
- description: Dispositivo eliminato
- /login:
- post:
- summary: Login utente
- requestBody:
- required: true
- content:
- application/json:
- schema:
- type: object
- required: [username, password]
- properties:
- username:
- type: string
- password:
- type: string
- responses:
- '200':
- description: Login riuscito
- content:
- application/json:
- schema:
- type: object
- properties:
- token:
- type: string
- '401':
- description: Credenziali non valide
- components:
- schemas:
- Terminology:
- type: object
- description: Nomenclatura di riferimento per i Tipi di Entità. Può essere interna o esterna (schema.gov.it, UCUM, Google Knowledge Graph)
- required: [id, name, syntax]
- properties:
- id:
- type: string
- format: uri
- description: Identificativo univoco della Nomenclatura (terminology)
- name:
- type: string
- description: Nome canonico della Nomenclatura
- description:
- type: string
- description: Descrizione della Nomenclatura
- documentation:
- type: string
- format: uri
- description: Link alla documentazione della Nomenclatura
- examples:
- - 'https://schema.gov.it/'
- uri:
- type: string
- format: uri
- description: URI autoritativa della Nomenclatura
- examples:
- - http://dati.beniculturali.it/cis
- Type:
- type: object
- description: Tipi di entità, comprensivi di riferimento al nomenclatore e definizione della struttura del payload specifico
- required: [id, name, syntax]
- properties:
- id:
- type: string
- format: uri
- description: Identificativo univoco del Tipo di Entità
- name:
- type: string
- description: Nome canonico del Tipo di Entità
- stateType:
- $ref: '#/components/schemas/Type'
- syntax:
- type: string
- format: json
- description: Definizione (JSON-LD) della sintassi del Tipo di Entità
- terminology:
- $ref: '#/components/schemas/Terminology'
- State:
- type: object
- description: Definisce una possibile rappresentazione della situazione attuale nel «divenire» delle Entità di un certo Tipo
- examples:
- - ElectronicDeviceState - Acceso o Spento
- - StatoSemaforo - Rosso, Giallo, Verde, Lampeggiante, Spento
- - TemperaturaAmbiente - la temperatura attuale di un ambiente in gradi centigradi
- properties:
- id:
- type: string
- format: uri
- description: ID univoco del Tipo di Stato
- name:
- type: string
- description: Nome canonico del Tipo di Stato
- kind:
- type: string
- description: La tipologia elementare del Tipo di Stato (grandezza con unità di misura, stringa, eccetera)
- Entity:
- type: object
- description: rappresenta un generico oggetto urbano, è di uno specifico tipo, afferisce a un catalogo, ha uno stato dinamico, è dotato di proprietà type-specific, è tipicamente geo-localizzabile
- required: [id, type, state, createdDate, updatedDate]
- properties:
- id:
- type: string
- format: uri
- description: URI univoco dell’Entità sulla piattaforma
- type:
- $ref: '#/components/schemas/Type'
- parent:
- $ref: '#/components/schemas/Entity'
- externalId:
- type: string
- description: Identificativo dell’Entità nel sistema sorgente
- state:
- type: object
- description: Stato dell’entità
- properties:
- value:
- type: string
- description: Valore dello stato (determinato da Type.stateType)
- timestamp:
- type: string
- format: date-time
- description: Data/ora dello stato
- validity:
- type: object
- properties:
- from:
- type: string
- format: date-time
- description: Inizio validità
- to:
- type: string
- format: date-time
- description: Fine validità
- payload:
- type: object
- description: Attributi personalizzati in base al tipo di entità
- additionalProperties: true
- deviceId:
- description: Device associato all'entità
- $ref: '#/components/schemas/Device'
- createdDate:
- type: string
- format: date-time
- description: Data e ora di creazione dell'entità (timestamp ISO 8601)
- updatedDate:
- type: string
- format: date-time
- description: Data e ora dell’ultima modifica all'entità, escluse le modifiche di stato (timestamp ISO 8601)
- Source:
- type: object
- description: Fonte dati, interna o esterna, relativa a un soggetto alimentante
- properties:
- id:
- type: string
- format: uri
- description: ID univoco della Fonte Dati
- name:
- type: string
- description: Nome canonico della Fonte Dati
- organization:
- type: string
- description: Organizzazione di riferimento (ovvero soggetto alimentante) per la Fonte Dati
- required: [id, name, organization]
- Catalog:
- type: object
- description: Catalogo Dati (Data Catalog) fornito da una Fonte Dati
- properties:
- id:
- type: string
- format: uri
- description: ID univoco del Catalogo Dati
- name:
- type: string
- description: Nome canonico del Catalogo Dati
- source:
- description: Fonte Dati di afferenza
- $ref: '#/components/schemas/Source'
- required: [id, name, source]
- Device:
- type: object
- description: Dispositivo IoT gestito nativamente in piattaforma
- required: [id, fk_firmware_id, fk_tenant_code, fk_device_service_id, created_date, updated_date]
- properties:
- id:
- type: string
- format: uri
- description: Identificativo univoco del dispositivo
- serial:
- type: string
- description: Seriale del dispositivo
- fk_firmware_id:
- type: string
- format: uri
- description: Identificativo univoco del firmware del dispositivo
- fk_tenant_code:
- type: string
- format: uri
- description: Identificativo univoco del tenant appartenente il dispositivo
- fk_device_service_id:
- type: string
- format: uri
- description: Identificativo univoco del servizio
- decrypt_key:
- type: string
- description: Chiave di decrypting del dispositivo
- auth_key:
- type: string
- description: Chiave di authentication del dispositivo
- logical_device_name:
- type: string
- description: Logical device name del dispositivo
- mac_address:
- type: string
- description: Mac address del dispositivo
- createdDate:
- type: string
- format: date-time
- description: Data di creazione
- updatedDate:
- type: string
- format: date-time
- description: Ultimo aggiornamento
|