Italian Registratore Telematico (XON-XOFF) Fattura e Scontrino elettronico

Star-Dust

Expert
Licensed User
Longtime User
Se le cose stanno proprio così, avremo una marea di nuovi programmatori, tutti quelli che vendono registratori di cassa,
nel giro di qualche anno saranno senza lavoro.
povero @Xfood, cos'hai contro di lui (ammaluzzu)
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Per quanto riguarda il discorso conservazione dello scontrino elettronico, Documento Commerciale, non sembra sia necessaria.
Comunque il servizio di conservazione è fornoto anche dall'Agenzia delle Entrate. Basta aderire alla conservazione.
Quindi si potrebbe fare tutto direttamente.
 

Star-Dust

Expert
Licensed User
Longtime User
Una prima bozza per la creazione del JSon dello scontrino. Mancano ancora i dati del documento.
Ho diviso in 4 classi.
  1. Scontrino: La classe generale che produce il JSON
  2. CedentePrestatore: Classe per impostare i dati fiscali e identificativi vari dell'Azienda
  3. documentoCommerciale: Dati del committente
  4. elementiContabili: Contenuto dello scontrino
Ovviamente è incompleto
 

Attachments

  • Scontrino Elettronico.zip
    6.6 KB · Views: 232

Star-Dust

Expert
Licensed User
Longtime User
Chiariamo un aspetto: questo sistema con JSON non è quello che ivia direttamente all'ADE che usa invece formato XML. Ma è per essere passato a questa libreria scritta in C#. Libreria che si appoggia a alcune API usate dall'agenzia dell'entrate con le credenziali di FiscoOnline.

Quindi se realizzata sarebbe una soluzione provvisoria e da realizzare con Visual Studio.
 

Star-Dust

Expert
Licensed User
Longtime User
Signori, forse ci siamo.... conoscete YAML? No? peccato....
 

Lello1964

Well-Known Member
Licensed User
Longtime User
 

Star-Dust

Expert
Licensed User
Longtime User

e allura.... eccolo qua, YAML ufficiale per i corrispettivi
YAML:
##########################################################################
#
#       API DISPOSITIVI
#
##########################################################################
swagger: '2.0'
info:
  title: API REST Dispositivi
  description: |
    API per l'utilizzo dei servizi di gestione e trasmissione dei Corrispettivi.

    Dove è utilizzato il termine `file firmato` si fa riferimento ad un file in formato xml firmato con Xml Signature conforme ad uno specifico elemento di uno schema xml dove l'elemento `Signature` contiene la firma XML.
    La definizione del formato della firma XML si trova in http://www.w3.org/TR/xmldsig-core/.
  
    La firma XML è profilata per facilitare l'interoperabilità, in particolare:
    - all'interno dell'elemento `Signature` non è presente l'elemento opzionale `Object`
    - all'interno dell'elemento `SignedInfo` è presente un unico elemento `Reference` che identifica l'intero documento (URI="")
    - viene utilizzato unicamente l'algoritmo di canonicalizzazione `http://www.w3.org/TR/2001/REC-xml-c14n-20010315` come definito in http://www.w3.org/TR/xml-c14n
    - viene utilizzato unicamente l'algoritmo di firma `http://www.w3.org/2001/04/xmldsig-more#rsa-sha256` come definito in http://www.w3.org/TR/xmldsig-core/
    - viene utilizzato unicamente l'algoritmo di hash `http://www.w3.org/2001/04/xmlenc#sha256` come definito in http://www.w3.org/TR/xmlenc-core/
    - la trasformazione da applicare in fase di generazione della firma è quella definita in http://www.w3.org/TR/xmldsig-core/ come `http://www.w3.org/2000/09/xmldsig#envelopedsignature`
    - l'elemento `KeyInfo` contiene unicamente il certificato della chiave di firma
  version: "1.0"
# the domain of the service
host: api.corrispettivi.agenziaentrate.gov.it
# array of all schemes that your API supports
schemes:
  - https
# will be prefixed to all paths
basePath: /v1

paths:
################################################################################
#
#                                    DISPOSITIVI
#
################################################################################
  /dispositivi/:
    post:
      summary: Richiesta generazione del certificato per il dispositivo.
      description: |
        Richiede il certificato del dispositivo ed effettua il suo censimento, per l'invio è necessario inviare un file firmato conforme all'elemento `RichiestaCertificatoDispositivo` dello schema XSD `CorrispettiviMessaggiType_1.0.xsd`.
      
        Per ottenere il certificato è necessario richiamare il servizio fino alla restituzione del codice http 201 ed il certificato in formato X.509.
      
        In caso di errore fare riferimento alla Tabella 1 dell'`Allegato  - Code List`.
    
      consumes:
        - application/xml
      produces:
        - application/xml
      parameters:
#        - $ref: "#/parameters/IdentificativoProduttore"
        - in: body
          name: richiestaCertificatoDispositivo
          required: true
          description: certificato dispositivo
          schema:
             type: string
             format: binary
             description: |
              File xml conforme all'elemento `RichiestaCertificatoDispositivo` dello schema XSD `CorrispettiviMessaggiType_1.0.xsd` firmato utilizzando la XML Signature con il certificato di firma del produttore e contenente la CSR (Certificate Signing Request). La CSR dovrà avere nel CN l'identificativo univoco del dispositivo
      responses:
        201:
          description: |
            Generazione certificato completata.
          schema:
            type: string
            format: binary
            description: |
              Restituisce un file xml firmato con il certificato del sistema conforme all'elemento `EsitoRichiestaCertificatoDispositivo` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo operazione e il certificato X.509
        202:
          description: |
            Generazione certificato in corso.
      
        406:
          description: Parametri di input non validi
          schema:
            type: string
            format: binary
            description: |
              Restituisce un file xml firmato con il certificato del sistema conforme all'elemento `EsitoRichiestaCertificatoDispositivo` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        409:
          description: Certificato già cesinto
          schema:
            type: string
            format: binary
            description: |
              Restituisce un file xml firmato con il certificato del sistema conforme all'elemento `EsitoRichiestaCertificatoDispositivo` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        429:
          description: Superato il numero massimo di chiamate nell'unità di tempo
        403:
          description: Dispositivo non autorizzato alla richiesta
        default:
          description: Errore non previsto

    put:
      summary: Attivazione del dispositivo.
      description: |
        Attiva il dispositivo associandolo al gestore, con il dettaglio del verificatore che ha effettuato l'operazione.
        Il file è un xml firmato col certificato del dispositivo e conforme all'elemento `AttivaDispositivo` dello schema XSD `CorrispettiviMessaggiType_1.0.xsd`.
      
        In caso di errore fare riferimento alla Tabella 2 dell'`Allegato  - Code List`.

      consumes:
        - application/xml
      produces:
        - application/xml
      parameters:
#        - $ref: "#/parameters/IdentificativoDisp"
        - name: attivaDispositivo
          in: body
          description: dati attivazione
          required: true
          schema:
            type: string
            format: binary
            description: |
              File xml firmato con il certificato del dispositovo conforme all'elemento `AttivaDispositivo` dello schema XSD `CorrispettiviMessaggiType_1.0.xsd`
      responses: 
        200:
          description: |
             Attivazione eseguita.
          schema:
             type: string
             format: binary
             description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        406:
          description: Parametri di input non validi
          schema:
             type: string
             format: binary
             description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        409:
          description: Dispositivo non attivabile
          schema:
             type: string
             format: binary
             description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        403:
           description: Dispositivo non autorizzato alla richiesta
        default:
          description: Errore non previsto

  /dispositivi/corrispettivi/:
    post:
      summary: Invio dei corrispettivi.
      description: |
        Trasmette un file xml firmato con il certificato di firma del dispositivo conforme all'elemento `DatiCorrispettivi` dello schema XSD `CorrispettiviType_1.0.xsd`.
      
        In caso di errore fare riferimento alla Tabella 3 dell'`Allegato  - Code List`.

      consumes:
        - application/xml
      produces:
        - application/xml
      parameters:
#        - $ref: "#/parameters/IdentificativoDisp"
        - name: datiCorrispettivi
          in: body
          required: true
          schema:
            type: string
            format: binary
            description: |
                 File xml firmato con il certificato del dispositovo conforme all'elemento `DatiCorrispettivi` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo operazione
      responses:
        200:
          description: |
            Trasmissione eseguita.
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        406:
          description: Parametri di input non validi
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        409:
          description: Dispositivo non valido
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        403:
          description: Dispositivo non autorizzato alla richiesta
        429:
          description: Superato il numero massimo di chiamate nell'unità di tempo
        default:
          description: Errore non previsto

  /dispositivi/datifatture/:
    post:
      summary: Invio i dati delle fatture.
      description: |
        Trasmette un file xml firmato con il certificato di firma del dispositivo conforme all'elemento `DatiFattura` dello schema XSD `DatiFattura_v1.0.xsd`.
      
        In caso di errore fare riferimento alla Tabella 4 dell'`Allegato  - Code List`.
      
      consumes:
        - application/xml
      produces:
        - application/xml
      parameters:
#        - $ref: "#/parameters/IdentificativoDisp"
        - name: datiFatture
          in: body
          required: true
          schema:
            type: string
            format: binary
            description: |
                 File xml firmato con il certificato del dispositovo conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo operazione
      responses:
        200:
          description: |
            Trasmissione eseguita.
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        406:
          description: Parametri di input non validi
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        409:
          description: Dispositivo non valido
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        403:
          description: Dispositivo non autorizzato alla richiesta
        429:
          description: Superato il numero massimo di chiamate nell'unità di tempo
        default:
          description: Errore non previsto


  /dispositivi/scontrini/:
    post:
      summary: Invio gli scontrini parlanti.
      description: |
        Trasmette un file xml firmato con il certificato di firma del dispositivo conforme all'elemento `Scontrino` dello schema XSD `ScontriniType_v1.0.xsd`.
      
        In caso di errore fare riferimento alla Tabella 5 dell'`Allegato  - Code List`.
      
      produces:
        - application/xml
      consumes:
        - application/xml
      parameters:
#        - $ref: "#/parameters/IdentificativoDisp"
        - name: datiFatture
          in: body
          required: true
          schema:
            type: string
            format: binary
            description: |
                 File xml firmato con il certificato del dispositovo conforme all'elemento `Scontrino` dello schema `ScontriniType_v1.0.xsd` contenente l'identificativo operazione
      responses:
        200:
          description: |
            Trasmissione eseguita.
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        406:
          description: Parametri di input non validi
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        409:
          description: Dispositivo non valido
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        403:
          description: Dispositivo non autorizzato alla richiesta
        429:
          description: Superato il numero massimo di chiamate nell'unità di tempo
        default:
          description: Errore non previsto

  /dispositivi/evento/:
    put:
      summary: Invio di un evento da parte del dispositivo.
      description: |
        Invia un evento che modifica lo stato del dispositivo (i.e. guasto o disattivazione).
        Per i codici relativi alle tipologie di evento fare riferimento alla Tabella 6 dell'`Allegato  - Code List`.
        Per specificare il dettaglio dell'evento segnalato fare riferimento alla Tabella 7 dell'`Allegato  - Code List`.
        In caso di errore fare riferimento alla Tabella 8 dell'`Allegato  - Code List`.
      
      consumes:
        - application/xml
      produces:
        - application/xml
      parameters:
#        - $ref: "#/parameters/IdentificativoDisp"
        - name: eventoDispositivo
          in: body
          required: true
          schema:
            type: string
            format: binary
            description: |
             File xml firmato con il certificato del dispositovo conforme all'elemento `EventoDispositivo` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo operazione
      responses:
        200:
          description: anomalia registrata
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli errori riscontrati
        409:
          description: Dispositivo non valido
          schema:
            type: string
            format: binary
            description: |
              Il file xml resituito è firmato con il certificato del sistema e conforme all'elemento `EsitoOperazione` dello schema `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo dell'operazione
        403:
          description: Dispositivo non autorizzato alla richiesta
        default:
          description: Errore non previsto
 
Last edited:

Lello1964

Well-Known Member
Licensed User
Longtime User
Ciao, @Star-Dust ,
attenzione a non confondere le procedure per inviare gli scontrini da parte dei registratori di cassa omologati e la parte web tipo "Procedura semplificata dell'AdE".
Sono due coso distinte.
 

Star-Dust

Expert
Licensed User
Longtime User
allora questo
YAML:
# this is an example of the Uber API
# as a demonstration of an API spec in YAML
swagger: '2.0'
info:
  title: API REST Gestionali
  description: |
    API per l'utilizzo dei servizi di gestionali per gestori e produttori.
  version: '3.0'
host: api.ivaservizi.agenziaentrate.gov.it
# array of all schemes that your API supports
schemes:
  - https
# will be prefixed to all paths
basePath: /v1
paths:
################################################################################
#
#                                    GESTORI
#
################################################################################
################################################################################
# SERVIZI PORTALE
################################################################################
  '/gestori/me/dispositivi/':
    get:
      summary: Elenco dei dispositivi del gestore.
      description: |
        Consente di avere l'elenco dei dispositivi associati al gestore con una serie di filtri.
        
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
    
      produces:
        - application/json
      parameters:
        - $ref: '#/parameters/IdDispositivoParam'
        - name: tipologia
          in: query
          type: string
          description: Filtro per tipologia di dispositivo
        - name: stato
          in: query
          type: string
          description: Filtro per stato del dispositivo
        - name: start
          in: query
          type: string
          description: Scostamento dal primo elemento restituito
        - name: perPage
          in: query
          type: string
          description: Numero di elementi per pagina (max 50)
        - name: colsIdx
          in: query
          type: string
          description: Numeri di colonna da ordinare
        - name: colsOrder
          in: query
          type: string
          description: Tipo di ordinamento in base alle colonne specificate su colsIdx
      responses:
        '200':
          description: Elenco dei dispositivi associati al gestore
          schema:
            $ref: '#/definitions/PaginaDispositivo'
        '403':
          description: Non autorizzato
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/dispositivi/{uid}/':
    put:
      summary: Cambia stato dispositivo.
      description: |
        Consente di cambiare lo stato del dispositivo a fronte di un evento.
        Per i codici di dettaglio fare riferimento alla Tabella 7 all'`Allegato  - Code List`.
        
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        * consumes: - application/json
        
      produces:
          - application/json
      consumes:
          - application/json
      parameters:
        - name: uid
          description: Identificativo univoco del dispositivo
          in: path
          type: string
          required: true
        - name: stato
          in: body
          required: true
          description: motivo cambio stato
          schema:
            $ref: '#/definitions/EventoDispositivo'
      responses:
        '200':
          description: Operazione eseguita.
          schema:
            $ref: '#/definitions/EsitoOperazione'
        '403':
          description: Non autorizzato
        '404':
          description: Dispositivo non trovato
        '406':
          description: Parametri di input non validi
          schema:
            $ref: '#/definitions/EsitoOperazione'
        '409':
          description: Dispositivo non valido
          schema:
            $ref: '#/definitions/EsitoOperazione'
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
            
    delete:
      summary: Dismissione del dispositivo.
      description: |
        Consente di dismettere il dispositivo.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      consumes:
        - application/json
      parameters:
        - name: uid
          description: Identificativo univoco del dispositivo
          in: path
          type: string
          required: true
        - name: stato
          in: body
          required: true
          description: cambio di stato
          schema:
            $ref: '#/definitions/DismissioneDispositivo'
      responses:
        '200':
          description: Dismissione correttamente effettuata
          schema:
            type: string
            format: binary
            description: >
              Il file xml resituito è firmato con il certificato del sistema e
              conforme all'elemento `EsitoOperazione` dello schema
              `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio degli
              errori riscontrati
        '403':
          description: Non autorizzato
        '404':
          description: Dispositivo non trovato
        '406':
          description: Parametri di input non validi
          schema:
            type: string
            format: binary
            description: >
              Restituisce un file xml firmato con il certificato del sistema
              conforme all'elemento `EsitoRichiestaCertificatoDispositivo` dello
              schema `CorrispettiviMessaggiType_1.0.xsd` contenente il dettaglio
              degli errori riscontrati
        '409':
          description: Dispositivo non valido
          schema:
            type: string
            format: binary
            description: >
              Il file xml resituito è firmato con il certificato del sistema e
              conforme all'elemento `EsitoOperazione` dello schema
              `CorrispettiviMessaggiType_1.0.xsd` contenente l'identificativo
              dell'operazione     
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/dispositivi/{uid}/info/':
    get:
      summary: Dettaglio del dispositivo.
      description: |
        Mostra il dettaglio delle informazioni associate al dispositivo.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      parameters:
        - name: uid
          description: Identificativo univoco del dispositivo
          in: path
          type: string
          required: true
      responses:
        '200':
          description: dettaglio dispositivo
          schema:
            $ref: '#/definitions/DispositivoAssociato'
        '403':
          description: Non autorizzato
        '404':
          description: Dispositivo non trovato
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
    put:
      summary: Aggiorna i dati di dettaglio del dispositivo.
      description: |
        Consente di aggiornare le sole informazioni modificabili del dispositivo.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * consumes: - application/json
        
      consumes:
        - application/json
      parameters:
        - name: uid
          description: Identificativo univoco del dispositivo
          in: path
          type: string
          required: true
        - name: dispositivo
          in: body
          required: true
          description: Dati da aggiornare del dispositivo
          schema:
            $ref: '#/definitions/DispositivoAssociato'
      responses:
        '200':
          description: Operazione eseguita.
        '403':
          description: Non autorizzato
        '404':
          description: Dispositivo non trovato
        '406':
          description: Parametri di input non validi
        '409':
          description: Dispositivo non valido
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/dispositivi/{uid}/info/qrcode/':
    get:
      summary: Download del qrcode.
      description: |
        Consente di scaricare il qrcode del dispositivo in formato jpeg.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - image/jpeg   
        
      produces:
        - image/jpeg
      parameters:
        - name: uid
          description: Identificativo univoco del dispositivo
          in: path
          type: string
          required: true
      responses:
        '200':
          description: Immagine qrcode che identifica il dispositivo
          schema:
            type: string
            format: binary
            description: Immagine del qrcode in formato jpeg
        '202':
          description: Immagine qrcode non ancora disponibile
        '403':
          description: Non autorizzato
        '404':
          description: Dispositivo non trovato
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/dispositivi/{uid}/manutenzioni/':
    get:
      description: |
        manutenzioni effettuate sul dispositivo
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      parameters:
        - name: uid
          in: path
          required: true
          type: string
      responses:
        '200':
          description: Elenco delle manutenzioni effettuate sul dispositivo
          schema:
            type: array
            items:
              $ref: '#/definitions/ManutenzioneDispositivo'
        '403':
          description: Non autorizzato
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
################################################################################
# CENSIMENTO DISPOSITIVI: DA TRANSITORIO
################################################################################
  /gestori/me/dispositivi/censimenti/:
    post:
      summary: Avvia il censimento di un elenco di dispositivi.
      description: |
        Effettua il censimento di un elenco di dispositivi identificati da `idDispositivo` univoco assegnato dal gestore. L'operazione rilascia un `idOperazione` da utilizzare per verificare il completamento del censimento.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        * consumes: - application/json
        
      produces:
        - application/json
      consumes:
        - application/json
      parameters:
        - name: elencoDispositivi
          in: body
          schema:
            type: array
            items:
              $ref: '#/definitions/DispositivoDaCensire'
      responses:
        '202':
          description: Operazione di censimento avviata
          schema:
            type: string
            description: Identificativo operazione
        '403':
          description: Non autorizzato alla richiesta
        '406':
          description: Parametri di input non validi
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
    get:
      summary: Restituisce l'elenco dei censimenti richiesti.
      description: |
        Restituisce l'elenco dei censimenti richiesti con il dettaglio dello stato di avanzamento.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      parameters:
        - $ref: '#/parameters/IdOperazioneParam'
        - name: dataDa
          type: string
          format: date
          in: query
          description: Data di inizio
        - name: dataA
          type: string
          format: date
          in: query
          description: Data di fine
      responses:
        '200':
          description: Elenco dei censimenti richiesti secondo i parametri specificati
          schema:
            type: array
            items:
              $ref: '#/definitions/Censimento'
        '403':
          description: Non autorizzato
        '406':
          description: Parametri non validi
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/dispositivi/censimenti/{idOperazione}':
    get:
      summary: Verifica lo stato di avanzamento di un censimento di dispositivi.
      description: |
        Restituisce lo stato del censimento per tutti i disposiviti associati ad un censimento precedentemente richiesto. Per ogni `idDispositivo` è restituito lo stato del censimento e l'identificativo univoco assegnato dal sistema `uid`.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      parameters:
        - name: idOperazione
          description: Identificativo del censimento
          in: path
          type: string
          required: true
      responses:
        '200':
          description: Elenco dispositivi censiti
          schema:
            $ref: '#/definitions/StatoCensimentoMassivo'
        '403':
          description: Non autorizzato
        '404':
          description: Censimento non trovato
        '406':
          description: Parametri di input non validi
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/dispositivi/censimenti/{idOperazione}/qrcode/':
    get:
      summary: Download qrcode.
      description: |
        Effettua il download dei soli qrcode generati relativamente all'`idOperazione`.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/octet-stream   
        
      produces:
        - application/octet-stream
      parameters:
        - name: idOperazione
          description: Identificativo del censimento
          in: path
          type: string
          required: true
      responses:
        '200':
          description: |
            File zip dei qrcode generati, ogni immagine ha il nome della matricola con estensione .jpg
          schema:
            type: string
            format: binary
            description: File zip dei qrcode generati
        '403':
          description: non autorizzato alla richiesta
        '404':
          description: Censimento non trovato
        '406':
          description: Censimento non completato
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
################################################################################
# INTERROGAZIONE CORRISPETTIVI
################################################################################
  /gestori/me/corrispettivi/:
    get:
      summary: Elenco corrispettivi inviati.
      description: |
        Restituisce un elenco filtrato dei corrispettivi inviati.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      parameters:
        - name: dataRilevazioneDa
          type: string
          format: date
          in: query
          description: Data di rilevazione del corrispettivo
        - name: dataRilevazioneA
          type: string
          format: date
          in: query
          description: Data di rilevazione del corrispettivo
        - name: idDispositivo
          type: string
          in: query
          description: Identificativo del dispositivo assegnato dal gestore
        - name: uid
          type: string
          in: query
          description: Identificativo del dispositivo assegnato dal sistema
        - name: statoDispositivo
          in: query
          description: stato del dispositivo secondo i valori espressi da StatoDispositivo
          type: string
        - name: statoTrasmissione
          in: query
          description: >-
            stato del corrispettivo secondo i valori espressi da
            StatoCorrispettivo
          type: string
        - name: idTrasmissione
          in: query
          description: Identificativo del corrispettivo assegnato dal sistema
          type: string
        - $ref: '#/parameters/PaginazioneInizio'
        - $ref: '#/parameters/PaginazioneElementiPerPagina'
        - $ref: '#/parameters/OrdinamentoColonne'
        - $ref: '#/parameters/OrdinamentoTipi'
      responses:
        '200':
          description: Elenco corrispettivi
          schema:
            $ref: '#/definitions/PaginaCorrispettivo'
        '403':
          description: Non autorizzato alla richiesta
        '406':
          description: Parametri di input non validi
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/gestori/me/corrispettivi/{idOperazione}/':
    get:
      summary: Dettaglio corrispettivo
      description: |
          Mostra i dettagli di un corrispettivo trasmesso.
          
          Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto (produces - application/json)     
        
      produces:
        - application/json
      parameters:
        - name: idOperazione
          in: path
          description: Identificativo del corrispettivo
          required: true
          type: string
      responses:
        '200':
          description: Dettaglio del corrispettivo
          schema:
            $ref: '#/definitions/DettaglioCorrispettivo'
        '403':
          description: Non autorizzato
        '404':
          description: Corrispettivo non trovato
        '415':
            description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
    put:
      summary: Segnalazione corrispettivo anomalo
      description: |
         Consente di segnalare un corrispettivo anomalo
        
         Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto (consumes - application/json)     
        
      consumes:
        - application/json
      parameters:
        - name: idOperazione
          in: path
          description: Identificativo del corrispettivo
          required: true
          type: string
        - name: motivazione
          in: body
          required: true
          schema:
            description: Motivazione della segnalazione anomala
            type: string
      responses:
        '200':
          description: Operazione effettuata
        '403':
          description: Non autorizzato
        '404':
          description: Corrispettivo non trovato
        '415':
            description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
################################################################################
#                          PRODUTTORI : DA DEFINITIVO
################################################################################
  /produttori/me/dispositivi/censimenti/:
    post:
      summary: Censimento massivo dei dispositivi.
      description: |
        Consente di effettuare la richiesta censimento dei dispositivi e la generazione dei corrispondenti certificati. Viene restituito un identificativo operazione `idOperazione` per scaricare successivamente i certificati.
        
        lo ZIP deve contenere un file con nome `manifest.xml` rispondente all'elemento `RichiestaMassivaCertificatiDispositivo` dello schema `FabbricanteTypes_1.0.xsd` ed un file con nome pari al campo idDispositivo per ogni certificato da richiedere con estensione .csr
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        * consumes: - application/octet-stream
    
      produces:
        - application/json
      consumes:
        - application/octet-stream
      parameters:
        - name: archivioCsr
          in: body
          required: true
          description: dispositivi da censire
          schema:
            type: string
            format: binary
            description: |
              File zip  contenente le CSR per la generazione dei certificati. Il CN presente su ogni CSR deve essere costituito dall'identificativo univoco del dispositivo assegnato dal produttore `idDispositivo`.
      responses:
        '202':
          description: Censimento massivo avviato
          schema:
            type: string
            description: Identificativo operazione
        '403':
          description: Non autorizzato
        '406':
          description: Parametri di input non validi
        '415':
          description: Il valore del content-type non è quello atteso         
        default:
          description: Errore non previsto
    get:
      summary: Restituisce l'elenco dei censimenti richiesti.
      description: |
        Restituisce l'elenco dei censimenti richiesti con il dettaglio dello stato di avanzamento.
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
      
      produces:
        - application/json
      parameters:
        - $ref: '#/parameters/IdDispositivoParam'
        - name: dataDa
          type: string
          format: date
          in: query
          description: Data di inizio
        - name: dataA
          type: string
          format: date
          in: query
          description: Data di fine
      responses:
        '200':
          description: Elenco dei censimenti richiesti secondo i parametri specificati
          schema:
            type: array
            items:
              $ref: '#/definitions/Censimento'
        '403':
          description: Non autorizzato
        '406':
          description: Parametri non validi
        '415':
          description: Il valore del content-type non è quello atteso
        default:
          description: Errore non previsto
  '/produttori/me/dispositivi/censimenti/{idOperazione}/':
    get:
      summary: Dettaglio del censimento massivo dei dispositivi.
      description: |
        Consente di verificare lo stato di avanzamento di una richiesta di censimento massivo di dispositivi. Inviando l'identificativo operazione `idOperazione` è possibile verificare per ogni dispositivo lo stato di avanzamento e successivamente scaricare i certificati. Per ogni `idDispositivo` è restituito lo stato della generazione del certificato e l'identificativo univoco assegnato dal sistema `uid`.
        
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/json   
        
      produces:
        - application/json
      parameters:
        - name: idOperazione
          in: path
          type: string
          description: Identificativo operazione del censimento massivo dispositivi
          required: true
      responses:
        '200':
          description: Elenco dei certificati e stato di generazione
          schema:
            $ref: '#/definitions/StatoCensimentoMassivo'
        '403':
          description: Non autorizzato
        '404':
          description: Censimento massivo non trovato
        '406':
          description: Parametri non validi
        '415':
          description: Il valore del content-type non è quello atteso         
        default:
          description: Errore non previsto
  '/produttori/me/dispositivi/censimenti/{idOperazione}/download/':
    get:
      summary: Scarica i certificati.
      description: |
        Consente di scaricare un file zip contenente tutti i certificati e qrcode generati associati ad una richiesta di censimento massivo di dispositivi.
        Il file ZIP conterrà per ogni dispositivo un file con nome pari all'`idDispositivo` ed estensione .cer e .jpg rispettivamente per il certificato o il qrcode
                
        Assicurarsi che i valori relativi al content-type siano conformi a quanto previsto:
        * produces: - application/octet-stram
        
      produces:
        - application/octet-stream
      parameters:
        - name: idOperazione
          in: path
          type: string
          description: Identificativo operazione
          required: true
      responses:
        '200':
          description: Un file zip con tutti i certificati ed i qrcode generati
          schema:
            type: string
            format: binary
            description: |
              Formato del file ZIP
        '403':
          description: Non autorizzato
        '404':
          description: Censimento massivo non trovato
        '406':
          description: Censimento non completato
        '415':
          description: Il valore del content-type non è quello atteso   
        default:
          description: Errore non previsto       
parameters:
  IdDispositivoParam:
    name: idDispositivo
    type: string
    in: query
    description: Identificativo del dispositivo assegnato dal gestore o produttore
  IdOperazioneParam:
    name: idOperazione
    type: string
    in: query
    description: Identificativo dell'operazione
  PaginazioneInizio:
    name: start
    in: query
    type: string
    description: Scostamento dal primo elemento restituito (vale zero se non specificato)
  PaginazioneElementiPerPagina:
    name: perPage
    in: query
    type: string
    description: Numero di elementi per pagina (max 50)
  OrdinamentoColonne:
    name: colsIdx
    in: query
    type: array
    items:
      type: integer
    collectionFormat: csv
    description: Numeri di colonna da ordinare (per ora non implementato)
  OrdinamentoTipi:
    name: colsOrder
    in: query
    type: array
    items:
      type: string
      enum:
        - A
        - D
    collectionFormat: csv
    description: >-
      Tipo di ordinamento in base alle colonne specificate su colsIdx (per ora
      non implementato)
################################################################################
#                                    TIPI
################################################################################
definitions:
  ##############################################################################
  # TIPI PER DISPOSITIVI
  ##############################################################################
  DispositivoDaCensire:
    type: object
    required:
      - idDispositivo
      - informazioniAddizionali
    properties:
      idDispositivo:
        type: string
        description: Matricola ovvero identificativo univoco del dispositivo attribuito dal gestore o produttore
      geolocalizzazione:
        $ref: '#/definitions/GeoTag'
      informazioniAddizionali:
        $ref: '#/definitions/InformazioniAddizionaliDispositivo'
  InformazioniAddizionaliDispositivo:
    type: object
    required:
      - protocolloComunicazione
      - tipoDistributore
    properties:
      protocolloComunicazione:
        type: string
      tipoDistributore:
        type: string
  DispositivoCensito:
    type: object
    required:
      - idDispositivo
      - stato
    properties:
      idDispositivo:
        type: string
        description: Matricola ovvero identificativo univoco del dispositivo attribuito dal gestore o produttore
      stato:
        type: string
        description: stato di censimento del dispositivo
        enum:
          - CENSITO
          - CENSIMENTO_IN_CORSO
          - ERRORE
      uid:
        type: string
        description: Identificativo univoco assegnato al dispositivo dal sistema
      dettaglio:
        type: array
        description: Eventuale elenco degli errori
        items:
          $ref: '#/definitions/Errore'
  StatoCensimentoMassivo:
    type: object
    required:
      - completato
      - dispositivi
      - errori
    properties:
      completato:
        type: boolean
      dispositivi:
        type: array
        items:
          $ref: '#/definitions/DispositivoCensito'
      errori:
        type: array
        items:
          $ref: '#/definitions/Errore'
  DispositivoAssociato:
    type: object
    required:
      - uid
      - idDispositivo
      - stato
      - tipologia
    properties:
      uid:
        type: string
        description: Identificativo univoco assegnato al dispositivo dal sistema
      idDispositivo:
        type: string
        description: Matricola ovvero identificativo univoco del dispositivo attribuito dal gestore o produttore
      dataAttivazione:
        type: string
        format: dateTime
        description: Data Attivazione dispositivo
      dataMessaInServizio:
        type: string
        format: dateTime
        description: data Messa In Servizio
      marchio:
        type: string
        description: Marchio
      modello:
        type: string
        description: modello dispositivo
      stato:
        $ref: '#/definitions/StatoDispositivo'
      tipologia:
        $ref: '#/definitions/TipologiaDispositivo'
      geolocalizzazione:
        $ref: '#/definitions/GeoTag'
      informazioniAddizionali:
        $ref: '#/definitions/InformazioniAddizionaliDispositivo'
      riferimentoApprovazione:
        $ref: '#/definitions/RiferimentoApprovazione'
  RiferimentoApprovazione:
    type: object
    required:
      - numero
      - data
    properties:
      numero:
        type: string
        description: Numero dell'approvazione
      data:
        type: string
        format: date
        description: Data dell'approvazione
  ##############################################################################
  # TIPI PER CENSIMENTI
  ##############################################################################
  Censimento:
    type: object
    required:
      - idOperazione
      - dataCensimento
      - stato
      - totali
    properties:
      idOperazione:
        type: string
      dataCensimento:
        type: string
        format: date
      stato:
        type: string
        enum:
          - IN_CORSO
          - COMPLETATO
      totali:
        $ref: '#/definitions/Totali'
  Totali:
    type: object
    required:
      - richiesti
      - validi
      - errati
    properties:
      richiesti:
        type: number
        format: int
      validi:
        type: number
        format: int
      errati:
        type: number
        format: int
  ##############################################################################
  # TIPI PER CORRISPETTIVI
  ##############################################################################
  DettaglioCorrispettivo:
    type: object
    required:
      - idOperazione
      - stato
      - dataOraTrasmissione
    properties:
      idOperazione:
        type: string
        description: Identificativo univoco della trasmissione
      stato:
        $ref: '#/definitions/StatoCorrispettivo'
      labelStato:
        type: string
        description: Decodifica stato corrispettivo
      dataOraTrasmissione:
        type: string
        format: date-time
        description: Data e ora della trasmissione
      dataRilevazione:
        type: string
        format: date
        description: Data della rilevazione
      progressivoInvio:
        type: integer
        format: int64
        description: Progressivo invio
      inattivita:
        $ref: '#/definitions/PeriodoInattivita'
      uid:
        type: string
        description: uid del dispositivo che ha inviato il corrispettivo
      geolocalizzazione:
        $ref: '#/definitions/GeoTag'
      interventiTecnici:
        type: array
        items:
          $ref: '#/definitions/ManutenzioneDispositivo'
      idDispositivo:
        type: string
        description: Identificativo univoco del dispositivo assegnato dal gestore
      tipologiaDispositivo:
        $ref: '#/definitions/TipologiaDispositivo'
      labelTipologiaDispositivo:
        type: string
        description: Decodifica tipologia dispositivo
      anomalia:
        $ref: '#/definitions/AnomaliaCorrispettivo'
  AnomaliaCorrispettivo:
    type: object
    required:
      - flag
    properties:
      flag:
        type: boolean
        description: 'True se il corrispettivo è anomalo, false altrimenti'
      motivazione:
        type: string
        description: Motivazione della anomalia (presente solo se flag = true)
  Corrispettivo:
    type: object
    required:
      - idOperazione
      - stato
      - dataOraTrasmissione
    properties:
      idOperazione:
        type: string
        description: Identificativo univoco della trasmissione
      stato:
        $ref: '#/definitions/StatoCorrispettivo'
      labelStato:
        type: string
        description: Decodifica stato corrispettivo
      dataOraTrasmissione:
        type: string
        format: date-time
        description: Data e ora della trasmissione
  PaginaCorrispettivo:
    type: object
    required:
      - dataPage
      - elencoCorrispettivi
    properties:
      dataPage:
        $ref: '#/definitions/DataPage'
      elencoCorrispettivi:
        type: array
        description: Elenco dei risultati di ricerca
        items:
          $ref: '#/definitions/Corrispettivo'
  StatoCorrispettivo:
    type: string
    description: Stati del corrispettivo
    enum:
      - TRASMESSO
      - IN_ELABORAZIONE
      - ELABORATO
      - ERRORE
      - ANOMALO
      - SCARTATO
  PeriodoInattivita:
    required:
      - inizio
      - fine
    properties:
      fine:
        format: date-time
        type: string
      inizio:
        format: date-time
        type: string
  ManutenzioneDispositivo:
    type: object
    description: dati della manutenzione effettutata
    required:
      - codice
      - descrizione
      - dataOraIntervento
      - nota
    properties:
      codice:
        type: string
      descrizione:
        type: string
      dataOraIntervento:
        type: string
        format: date-time
        description: Data e ora della trasmissione
      nota:
        type: string
  ##############################################################################
  # TIPI PER DISPOSITIVI
  ##############################################################################
  PaginaDispositivo:
    type: object
    required:
      - dataPage
      - dispositivi
    properties:
      dataPage:
        $ref: '#/definitions/DataPage'
      dispositivi:
        type: array
        items:
          $ref: '#/definitions/Dispositivo'
  Dispositivo:
    type: object
    required:
      - uid
      - idDispositivo
      - stato
      - tipologia
    properties:
      uid:
        type: string
        description: Identificativo univoco assegnato al dispositivo dal sistema
      idDispositivo:
        type: string
        description: Identificativo univoco assegnato dal gestore
      stato:
        $ref: '#/definitions/StatoDispositivo'
      tipologia:
        $ref: '#/definitions/TipologiaDispositivo'
      geolocalizzazione:
        $ref: '#/definitions/GeoTag'
  GeoTag:
    type: object
    required:
      - lat
      - lon
    properties:
      lat:
        type: number
        description: latitudine
        format: double
      lon:
        type: number
        description: longitudine
        format: double
  StatoDispositivo:
    type: string
    description: Stati del dispositivo
    enum:
      - CENSITO
      - ATTIVATO
      - IN_SERVIZIO
      - FUORI_SERVIZIO
      - DISATTIVATO
      - DISMESSO
  TipologiaDispositivo:
    type: string
    description: |
      Tipologia del dispositivo:
      - DA = Distributore automatico
      - RT = Registratore Telematico
      - MC = Multi cassa
      - DM = Dispositivo Mobile
      - DA_TRANS = Sistemi Master Soluzione Transitoria
    enum:
      - DA
      - RT
      - MC
      - DM
      - DA_TRANS
  DismissioneDispositivo:
    type: object
    required:
      - dataOra
      - dettaglio
    properties:
      dataOra:
        type: string
        format: date-time
        description: Data e ora della trasmissione
      dettaglio:
        $ref: '#/definitions/Dettaglio'
  EventoDispositivo:
    type: object
    required:
      - evento
      - dataOra
      - dettaglio
    properties:
      evento:
        $ref: '#/definitions/EventiStatoDispositivo'
      dataOra:
        type: string
        format: date-time
        description: Data e ora della trasmissione
      dettaglio:
        $ref: '#/definitions/Dettaglio'
  EventiStatoDispositivo:
    type: string
    enum:
      - DISMISSIONE
      - DISATTIVAZIONE
      - ATTIVAZIONE
      - FUORI_SERVIZIO

  Dettaglio:
    type: object
    required:
      - codice
    properties:
      codice:
        type: string
        description: Codice di errore
      descrizione:
        type: string
        description: Messaggio di dettaglio
  Errore:
    type: object
    required:
      - codice
      - messaggio
    properties:
      codice:
        type: string
        description: Codice di errore
      messaggio:
        type: string
        description: Messaggio di errore
  DataPage:
    type: object
    required:
      - dataSetSize
    properties:
      dataSetSize:
        type: number
        format: int
        description: Totale elementi individuati per i parametri forniti
      pageSize:
        type: number
        format: int
        description: Numero di elementi della pagina restituita
        

  EsitoOperazione:
    type: object
    required: 
      - idOperazione
    properties:
      idOperazione:
        type: string
        description: operazione utente
      errori:
        type: array
        items:
         $ref: '#/definitions/Errore'
 

Lello1964

Well-Known Member
Licensed User
Longtime User
a maggior ragione si riferisce al registratore di cassa Rt.

ad esempio quando fa riferimento a :

description: Identificativo univoco del dispositivo
 

Lello1964

Well-Known Member
Licensed User
Longtime User
vedi :


 

Star-Dust

Expert
Licensed User
Longtime User
Quindi in conclusione abbiamo le specifiche tecniche per i RT, potremmo fingerci di avere un RT e inviare il tutto dal pc ? ? ?

L'AdE dice che è possibile usare una soluzione SW propria per inviare i corrispettivi (volgarmente detti scontrini fiscali) ma non rilascia dettagli tecnici su come fare. Alcuni si sono attrezzati per riprodurre il protocollo usato dall'App ufficiale dell'Ade per questo scopo.

Tenendo conto che ci sono adesso diversi SW che offrono questo servizio, le alternative sono due... O tutti hanno fatto Web scraping e hanno riprodotto il protocollo oppuro hanno ottenuto in qualche modo le caratteristiche tecniche all'AdE

E questa è la conclusione conclusiva.
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…