# Descrizione Api

# ChangeLog

**Versioni dei servizi attuali in PRODUZIONE**

- signature-write ([Info versione corrente](https://signature-write-api.agyo.io/api/info "Info versione corrente"))
- signature-read([Info versione corrente](https://signature-read-api.agyo.io/api/info "Info versione corrente"))
- signer-write([Info versione corrente](https://ts-signer-write-api.agyo.io/api/info "Info versione corrente"))
- signer-read([Info versione corrente](https://ts-signer-read-api.agyo.io/api/info "Info versione corrente"))
- signature-config([Info versione corrente](https://signature-config.agyo.io/api/info "Info versione corrente"))
- digital-sign-api ([Info versione corrente](https://ts-digital-sign-api.agyo.io/info "Info versione corrente"))
- signature-authorizer-read([Info versione corrente](https://ts-signature-authorizer-read.agyo.io/info))
- signature-authorizer-write([Info versione corrente](https://ts-signature-authorizer-write.agyo.io/info))

---

---

**Versioni dei servizi attuali in TEST**

- signature-write ([Info versione corrente](https://signature-write-api-test.agyo.io/api/info "Info versione corrente"))
- signature-read([Info versione corrente](https://signature-read-api-test.agyo.io/api/info "Info versione corrente"))
- signer-write([Info versione corrente](https://ts-signer-write-api-test.agyo.io/api/info "Info versione corrente"))
- signer-read([Info versione corrente](https://ts-signer-read-api-test.agyo.io/api/info "Info versione corrente"))
- signature-config([Info versione corrente](https://signature-config-test.agyo.io/api/info "Info versione corrente"))
- digital-sign-api ([Info versione corrente](https://ts-digital-sign-api-test.agyo.io/info "Info versione corrente"))
- signature-authorizer-read([Info versione corrente](https://ts-signature-authorizer-read-test.agyo.io/info))
- signature-authorizer-write([Info versione corrente](https://ts-signature-authorizer-write-test.agyo.io/info))

---

---

**Elenco rilascio nuove funzionalità in PRODUZIONE**

- **<span style="color: #ff0000;">nextRelease</span>**
- **14/07/2021**
    - signature-write **`v2.0.26`**
    - signer-write **`v2.0.17`**
    - signature-authorizer-write `<strong>v1.2.2</strong>`
    - signer-read `<strong>v1.1.12</strong>`
    - signature-authorizer-read `<strong>v1.1.1</strong>`
    - signature-read `<strong>v2.0.15</strong>`
- **14/05/2021**
    - signer-write `<strong>v2.0.14</strong>`
- **03/05/2021**
    - signature-write `<strong>v2.0.20</strong>`
    - signature-read `<strong>v2.0.13</strong>`
    - signer-write `<strong>v2.0.12</strong>`
    - signer-read `<strong>v1.1.11</strong>`
    - signature-config `<strong>v1.0.0</strong>`
    - digital-sign-api `<strong>v1.2.1</strong>`
    - signature-authorizer-read `<strong>v1.0.4</strong>`
    - signature-authorizer-write `<strong>v1.1.3</strong>`

---

---

**ChangeLog**

##### 14/07/2021 **Rilasciato in produzione**

- signature-write `v2.0.26`: fix per non inviare la mail in caso di signatureType **fes**
- signature-authorizer-write `v1.2.1/v1.2.2` :
- signature-authorizer-read `v1.1.0`:
- signer-read `v1.1.12` :
- signature-read `v2.0.15`

---

##### 19/06/2021

- signature-write `v2.0.25`: fix per invio del cambio stato di un documento tramite webhook

---

##### 17/06/2021

- signer-write `v2.0.17` : fix metadati per modulo FEA

---

##### 16/06/2021

- signature-authorizer-write `v1.2.0` : aggiunti permessi avanzati per gestione tipologie di documenti e firmatari
- signature-authorizer-read `v1.1.0`: aggiunti permessi avanzati per gestione tipologie di documenti e firmatari

---

##### 15/06/2021

- signer-write `v2.0.16` : fix metadati per modulo FEA
- signature-write `v2.0.24`: fix per invio del cambio stato di un documento tramite webhook

---

##### 19/05/2021

- signature-write `v2.0.21/v2.0.22/v2.0.23` : aggiunto controllo sulla parte di upload async per evitare che vengano caricati pdf protetti da password, aggiunto campo `webHookUrl` nella request dell'upload async, aggiunta la possibilità durante l'upload async di creare sessioni di FES grafometriche con utilizzo di tavolette wacom

---

##### 18/05/2021

- signer-write `v2.0.15` : aggiunta la possibilità di creare la FEA cartacea con in allegato le immagine dei documenti del firmatario

---

##### 14/05/2021 **Rilasciato in produzione**

- signer-write `v2.0.13/v2.0.14` : fix aggiornamento certificati FEQ

---

##### 03/05/2021 **Rilasciato in produzione**

---

##### 30/04/2021

- digital-sign-api `v1.2.0/v1.2.1` : modificate le api di lettura e scrittura per i dati aggiuntivi FEA dov'è stato eliminato il foroCompetente, eliminate api non più utilizzabili
- signature-authorizer-read `v1.0.4` : aggiunto /info
- signature-authorizer-write `v1.1.3` : fix body request, aggiunta /info
- signature-config `v1.0.0` : aggiunti log per i pacchetti disattivati
- signature-write `v2.0.20` : disattivati i controlli sulla data di scadenza(**expiryDate**) sul validatore per processo async, disabilitato la parte di managerId per le connessioni, rimessa chiamata al vecchio servizio per gli adempimenti
- signature-read `v2.0.13` : disattivato il controllo sull'obbligatorietà del campo **documentIntermediaryId** per la ricerca dei documenti

---

##### 28/04/2021

- signature-write `v2.0.19` : riattivati i controlli sulla data di scadenza(**expiryDate**) sul validatore per processo async

---

##### 21/04/2021

- signer-write `v2.0.12` : fix creazione FEA da gestore per una gestita, aggiunti log per consumi metering

---

##### 15/04/2021

- signature-config `v0.0.9`: fix per la ricerca delle configurazione e del sigillo con gli uffici

---

##### 14/04/2021

- signature-write `v2.0.18` : aggiunto controlli per l'upload async con sigillo personale
- signature-config `v0.0.8`: eliminato foro competente nei dati aggiuntivi
- signer-write `v2.0.11` : fix conteggio certificati, aggiornata creazione FEA senza foro competente
- signer-read `v1.1.11` : eliminato foro competente per la rigenerazione del modulo FEA cartaceo
- signature-read `v2.0.12` : aggiornata libreria per i permessi

---

##### 13/04/2021

- signature-read `v2.0.11` : aggiunto filtro per managerId sui documenti eliminati
- signature-config `v0.0.7`: fix lettura informazioni sigillo

---

##### 31/03/2021

- signer-read `v1.1.10` : fix download modulo FEA cartaceo

---

##### 25/03/2021

- signer-write `v2.0.8` : aggiornato modulo FEA

---

##### 24/03/2021

- signature-config `v0.0.6` : fix api per l'aggiunta dei dati aggiuntivi
- signature-write `v2.0.16` : aggiunto il campo `strictExpiryDate` per il processo async, fix processo async in caso di FDS

---

##### 15/03/2021

- signature-config `v0.0.3` : fix aggiornamento pacchetto
- signer-write `v2.0.7` : aggiunta una chiamata per la lettura della config prima di allocare i consumi per i certificati

---

##### 12/03/2021

- signature-config `v0.0.2` : aggiunte api per la scrittura e lettura degli extra data
- signature-write `v2.0.15` : cambiato endpoint per la lettura della configurazione del pacchetto durante l'upload di un documento

---

##### 11/03/2021

- signer-write `v2.0.6` : fix consumi certificati di FEQ automatica e remota

---

##### 09/03/2021

- signer-write `v2.0.5` : cambiato contratto per FEQ automatica/remota con l'aggiunta di numero di telefono e email

---

##### 02/03/2021

- signer-write `v2.0.4` : fix create fea with paperSignature

---

##### 25/02/2021

- signer-write `v2.0.2`/`v2.0.3` : fix su api v2 per mantenere la retro compatibilità: 
    - create signer con il campo `fiscalCountry` non obbligatorio
    - create FEA con `useOtp`
    - assign e unAssign request

---

##### 24/02/2021

- signer-write `v2.0.1` : fix su api v1 per mantenere la retro compatibilità

---

##### 23/02/2021

- signer-write `v2.0.0` : introduzione api v2, modificate api per essere utilizzate anche per il servizio adempimenti
- signer-read `v1.1.9` : modificate api per essere utilizzate anche per il servizio adempimenti
- signature-write `v2.0.14` : modificate api per essere utilizzate anche per il servizio adempimenti
- signature-read `v2.0.10` : reso obbligatorio il campo documentIntermediaryId nella ricerca

---

---

# Signer Read

API di lettura per *Ts Digital Signature per le operazioni riguardanti i firmatari e i certificati.* [Swagger](https://ts-signer-read-api-test.agyo.io/api/swagger-ui.html#/)

#### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

Il `Content-Type` deve essere `application/json`

<span style="color: #ff0000;">**In tutte le chiamate dove è richiesto <span style="text-decoration: underline;">ServiceName</span> non impostare nulla a meno che si vuole utilizzare le api per il servizio adempimenti.** </span>

####  

#### Descrizione API

---

##### **SIGNER**

---

**Signer search**

<p class="callout info"><span class="opblock-summary-method">POST </span><span class="opblock-summary-path" data-path="/v1/rest/signers/search">[​/v1​/rest​/signers​/search](https://ts-signer-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/api-docs/swagger-config#/signer-controller/getSignersPage)</span></p>

Permette di recuperare i firmatari di una data azienda

**Query Params**

<div id="bkmrk-page-numero-di-pagin">- `page` numero di pagina
- `itemId` identificativo dell'azienda
- `size` numero di elementi per pagina
- `fullText` permette di fare una ricerca filtrata per alcuni dati dei firmatari
- `certs` permette di filtrare per tipologia di firma, i valori accettati sono **FRM**, **FSM**, **FEA**, **FES** (firma elettronica automatica, firma elettronica remota, firma elettronica avanzata ,firma elettronica semplice)
- `strictCerts` permette di filtrare solamente le tipologie di firma attive
- <span style="color: #ff0000;">`serviceName`</span> <span style="color: #ff0000;">controllare le info su questo campo in cima al documento</span>

</div>La ricerca fullText viene fatta su questi dati dei firmatari

- `firstName`
- `lastName`
- `fiscalCode`
- `ownerTaxId` codice fiscale dell'azienda su cui il firmatario e stato assegnato
- `ownerVatNumber` partita iva dell'azienda su cui il firmatario e stato assegnato
- `ownerDescription` ragione sociale dell'azienda su cui il firmatario e stato assegnato

**Response**

```JavaScript
{
   "page":0,
   "itemsNumberPerPage":2,
   "totalItems":2,
   "totalPages":1,
   "signers":[
      {
         "id":219,
         "fiscalCode":"MNNRFL96D21I829W",
         "firstName":"Raffaele",
         "lastName":"Mainini",
         "sex":"M",
         "email":"rmainini@mondora.com",
         "cellNumber":"",
         "ownerDescription":null,
         "enabled":true,
         "certificates":[
            {
               "id":225,
               "type":"FSM",
               "status":"SUBMISSION_SUCCESS"
            },
            {
               "id":226,
               "type":"FRM",
               "certificateSn":"585",
               "certificateId":"10846",
               "enabled":true,
               "status":"FINAL_SUCCESS",
               "createBy":"rmainini@mondora.com"
            },
            {
               "id":60,
               "type":"FES",
               "enabled":true,
               "status":"ACTIVE"
            },
            {
               "id":81,
               "type":"FEA",
               "enabled":false,
               "documentHubId":"5e9847700e20480006394a98",
               "status":"INIT"
            }
         ],
         "_links":{
            "self":{
               "href":"https://ts-signer-read-api-test.agyo.io/api/v1/rest/signers/219"
            }
         }
      },
      {
         "id":247,
         "fiscalCode":"PNNGNN80A01I829P",
         "firstName":"Giovanni",
         "lastName":"Panni",
         "sex":"M",
         "email":"rmainini@mondora.com",
         "cellNumber":"",
         "ownerDescription":null,
         "enabled":true,
         "certificates":[

         ],
         "_links":{
            "self":{
               "href":"https://ts-signer-read-api-test.agyo.io/api/v1/rest/signers/247"
            }
         }
      }
   ]
}
```

---

**Retrive Signer**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/rest/signers/{id}">[​/v1​/rest​/signers​/{id}](https://ts-signer-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/api-docs/swagger-config#/Signer/getSigner)</span></p>

<span style="background-color: #ffffff; color: #444444;">Permette di recuperare tutte le info riguardanti uno specifico firmatario</span>

<div id="bkmrk-info"><div>**Info**</div></div>- `id` identificativo del firmatario

**Response**

```JavaScript
{
   "id":219,
   "fiscalCode":"MNNRFL96D21I829W",
   "firstName":"Raffaele",
   "lastName":"Mainini",
   "fiscalCountry":"IT",
   "sex":"M",
   "birthCity":"Sondrio",
   "birthCountry":"IT",
   "birthDate":"1996-04-21T00:00:00.000+0000",
   "birthDistrict":"SO",
   "city":"Sondrio",
   "country":"IT",
   "district":null,
   "cap":"23010",
   "address":"Via Fasulla",
   "email":"rmainini@mondora.com",
   "cellNumber":"",
   "ownerTaxId":null,
   "ownerVatNumber":null,
   "ownerDescription":null,
   "documentIssuer":"me",
   "documentNumber":"1234",
   "documentEndDate":"2020-04-30T00:00:00.000+0000",
   "documentType":"Carta d'identità",
   "_links":{
      "self":{
         "href":"https://ts-signer-read-api-test.agyo.io/api/v1/rest/signers/219"
      }
   }
}
```

---

**Retrive If Signer Exist into Item**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/rest/signers/searchByFiscalCode">[​/v1​/rest​/signers​/searchByFiscalCode](https://ts-signer-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/api-docs/swagger-config#/Signer/searchByFiscalCode_1)</span></p>

Permette di verificare se un determinato firmatario esiste già per un'azienda

**Query Params**

<div id="bkmrk-itemid%C2%A0-identificati"><div><div><div><div>- `itemId` identificativo dell'azienda
- `fiscalCode` codice fiscale del firmatario che si sta controllando
- <span style="color: #ff0000;">`serviceName`</span> <span style="color: #ff0000;">controllare le info su questo campo in cima al documento</span>

</div></div></div></div></div>---

##### **UTILS**

---

**Download Filled/Signed Document**

<p class="callout info"><span class="opblock-summary-method">\[GET</span><span class="opblock-summary-path" data-path="/v1/rest/utils/download/document">[\] ​/v1​/rest​/utils​/download​/document](https://ts-signer-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/api-docs/swagger-config#/Utils/downloadFilledDocument)</span></p>

<div id="bkmrk-permette-di-scaricar">Permette di scaricare il contratto per i certificati FRM/FSM (Firma elettronica qualificata automatica/Firma elettronica qualificata remota) sia solamente pre compilato sia quello pre compilato e firmato</div>  
**Query Params**

<div id="bkmrk-signerid%C2%A0-identifica"><div><div><div><div>- `signerId` identificativo del firmatario
- `certType` tipologia di certificato **FRM** o **FSM**
- `documentType` tipo documento **FILLED** o **SIGNED**

</div></div></div></div></div>---

**Generate and return base64 FEA precompiled module**

<p class="callout info"><span class="opblock-summary-method">\[GET\]</span><span class="opblock-summary-path" data-path="/v1/rest/utils/generate/fea/module"> [​/v1​/rest​/utils​/generate​/fea​/module](https://ts-signer-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/api-docs/swagger-config#/Utils/downloadFilledFeaModule)</span></p>

<span class="opblock-summary-path" data-path="/v1/rest/utils/generate/fea/module">Permette di generare il contratto del modulo di adesione FEA precompilato</span>

**Query Params**

<div id="bkmrk-signerid%C2%A0-identifica-0"><div><div>- `signerId` identificativo del firmatario

---

</div></div></div>##### **CERTIFICATE**

<div id="bkmrk-retrive-slot-usage"><div>---

**Retrive Slot Usage**</div><div></div></div><p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/rest/certificates/slotUsage/{itemId}">[​/v1​/rest​/certificates​/slotUsage​/{itemId}](https://ts-signer-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/api-docs/swagger-config#/Certificate/getSlotUsage)</span></p>

Permette di recuperare il conteggio degli slot per i certificati di un'azienda

  
**Query Params**

<div id="bkmrk-itemid%C2%A0-identificati-0"><div><div>- `itemId` identificativo dell'azienda

</div></div></div>**Response**

<div id="bkmrk-%7B-%22totalfrm%22%3A3%2C-%22fre"><div>```JavaScript
{<br></br>   "totalFRM":3,<br></br>   "freeFRM":2,<br></br>   "totalFSM":3,<br></br>   "freeFSM":3<br></br>}
```

</div></div>---

# Signer Write

API di scrittura per *Ts Digital Signature per le operazioni riguardanti i firmatari e i certificati.* [Swagger](https://ts-signer-write-api-test.agyo.io/api/swagger-ui.html#/)

#### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

Il `Content-Type` deve essere `application/json`

<span style="color: #ff0000;">**In tutte le chiamate dove è richiesto ServiceName non impostare nulla a meno che si vuole utilizzare le api per il servizio adempimenti.** </span>

#### Descrizione API

---

##### **V2 - SIGNER**

---

**Create a new signer**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/signer">​/v2​/rest​/signer</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/create)</p>

Permette la creazione di un firmatario per una determinata azienda

\*1 campo obbligatorio  
\*2 campo obbligatorio in caso si voglia richiedere un certificato di FEQ automatica o di FEQ remota

**Info**

- `firstName` \*1, nome.
- `lastName` \*1, cognome.
- `fiscalCode` \*1, in caso si tratti di un firmatario italiano(dispone di codice fiscale, solamente questi firmatari possono richiedere un certificato di FEQ automatica o di FEQ remota). In caso il firmatario non abbia un codice fiscale il campo non deve essere compilato perchè verrà generato un UUID come id del firmatario. In caso di firmatario italiano viene fatto un controllo sulla lunghezza di 16 caratteri.
- `itemId` \*1, codice fiscale dell'azienda.
- `fiscalCountry` domicilio fiscale, se valorizzato viene fatto un controllo che il valore sia [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Il valore di default da inserire è **"IT"**, in caso il firmatario è sprovvisto di codice fiscale il valore non può essere **"IT".**
- `sex` \*1, viene fatto un controllo che il valore sia **"M"** o **"F"**.
- `birthCity` \*1 città di nascita.
- `birthDate` \*1, data di nascita.
- `birthCountry` se valorizzato viene fatto un controllo che il valore sia [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- `birthDistrict` provincia di nascita, in caso di nascita all'estero il valore da passare è **"EE"**. In caso di provincia italiana si deve usare la sigla da 2 cifre.
- `city` città di residenza.
- `country` nazione di residenza, se valorizzato viene fatto un controllo che il valore sia [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- `district` <span style="text-decoration: underline; color: #ff0000;">-&gt; campo non usato, verrà dismesso<span style="color: #000000;">.</span></span>
- `cap` cap di residenza, se valorizzato viene fatto un controllo che il valore sia di 5 caratteri e che contenga solo numeri.
- `address` indirizzo di residenza.
- `email` \*1 indirizzo email.
- `prefixCellNumber` prefisso numero di telefono, se non valorizzato il valore di default sarà **"+39"**, per richiedere una FEQ automatica o di FEQ remota il prefisso non può essere diverso da **"+39"**. //TODO
- `cellNumber` \*1, numero di telefono personale, solo numeri.
- `documentIssuer` \*2,<sup> </sup> ente che ha rilasciato il documento.
- `documentNumber` \*2, numero del documento.
- `documentEndDate` \*2, data di scadenza del documento.
- `documentType`​ \*2, può assumere questi determinati valori: 
    - **"Carta d'identità"**
    - <div><div>**"Patente di guida"**</div></div>
    - <div><div>**"Passaporto"**</div></div>
    - <div><div>**"Porto d'armi"**</div></div>
    - <div><div>**"Tessera di riconoscimento postale"**</div></div>
    - <div><div>**"Tessera rilasciata da PA"**</div></div>

- `ownerTaxId` codice fiscale dell'azienda su cui il firmatario e stato assegnato .
- `ownerVatNumber` partita iva dell'azienda su cui il firmatario e stato assegnato .
- `ownerDescription` ragione sociale dell'azienda su cui il firmatario e stato assegnato .
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span><span style="color: #000000;">.</span>

```JSON
{
  "firstName": "string", *
  "lastName": "string", *
  "fiscalCode": "string", *
  "itemId": "string", * 
  "fiscalCountry": "string", *
  "sex": "string", *
  "birthCity": "string", *
  "birthCountry": "string",*
  "birthDate": "2021-02-12T14:53:00.676Z", *
  "birthDistrict": "string",
  "city": "string",
  "country": "string",
  "district": "string",
  "cap": "string",
  "address": "string",
  "email": "string", *
  "documentIssuer": "string",
  "documentNumber": "string",
  "documentEndDate": "2021-02-12T14:53:00.676Z",
  "documentType": "string",
  "cellNumber": "string", *
  "ownerTaxId": "string",
  "ownerVatNumber": "string",
  "ownerDescription": "string",
  "serviceName": "A-FISCALI-IVA-FLOW" *
}
```

<div data-lang="body-param__example microlight" id="bkmrk-response"><div><div>[Esempi FES](https://digital-docs.ts-paas.com/books/signature/page/signer-write#bkmrk-create-signer-fes)</div><div>[Esempi FEA](https://digital-docs.ts-paas.com/books/signature/page/signer-write#bkmrk-create-signer-fea)</div></div><div>[Esempi FEQ](https://digital-docs.ts-paas.com/books/signature/page/signer-write#bkmrk-create-signer-feq)  
</div><div>  
</div><div>**Response**</div></div><div data-lang="example microlight" id="bkmrk-%7B-%22signerid%22%3A-0%2C-%22it"><textarea style="display: none;">{ "signerId": 0, "itemId": "string", "fiscalCode": "string" }</textarea><div><div>  
</div><div><div>  
</div></div></div></div>```
{
  "signerId": 0,
  "itemId": "string",
  "fiscalCode": "string"
}
```

---

**Disable an existent signer and disable all certificates**

<p class="callout info">[\[DELETE\] /v2/rest/signer/{signerId}](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/delete)</p>

Permette di eliminare un determinato firmatario. Oltre a cancellare il firmatario verranno eliminate le extraSignature(FES/FEA) e i certificati collegati al firmatario(FRM/FSM). La cancellazione è solamente logica, verrà impostato `enabled=false`. In caso si provi a ricreare il firmatario con lo stesso codice fiscale verrà chiamata in automatico l'API **Update an existent signer,** il firmatario verrà riattivato e in caso aggiornate le properties

**Info**

- `signerId` identificativo del firmatario
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>

---

**Update an existent signer**

<p class="callout info">[<span class="opblock-summary-method">\[PATCH\]</span><span class="opblock-summary-path" data-path="/v2/rest/signer/{signerId}">​/v2​/rest​/signer​/{signerId}</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/update)</p>

Permette di aggiornare i dati di un firmatario

\*1 campo obbligatorio

**Info**

- `itemId` \*1 identificativo dell'azienda. Non può essere cambiato quindi deve avere lo stesso valore di quando il firmatario è stato creato
- `city` città di residenza.
- `country` nazione di residenza, se valorizzato viene fatto un controllo che il valore sia [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
- `district` <span style="text-decoration: underline; color: #ff0000;">-&gt; campo non usato, verrà dismesso<span style="color: #000000;">.</span></span>
- `cap` cap di residenza, se valorizzato viene fatto un controllo che il valore sia di 5 caratteri e che contenga solo numeri.
- `address` indirizzo di residenza.
- `email` indirizzo email.
- `prefixCellNumber` prefisso numero di telefono, se non valorizzato il valore di default sarà **"+39"**, per richiedere una FEQ automatica o di FEQ remota il prefisso non può essere diverso da **"+39"**. //TODO
- `cellNumber` numero di telefono personale, solo numeri.
- `documentIssuer` <sup> </sup>ente che ha rilasciato il documento
- `documentNumber` numero del documento
- `documentEndDate` data di scadenza del documento
- `documentType`​ può assumere questi determinati valori: 
    - **"Carta d'identità"**
    - <div><div>**"Patente di guida"**</div></div>
    - <div><div>**"Passaporto"**</div></div>
    - <div><div>**"Porto d'armi"**</div></div>
    - <div><div>**"Tessera di riconoscimento postale"**</div></div>
    - <div><div>**"Tessera rilasciata da PA"** </div></div>
- `ownerTaxId` codice fiscale dell'azienda su cui il firmatario e stato assegnato
- `ownerVatNumber` partita iva dell'azienda su cui il firmatario e stato assegnato
- `ownerDescription` ragione sociale dell'azienda su cui il firmatario e stato assegnato
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>

```JSON
{
  "itemId": "string",
  "city": "string",
  "district": "string",
  "cap": "string",
  "address": "string",
  "email": "string",
  "documentIssuer": "string",
  "documentNumber": "string",
  "documentEndDate": "2021-02-12T15:30:23.713Z",
  "documentType": "string",
  "cellNumber": "string",
  "ownerTaxId": "string",
  "ownerVatNumber": "string",
  "ownerDescription": "string"
}
```

---

##### **V2 - ENROLLMENT**

---

**Start enrollment for a signer**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/signer">​/v2​/rest​/enrollment/start</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/create)</p>

Permette diinizializzare una sessione di enrollment per creare un certificato.

\*1 campo obbligatorio

**Info**

- `signerId` \*1 identificativo del firmatario.
- `profile` \*1 può assumere questi determinati valori: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemTriennale</span>"**
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemAuto</span>"**</div></div>
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemOneshot</span>"**</div></div>
- `identificationProcesses` array che definisce la modalità di riconoscimento, può avere dentro questi valori: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">FEQ</span>"**
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">SPID</span>"**</div></div>
- `owner` \*1 contiene le informazioni del firmatario.
- `owner.firstname`\*1.
- `owner.lastName`\*1.
- `owner.email`\*1.
- `owner.phoneNumber`\*1.
- `owner.fiscalCode`
- `webhook` \*1 informazioni sul webhook da richiamare in fase di enrollment
- `webhook.url` \*1 url da richiamare deve essere l'URL della signer-write/v2/rest/enrollment/callback a cui va aggiunto come parametro di query: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">signerId</span>"** \*1 identificativo del firmatario

```JSON
[
  {
    "signerId": "long",
    "profile": "string",
    "identificationProcesses": "string[]",
    "owner": {
      "firstName": "string",
      "lastName": "string",
      "email": "string",
      "phoneNumber": "string",
      "fiscalCode": "string"
    },
    "webhook": {
      "url": "string"
    }
  }
]
```


<div data-lang="body-param__example microlight" id="bkmrk-response-1"><div><div>  
</div></div><div>**Response**</div></div><div data-lang="example microlight" id="bkmrk-%7B-%22signerid%22%3A-0%2C-%22it-2"><textarea style="display: none;">{ "signerId": 0, "itemId": "string", "fiscalCode": "string" }</textarea><div><div><div>  
</div></div></div></div>```
[
  {
    "sessionId": "string"
  }
]
```

---

**Delete existing enrollment session**

<p class="callout info">[<span class="opblock-summary-method">\[DELETE\]</span><span class="opblock-summary-path" data-path="/v2/rest/signer/{signerId}">​/v2​/rest​/enrollment/session​/{sessionId}</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/update)</p>

Permette di cancellare la sessione di enrollment

\*1 campo obbligatorio

**Info**

- `sessionId` identificativo della sessione di enrollment

---

**Resend enrollment email**

<p class="callout info">[<span class="opblock-summary-method">\[PUT\]</span><span class="opblock-summary-path" data-path="/v2/rest/signer/{signerId}">​/v2​/rest​/enrollment/session​/{sessionId}/email/send</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/update)</p>

Permette di reinviare la mail di inizio enrollment

\*1 campo obbligatorio

**Info**

- `sessionId` identificativo della sessione di enrollment

---


##### **V2 - EXTRA SIGNATURE**

---

**Activate FES**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/extraSignature/fes/{signerId}">​/v2​/rest​/extraSignature​/fes​/{signerId}</span>](https://digital-docs.ts-paas.com/v2/rest/extraSignature/fes/%7BsignerId%7D)</p>

Permette di attivare la tipologia la FES (firma elettronica semplice) ad un determinato firmatario.

**Info**

- `signerId` identificativo del firmatario

---

**<span class="opblock-summary-method">I</span><span class="opblock-summary-method">nitialize FEA</span>**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/extraSignature/fea">​/v2​/rest​/extraSignature​/fea</span>](https://ts-signer-write-api-dev.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Extra%20Signature/createFea)</p>

Permette di effettuare l'adesione FEA (firma elettronica avanzata) per un determinato firmatario. Il processo di attivazione sarà completato solamente una volta firmato il documento che verrà in automatico generato e mandato in firma

**Info**

- `signerId` identificativo del firmatario
- `transmitterId` identificativo dell'azienda
- `imagesContent` base64 delle immagini o pdf del documento del firmatario e del codice fiscale.   
    Da inserire se non sono ancora stati conservati le copie di questi documenti.   
    I file dei documenti possono essere `.pdf., .jpg, .jpeg, .jpe, .png, .tiff, .tif`<div><div>Ricordarsi di inserire il mime type del formato, esempio: data:image/jpg;base64,/</div></div>
- `documentSignType` metodo con cui verrà firmato il documento. I valori possibili possono essere **FEA remota** o **`FEA grafometrica`**
- `mainSignerId` codice fiscale del firmatario possessore di un certificato di Firma elettronica qualificata automatica(FRM) che sigillerà il documento
- `useOtp` valore da mettere a **true** solamente se documentSignType è **FEA remota.** Questo permetterà di utilizzare come strumento di autenticazione del modulo di richiesta per la FEA tramite otp e non SecureCall
- `paperSignature` permette di avere un adesione FEA cartacea, significa che viene scaricato sul cliente l'obbligo di conservare una copia cartacea dell'adesione FEA del firmatario. Se impostato a **true** permette di ricevere come response della chiamata il base64 del modulo di richiesta per la FEA e verrà attivata automaticamente senza firmare il modulo. se si vuole usare `onlyUpload=true` il valore deve essere impostato a **false**
- <div><div>`onlyUpload` se impostato a **true** permette di firmare l'adesione FEA insieme al caricamento del primo documento.   
    **<span style="color: #ff0000;">NOTA BENE</span>**, il primo documento che si caricherà per questo firmatario dovrà avere lo stesso `mainSignerId` e la stessa tipologia di firma e lo stesso strumento di autenticazione per essere valida. Inoltre fino a quando il firmatario non firmerà il primo documento non potrà sottoscriverne altri. Se invece viene impostato a **false** verra creata una sessione solo per la firma dell'adesione FEA. </div></div>
- `itemData` dati riguardanti all'azienda a cui fa capo il firmatario
- `itemData.id`
- `itemData.vatNumber`
- `itemData.city`
- `itemData.fullAddress`
- `itemData.description`
- `itemData.address`
- `itemData.itemCellNumber`
- `itemData.itemEmail`
- `itemData.policyNumber`
- `itemData.webSite`

```JSON
{
  "transmitterId": "string",
  "imagesContent": [
    "string"
  ],
  "signerId": 0,
  "documentSignType": "string",
  "mainSignerId": "string",
  "itemData": {
    "id": "string",
    "vatNumber": "string",
    "city": "string",
    "fullAddress": "string",
    "description": "string",
    "address": "string",
    "itemCellNumber": "string",
    "itemEmail": "string",
    "policyNumber": "string",
    "webSite": "string"
  },
  "useOtp": true,
  "paperSignature": true
}
```

[Esempio](https://digital-docs.ts-paas.com/books/signature/page/signer-write#bkmrk-extra-signature-fea)

---

**Delete Extra Signature**

<p class="callout info">[<span class="opblock-summary-method">\[DELETE\] </span><span class="opblock-summary-path" data-path="/v2/rest/extraSignature/{extraSignatureId}">​/v2​/rest​/extraSignature​/{extraSignatureId}</span>](https://ts-signer-write-api-dev.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Extra%20Signature/extraSignatureId)</p>

Permette di eliminare le extraSignature (FEA, FES) di un determinato firmatario.

**Info**

- `signerId` identificativo del firmatario
- `extraSignatureId` identificativo della FES o FEA collegate ad un firmatario

---

##### **V2 - CERTIFICATE**

---

**Un assign certificate to signer**

<p class="callout info">[\[POST\] ​/v2​/rest​/certificate​/{certificateId}​/unAssignTo​/{signerId}](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Certificate/unAssign)</p>

<span style="background-color: #ffffff; color: #444444;"><span style="color: #ff0000;">**Sostituisce le API v1 <span class="opblock-summary-path">/v1/rest/certificate/frm/unassign-certificate</span><span class="opblock-summary-path"> e /v1/rest/certificate/fsm/unassign-certificate</span>**</span></span>

<span style="background-color: #ffffff; color: #444444;">Scollega un certificato da un firmatario</span>

**<span style="background-color: #ffffff; color: #444444;">Info</span>**

- `signerId` identificativo del firmatario
- `certificateId` identificativo del certificato
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>

---

**<span class="opblock-summary-method">Send submit request to Trust to start certificate validation</span>**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/certificate/{certificateId}/send">​/v2​/rest​/certificate​/{certificateId}​/send</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Certificate/send)</p>

<span style="color: #ff0000;">**Sostituisce le API v1 <span class="opblock-summary-path">/v1/rest/certificate/fsm/ca/submit e /v1/rest/certificate/frm/ca/submit</span>**</span>

Permette di finalizzare le richieste dei certificati di Firma elettronica qualificata remota/Firma elettronica qualificata automatica(FSM/FRM) mandate alla CA

**Info**

- `signerId` identificativo del firmatario
- `certificateId` identificativo del certificato che viene staccato durante la richiesta di inizializzazione
- `file` base64 del file pdf di richiesta pre compilato e firmato pades
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>

```JavaScript
{
  "signerId": 0,
  "certificateId": 0,
  "file": "string",
  "serviceName": "SIGNATURE-FLOW"
}
```

---

**<span class="opblock-summary-method">Assign certificate to signer</span>**

<p class="callout info">[<span class="opblock-summary-method">\[POST\]</span><span class="opblock-summary-path" data-path="/v2/rest/certificate/{certificateId}/assignTo/{signerId}"> ​/v2​/rest​/certificate​/{certificateId}​/assignTo​/{signerId}</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Certificate/assign)</p>

<span style="color: #ff0000;">**Sostituisce le API v1 <span class="opblock-summary-path">/v1/rest/certificate/frm/assign-certificate</span><span class="opblock-summary-path"> e /v1/rest/certificate/fsm/assign-certificate</span>**</span>

<span style="background-color: #ffffff; color: #444444;">Permette di assegnare ad un firmatario un certificato già creato in precedenza da un altra azienda. </span>

<div id="bkmrk-nome-cognome-codice-"><div><div><table border="1" style="border-collapse: collapse; width: 100.741%; height: 121px;"><tbody><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Nome</td><td style="width: 11.605%; height: 29px;">Cognome</td><td style="width: 28.642%; height: 29px;">Codice fiscale</td><td style="width: 24.4445%; height: 29px;">ItemId</td><td style="width: 16.6667%; height: 29px;">CertificateId</td><td style="width: 3.82716%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM1</td><td style="width: 16.6667%; height: 29px;">CERT1</td><td style="width: 3.82716%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM2</td><td style="width: 16.6667%; height: 29px;"> </td><td style="width: 3.82716%; height: 29px;"> </td></tr></tbody></table>

l'api si occupa di collegare il certificato se il firmatario è lo stesso ma per diverse aziende</div><div><table border="1" style="border-collapse: collapse; width: 100.741%; height: 121px;"><tbody><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Nome</td><td style="width: 11.605%; height: 29px;">Cognome</td><td style="width: 28.642%; height: 29px;">Codice fiscale</td><td style="width: 24.4445%; height: 29px;">ItemId</td><td style="width: 19.2593%; height: 29px;">CertificateId</td><td style="width: 1.23457%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM1</td><td style="width: 19.2593%; height: 29px;">CERT1</td><td style="width: 1.23457%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM2</td><td style="width: 19.2593%; height: 29px;">CERT1</td><td style="width: 1.23457%; height: 29px;"> </td></tr></tbody></table>

</div></div></div>**<span style="background-color: #ffffff; color: #444444;">Info</span>**

- `signerId` identificativo del firmatario
- `certificateId` identificativo del certificato
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>
- `itemId` identificativo dell'azienda
- `name` ragione sociale dell'azienda

```JSON
{
  "itemId": "string",
  "name": "string"
}

```

---

**<span class="opblock-summary-method">Initialize an remote Feq</span>**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/certificate/fsm">​/v2​/rest​/certificate​/fsm</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Certificate/createFsm)</p>

<span style="color: #ff0000;">**Sostituisce API v1 /v1/rest/certificate/fsm/initialize**</span>

<div id="bkmrk-permette-di-iniziali">Permette di inizializzare la richiesta per il certificato FSM (Firma elettronica qualificata remota) che poi sarà mandata alla CA.</div><div id="bkmrk--17"></div><div id="bkmrk-info-11">**Info**</div>- `signerId` identificativo del firmatario
- `itemId` identificativo dell'azienda
- `identificationType` permette di specificare lo strumento di autenticazione che verrà utilizzato per il certificato di FEQ qualificata remota. I valori accettati sono **otp** o **SecureCall**. Se il parametro non viene specificato di default viene utilizzato **SecureCall**
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>

```JSON
{
  "signerId": 0,
  "serviceName": "SIGNATURE-FLOW",
  "itemId": "string",
  "identificationType": "string"
}
```

---

**<span class="opblock-summary-method">Initialize an automatic Feq</span>**

<p class="callout info">[<span class="opblock-summary-method">\[POST\]</span><span class="opblock-summary-path" data-path="/v2/rest/certificate/frm"> ​/v2​/rest​/certificate​/frm</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Certificate/createFrm)</p>

<span style="color: #ff0000;">**Sostituisce API v1 /v1/rest/certificate/frm/initialize**</span>

<div id="bkmrk-permette-di-iniziali-0"><div><div>Permette di inizializzare la richiesta per il certificato FRM (Firma elettronica qualificata automatica) che poi sarà mandata alla CA.</div><div>  
</div><div>**Info**</div>- `signerId` identificativo del firmatario
- `itemId` identificativo dell'azienda
- `pin` valore di 8 cifre numeriche che serviranno come pin del certificato
- <span style="color: #ff0000;">`serviceName` controllare le info su questo campo in cima al documento</span>

</div></div>```JSON
{
  "signerId": 0,
  "serviceName": "SIGNATURE-FLOW", 
  "itemId": "string",
  "pin": "string"
}
```

---

**Migrate certificate**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v2/rest/signer">​/v2​/rest​/certificate/{certificateId}/migrate</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v2%20-%20Signer/create)</p>

Permette di migrare un certificato da CA Trust a CA Teamsystem.

\*1 campo obbligatorio

**Info**

- `certificateId` \*1 identificativo del certificato.
- `signerId` \*1 identificativo del firmatario.
- `profile` \*1 può assumere questi determinati valori: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemTriennale</span>"**
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemAuto</span>"**</div></div>
- `identificationProcesses` array che definisce la modalità di riconoscimento, può avere dentro questi valori: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">FEQ</span>"**
- `owner` \*1 contiene le informazioni del firmatario.
- `owner.firstname`\*1.
- `owner.lastName`\*1.
- `owner.email`\*1.
- `owner.phoneNumber`\*1.
- `owner.fiscalCode`
- `webhook` \*1 informazioni sul webhook da richiamare in fase di enrollment
- `webhook.url` \*1 url da richiamare deve essere l'URL della signer-write/v2/rest/enrollment/callback a cui va aggiunto come parametro di query: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">signerId</span>"** \*1 identificativo del firmatario

```JSON
{
  "signerId": "long",
  "profile": "string",
  "identificationProcesses": "string[]",
  "owner": {
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "phoneNumber": "string",
    "fiscalCode": "string"
  },
  "webhook": {
    "url": "string"
  }
}

```


<div data-lang="body-param__example microlight" id="bkmrk--22"><div>---

</div><div>  
</div></div>##### **V1**

---

**Create a new signer**

<p class="callout info">[<span role="presentation">\[POST\] <span class="opblock-summary-path">/v1/rest/signer</span></span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/createSigner)</p>

Permette la creazione di un firmatario per una determinata azienda

<span style="color: #ff0000;">**Da sostituire con la versione v2, tutte le info sulla request sono le medesime della v2** </span>

---

**Disable an existent signer and disable all certificates**

<p class="callout info">[<span class="opblock-summary-method">\[DELETE\] </span><span class="opblock-summary-path">/v1/rest/signer/{signerId}</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/deleteSigner)</p>

<div id="bkmrk-da-sostituire-con-la-0"><div><span style="color: #ff0000;">**Da sostituire con la versione v2, tutte le info sulla request sono le medesime della v2**</span></div></div>---

**Update an existent signer**

<p class="callout info">[<span class="opblock-summary-method">\[PATCH\] </span><span class="opblock-summary-path">/v1/rest/signer/{signerId}</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/updateSigner)</p>

<div id="bkmrk-da-sostituire-con-la-1"><span style="color: #ff0000;">**Da sostituire con la versione v2, tutte le info sulla request sono le medesime della v2**</span></div>---

**<span class="opblock-summary-method">Initialize FEA</span>**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path">/v1/rest/extra-signature/create/fea</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/createFea_1)</p>

<div id="bkmrk-da-sostituire-con-la-2"><div><span style="color: #ff0000;">**Da sostituire con la versione v2, tutte le info sulla request sono le medesime della v2**</span></div></div>---

**Activate FES**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path">/v1/rest/extra-signature/create/fes</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/createFes_1)</p>

<span class="opblock-summary-path"><span style="color: #ff0000;">**Da sostituire con la versione v2, tutte le info sulla request sono le medesime della v2** </span></span>

<div id="bkmrk-delete-extra-signatu-0">---

<div>**Delete Extra Signature**</div></div><div id="bkmrk--28"></div><p class="callout info">[<span class="opblock-summary-path"><span class="opblock-summary-method">\[DELETE\] </span>/v1/rest/extra-signature/delete</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/deleteExtraSignature)</p>

<div data-lang="JavaScript" id="bkmrk-da-sostituire-con-la-4"><div><div><div><div><span class="opblock-summary-path"><span style="color: #ff0000;">**Da sostituire con la versione v2, tutte le info sulla request sono le medesime della v2** </span></span></div></div></div></div></div>---

**Initialize**

<p class="callout info">[<span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path">/v1/rest/certificate/frm/initialize</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/initialize_1)  
[<span class="opblock-summary-path"><span class="opblock-summary-method">\[POST\] </span>/v1/rest/certificate/fsm/initialize</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/initialize)</p>

<div id="bkmrk-permette-di-iniziali-1"><div>Permette di inizializzare la richiesta per i certificati FRM o FSM (Firma elettronica qualificata automatica, Firma elettronica qualificata remota) che poi sarà mandata alla CA.</div><div>Il parametro **identificationType** nella request permette di specificare lo strumento di autenticazione che vorremmo usare per il certificato di FEQ qualificata remota(FSM, <span style="color: #ff0000;">Valido esclusivamente per questa tipologia di certificato</span>).</div><div>  
</div></div><div id="bkmrk-info-13">**Info**</div>- `signerId` identificativo del firmatario
- `itemId` identificativo dell'azienda
- `pin` valore di 8 cifre numeriche che serviranno come pin del certificato
- `identificationType` permette di specificare lo strumento di autenticazione che verrà utilizzato per il certificato di FEQ qualificata remota. I valori accettati sono **otp** o **SecureCall** . Se il parametro non viene specificato di default viene utilizzato **SecureCall**
- `serviceName` il valore da inserire è **SIGNATURE-FLOW**
- `savePin` va impostato sempre a true

Richiesta FRM

```JavaScript
{
  "signerId": 0,
  "serviceName": "SIGNATURE-FLOW",
  "itemId": "string",
  "pin": "string",
  "savePin": true
}
```

Richiesta FSM

```JSON
{
  "signerId": 0,
  "serviceName": "SIGNATURE-FLOW",
  "itemId": "string",
  "identificationType": "string"
}
```

<div data-lang="JavaScript" id="bkmrk-%7B-%22itemid%22%3A-%22string%22-1"><textarea style="display: none;">{ "itemId": "string", "pin": "string", //8 caratteri alfanumerici "savePin": true, "serviceName": "string", //SIGNATURE-FLOW "signerId": 0 }</textarea><div><div><textarea readonly="readonly" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea>  
</div></div></div>---

**Submit**

<p class="callout info"><span class="opblock-summary-path">[<span class="opblock-summary-method">\[POST\] </span>/v1/rest/certificate/frm/ca/submit](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/submit_1)  
[<span class="opblock-summary-method">\[POST\] </span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/submit)</span>[<span class="opblock-summary-path">/v1/rest/certificate/fsm/ca/submit</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/submit)</p>

<div id="bkmrk-permette-di-finalizz-0"><div>Permette di finalizzare la richiesta del certificato mandando alla CA il documento fillato e firmato</div></div><div id="bkmrk--31"></div>```JSON
{
  "file": "string", //base64 del contratto fillato e firmato
  "signerId": 0
}
```

<div data-lang="JavaScript" id="bkmrk-%7B-%22file%22%3A-%22string%22%2C--0"><textarea style="display: none;">{ "file": "string", //base64 del contratto fillato e firmato "signerId": 0 }</textarea><div><div><textarea readonly="readonly" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea>  
</div></div></div>---

**AssignCertificate**

<p class="callout info"><span class="opblock-summary-path">[<span class="opblock-summary-method">\[POST\] </span>/v1/rest/certificate/frm/assign-certificate](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/assignCertificate_1)  
</span>[<span class="opblock-summary-path"><span class="opblock-summary-method">\[POST\] </span>/v1/rest/certificate/fsm/assign-certificate</span>](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/assignCertificate)</p>

<span style="background-color: #f5f5f5; color: #444444;">Permette di assegnare ad un firmatario un certificato già creato in precedenza da un altra azienda. </span>

<div id="bkmrk-nome-cognome-codice--0"><div><table border="1" style="border-collapse: collapse; width: 100.741%; height: 121px;"><tbody><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Nome</td><td style="width: 11.605%; height: 29px;">Cognome</td><td style="width: 28.642%; height: 29px;">Codice fiscale</td><td style="width: 24.4445%; height: 29px;">ItemId</td><td style="width: 19.2593%; height: 29px;">CertificateId</td><td style="width: 1.23457%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM1</td><td style="width: 19.2593%; height: 29px;">CERT1</td><td style="width: 1.23457%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM2</td><td style="width: 19.2593%; height: 29px;"> </td><td style="width: 1.23457%; height: 29px;"> </td></tr></tbody></table>

l'api si occupa di collegare il certificato se il firmatario è lo stesso ma per diverse aziende</div><div><table border="1" style="border-collapse: collapse; width: 100.741%; height: 121px;"><tbody><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Nome</td><td style="width: 11.605%; height: 29px;">Cognome</td><td style="width: 28.642%; height: 29px;">Codice fiscale</td><td style="width: 24.4445%; height: 29px;">ItemId</td><td style="width: 19.2593%; height: 29px;">CertificateId</td><td style="width: 1.23457%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM1</td><td style="width: 19.2593%; height: 29px;">CERT1</td><td style="width: 1.23457%; height: 29px;"> </td></tr><tr style="height: 29px;"><td style="width: 16.6667%; height: 29px;">Utente1</td><td style="width: 11.605%; height: 29px;">Utente1</td><td style="width: 28.642%; height: 29px;">CF1</td><td style="width: 24.4445%; height: 29px;">ITEM2</td><td style="width: 19.2593%; height: 29px;">CERT1</td><td style="width: 1.23457%; height: 29px;"> </td></tr></tbody></table>

</div></div>```JSON
{
  "certificateId": 0,
  "itemId": "string",
  "serviceName": "string", //SIGNATURE-FLOW
  "signerId": 0
}
```

<div data-lang="JavaScript" id="bkmrk-%7B-%22certificateid%22%3A-0-0"><textarea style="display: none;">{ "certificateId": 0, "itemId": "string", "serviceName": "string", //SIGNATURE-FLOW "signerId": 0 }</textarea><div><div><textarea readonly="readonly" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea>  
</div></div></div>---

**UnAssignCertificate**

<p class="callout info"><span class="opblock-summary-path">[<span class="opblock-summary-method">\[DELETE\] </span>/v1/rest/certificate/frm/unassign-certificate](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/unAssignCertificate_1)  
[<span class="opblock-summary-method">\[DELETE\] </span>/v1/rest/certificate/fsm/unassign-certificate](https://ts-signer-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/v1/unAssignCertificate)</span></p>

<span style="background-color: #ffffff; color: #444444;">Scollega un certificato da un firmatario  
</span>

```JSON
{
  "certificateId": 0,
  "signerId": 0
}
```

---

<div id="bkmrk--35"></div><div data-lang="JavaScript" id="bkmrk-%7B-%22certificateid%22%3A-0-2"><textarea style="display: none;">{ "certificateId": 0, "signerId": 0 }</textarea><div><div><textarea readonly="readonly" spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea>  
</div></div></div>

# Signature Read

API di lettura per *Ts Digital Signature per le operazioni riguardanti i documenti.* [Swagger](https://signature-read-api-test.agyo.io/api/swagger-ui.html)

#### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

Il `Content-Type` deve essere `application/json`

####  

#### Descrizione API

---

##### **DOCUMENTS**

---

**Search documents**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/documents/search">[​/v1​/documents​/search](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/search)</span></p>

Permette di effettuare una ricerca filtrata per i documenti di una determinata azienda

**Query params**

- `page` numero di pagina
- `size` numero di elementi per pagina
- `sort` campo per cui ordinare i documenti

**Request body**

- `page` numero di pagina<span style="color: #ff0000;"> //TODO FIX</span>
- `size` numero di elementi per pagina <span style="color: #ff0000;">//TODO FIX</span>
- `sort` campo per cui ordinare i documenti <span style="color: #ff0000;">//TODO FIX</span>
- `managerId` identificativo dello studio a cui è connessa l'azienda, permette di visualizzare i documenti che lo studio ha creato per conto di una determinata azienda
- `documentStatusId` stato del documento
- `documentTypeId` tipo documento
- documentOwnerId
- ownerCriteria.ownerType
- ownerCriteria.searchTextCriteria
- batchId
- `multiDocumentSessionId` id del documento multi sessione creato
- `documentIntermediaryId` identificativo azienda, <span style="text-decoration: underline;">**campo obbligatorio**</span>
- `cctStatusCode` stato della conservazione del documento
- `lastTimestampFrom` timestamp da cui inizierà la ricerca dei documenti che sono stati aggiornati fino al momento della chiamata
- `minCreationDate` data di creazione del documento da cui iniziare la ricerca
- `maxCreationDate` data di creazione del documento da per finire la ricerca
- `expiryDate` data di scadenza
- `signerTextFieldsSearchCriteria` permette di effettuare una ricerca per i firmatario inseriti nei documenti, il campi in cui viene fatta la ricerca sono //chiedere a Nico

```JSON
{ //TODO FIX
  "page": {
    "page": 0,
    "size": 0,
    "sort": [
      "string"
    ]
  },
  "request": {
    "managerId": "string",
    "documentStatusId": "string",
    "documentTypeId": "string",
    "documentOwnerId": "string",
    "ownerCriteria": {
      "ownerType": "string",
      "searchTextCriteria": "string"
    },
    "batchId": "string",
    "multiDocumentSessionId": "string",
    "documentIntermediaryId": "string",
    "cctStatusCode": "string",
    "lastTimestampFrom": 0,
    "minCreationDate": "2021-02-24T23:34:28.076Z",
    "maxCreationDate": "2021-02-24T23:34:28.076Z",
    "expiryDate": "2021-02-24T23:34:28.076Z",
    "signerTextFieldsSearchCriteria": "string"
  }
}
```

---

**Retrieve detail of single document**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/{hubId}">[​/v1​/documents​/{hubId}](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/getOne_2)</span></p>

Permette di recuperare tutte le info di un determinato documento

**Query params**

- `hubId` identificativo del documento

---

**Get document signature links**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/{hubId}/signatureLink">[​/v1​/documents​/{hubId}​/signatureLink](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/getSignatureLink)</span></p>

Restituisce il link riguardanti una determinata sessione in stato `ALLA_FIRMA` divisi per firmatari

**Query params**

- `hubId` identificativo del documento

**Response**

```JavaScript
[
    {
        "fiscalCode": "CSAMRC80A01I829M",
        "email": "rmainini@mondora.com",
        "url": "https://b2bstaticdev.blob.core.windows.net/static-apps/b2b-firma/actions/redirect.html?sign_token=Y2NjNDYxZTgtOWEyNy00OTdmLTkwYTQtZjdlYzg1ODUzNmZl"
    },
    {
        "fiscalCode": "DBSNDR93T31B519E",
        "email": "rmainini@mondora.com",
        "url": "https://b2bstaticdev.blob.core.windows.net/static-apps/b2b-firma/actions/redirect.html?sign_token=MzFhZGE3NmItOTM2OS00YTFmLWE4MmEtNzg5ZTM5NmExODhl"
    }
]
```

---

**Get multiSessionDocument signature links**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/multiDocumentSession/{multiDocumentSessionId}/signatureLink">[​/v1​/documents​/multiDocumentSession​/{multiDocumentSessionId}​/signatureLink](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/getMultiDocumentSessionSignatureLink)</span></p>

<span class="opblock-summary-path" data-path="/v1/documents/multiDocumentSession/{multiDocumentSessionId}/signatureLink">Restituisce il link riguardanti una determinata sessione in stato `ALLA_FIRMA` divisi per firmatari per i documenti multi sessione</span>

**Query params**

- `multiDocumentSessionId` identificativo del documento multi sessione

**Response**

```JavaScript
[
    {
        "fiscalCode": "CSAMRC80A01I829M",
        "email": "rmainini@mondora.com",
        "url": "https://b2bstaticdev.blob.core.windows.net/static-apps/b2b-firma/actions/redirect.html?sign_token=Y2NjNDYxZTgtOWEyNy00OTdmLTkwYTQtZjdlYzg1ODUzNmZl"
    },
    {
        "fiscalCode": "DBSNDR93T31B519E",
        "email": "rmainini@mondora.com",
        "url": "https://b2bstaticdev.blob.core.windows.net/static-apps/b2b-firma/actions/redirect.html?sign_token=MzFhZGE3NmItOTM2OS00YTFmLWE4MmEtNzg5ZTM5NmExODhl"
    }
]
```

---

**Download attachment as base64**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/{hubId}/attachment/{attachmentId}">[​/v1​/documents​/{hubId}​/attachment​/{attachmentId}](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/downloadAttachmentAsBase64)</span></p>

Permette il download in base64 di eventuali allegati del documento

**Path params**

- `hubId` identificativo del documento
- `attachmentId` identificativo dell'allegato, l'id dell'allegato si trova nel json del documento alla chiave **attachments\[\].id**

---

**Download attachment**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/{hubId}/attachment/{attachmentId}/file">[​/v1​/documents​/{hubId}​/attachment​/{attachmentId}​/file](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/downloadAttachmentFile)</span></p>

Permette il download del file di eventuali allegati del documento

**Path params**

- `hubId` identificativo del documento
- `attachmentId` identificativo dell'allegato, l'id dell'allegato si trova nel json del documento alla chiave **attachments\[\].id**

---

**Download base64 document**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/{hubId}/download">[​/v1​/documents​/{hubId}​/download](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/downloadAsBase64)</span></p>

Permette il download in base64 del documento

**Path params**

- `hubId` identificativo del documento

**Query params**

- `signed` se messo a true verrà scaricato il documento firmato sennò il documento originale

---

**Download document**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documents/{hubId}/download/file">[​/v1​/documents​/{hubId}​/download​/file](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Documents/downloadFile)</span></p>

Permette il download del file del documento

**Path params**

- `hubId` identificativo del documento

**Query params**

- `signed` se messo a true verrà scaricato il documento firmato sennò il documento originale

---

##### **DOCUMENTS TYPES**

---

**Retrieve document type detail**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documentTypes/{id}">[​/v1​/documentTypes​/{id}](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document%20Types/getOne)</span></p>

Restituisce il dettaglio del singolo tipo di documento

**Path params**

- `id` identificativo del tipo di documento

---

**Retrieve list of document types**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documentTypes">[​/v1​/documentTypes](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document%20Types/getAll)</span></p>

Restituisce la lista dei tipi documento

---

##### **DOCUMENTS STATUSES**

---

**Retrieve document status detail**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documentStatuses/{id}">[​/v1​/documentStatuses​/{id}](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document%20Statuses/getOne_1)</span></p>

Restituisce il dettaglio del singolo stato documento

**Path params**

- `id` identificativo dello stato di un documento

---

**Retrieve list of document types**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/documentStatuses">[​/v1​/documentStatuses](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document%20Statuses/getAll_1)</span></p>

Restituisce la lista degli stati documento

---

##### **ARCHIVED DOCUMENTS**

---

**Search archived documents**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/archivedDocuments/search">[​/v1​/archivedDocuments​/search](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Archived%20Documents/search_1)</span></p>

Permette di effettuare una ricerca filtrata per i documenti che sono stati cancellati di una determinata azienda

**Query params**

- `page` numero di pagina
- `size` numero di elementi per pagina
- `sort` campo per cui ordinare i documenti

**Request body**

- `page` numero di pagina<span style="color: #ff0000;"> //TODO FIX</span>
- `size` numero di elementi per pagina <span style="color: #ff0000;">//TODO FIX</span>
- `sort` campo per cui ordinare i documenti <span style="color: #ff0000;">//TODO FIX</span>
- `managerId` identificativo dello studio a cui è connessa l'azienda, permette di visualizzare i documenti che lo studio ha creato per conto di una determinata azienda
- `documentStatusId` stato del documento
- `documentTypeId` tipo documento
- documentOwnerId
- ownerCriteria.ownerType
- ownerCriteria.searchTextCriteria
- batchId
- `multiDocumentSessionId` id del documento multi sessione creato
- `documentIntermediaryId` identificativo azienda, <span style="text-decoration: underline;">**campo obbligatorio**</span>
- `cctStatusCode` stato della conservazione del documento
- `lastTimestampFrom` timestamp da cui inizierà la ricerca dei documenti che sono stati aggiornati fino al momento della chiamata
- `minCreationDate` data di creazione del documento da cui iniziare la ricerca
- `maxCreationDate` data di creazione del documento da per finire la ricerca
- `expiryDate` data di scadenza
- `signerTextFieldsSearchCriteria` permette di effettuare una ricerca per i firmatario inseriti nei documenti, il campi in cui viene fatta la ricerca sono //chiedere a Nico

```JSON
{ //TODO FIX
  "page": {
    "page": 0,
    "size": 0,
    "sort": [
      "string"
    ]
  },
  "request": {
    "managerId": "string",
    "documentStatusId": "string",
    "documentTypeId": "string",
    "documentOwnerId": "string",
    "ownerCriteria": {
      "ownerType": "string",
      "searchTextCriteria": "string"
    },
    "batchId": "string",
    "multiDocumentSessionId": "string",
    "documentIntermediaryId": "string",
    "cctStatusCode": "string",
    "lastTimestampFrom": 0,
    "minCreationDate": "2021-02-24T23:34:28.076Z",
    "maxCreationDate": "2021-02-24T23:34:28.076Z",
    "expiryDate": "2021-02-24T23:34:28.076Z",
    "signerTextFieldsSearchCriteria": "string"
  }
}
```

---

**Retrieve detail of single archived document**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/archivedDocuments/{hubId}">[​/v1​/archivedDocuments​/{hubId}](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Archived%20Documents/getOne_4)</span></p>

Permette di recuperare tutte le info di un determinato documento che è stato cancellato

**Query params**

- `hubId` identificativo del documento

---

##### **TEMPLATES**

---

**Get templates list**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/templates">[​/v1​/templates](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Templates/getAll_2)</span></p>

Permette di avere una lista dei template creati

**Query params**

- `page` numero di pagina
- `size` numero di elementi per pagina
- `sort` campo per cui ordinare i documenti
- `ownerId` identificativo azienda

---

**Retrieve detail of single template**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/templates/{templateId}">[​/v1​/templates​/{templateId}](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Templates/getOne_3)</span></p>

Permette di recuperare tutte le info di un determinato template

**Path params**

- `templateId` id del template

---

**Download base64 template document**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/templates/{templateId}/templateDocuments/{templateDocumentId}/download">[​/v1​/templates​/{templateId}​/templateDocuments​/{templateDocumentId}​/download](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Templates/downloadAsBase64_1)</span></p>

Permette il download in base64 di un determinato documento inserito nel template

**Path params**

- `templateId` id del template
- `templateDocumentId` in del documento

---

**Download template document**

<p class="callout info"><span class="opblock-summary-method">\[GET\] </span><span class="opblock-summary-path" data-path="/v1/templates/{templateId}/templateDocuments/{templateDocumentId}/download/file">[​/v1​/templates​/{templateId}​/templateDocuments​/{templateDocumentId}​/download​/file](https://signature-read-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Templates/downloadFile_1)</span></p>

Permette il download del file di un determinato documento inserito nel template

**Path params**

- `templateId` id del template
- `templateDocumentId` in del documento

---

---

//TODO MUOVERE NELLA SEZIONE ESEMPI

### Esempi di utilizzo

#### Fetch documenti incrementale

Per ottenere i documenti in maniera incrementale è necessario utilizzare l'endpoint **/v1/documents/search** specificando un filtro per **lastTimestampFrom** ed un ordinamento per **lastTimestamp**.

```
POST /api/v1/documents/search?page=0&size=100&sort=lastTimestamp,ASC

body:
{ 
	"lastTimestampFrom" : 1587736390388
}
```

Il timestamp è uno unix epoch in millisecondi e la prima volta che si effettua la chiamata non è necessario specificarlo.

Ad ogni chiamata è necessario salvarsi il valore più grande del campo **lastTimestamp** presente sui documenti ottenuti all'ultima pagina richiesta (se il sorting è ascendente, in caso di sorting discendente va preso il primo documento della prima pagina).

Di seguito un esempio:

```
--- chiamata 1 ---
POST /api/v1/documents/search?page=0&size=100&sort=lastTimestamp,ASC

body: { }

response:
{
    "_embedded": {
        "documentList": [
			 ... documenti ...
        ]
    },
    "_links": {
		... links hateoas ...
    },
    "page": {
        "size": 100,
        "totalElements": 150,
        "totalPages": 2,
        "number": 0
    }
}

--- chiamata 2 ---
POST /api/v1/documents/search?page=1&size=100&sort=lastTimestamp,ASC

body: { }

response:
{
    "_embedded": {
        "documentList": [
			 ... primi 49 documenti ...,
             {
               ... campi 50° documento ...,
               "lastTimestamp": 1587736390388
             }
        ]
    },
    "_links": {
		... links hateoas ...
    },
    "page": {
        "size": 100,
        "totalElements": 150,
        "totalPages": 2,
        "number": 1
    }
}

```

Finito il primo giro di richieste paginate sarà necessario salvare il campo lastTimestamp più grande trovato nei documenti ottenuti, in questo esempio il valore **1587736390388**.

Alla richiesta successiva sarà necessario impostare il suddetto valore come filtro **lastTimestampFrom** nel body della richiesta:

```
--- chiamata 1 ---
POST /api/v1/documents/search?page=0&size=100&sort=lastTimestamp,ASC

body: 
{ 
	"lastTimestampFrom": 1587736390388
}

response:
{
    "_embedded": {
        "documentList": [
			 ... 9 documenti ...,
             {
             	... campi 10° documento ...,
                "lastTimestamp": <nuovo valore da salvare>
             }
        ]
    },
    "_links": {
		... links hateoas ...
    },
    "page": {
        "size": 100,
        "totalElements": 10,
        "totalPages": 1,
        "number": 0
    }
}
```

In questo modo ad ogni nuova chiamata saranno presenti solo documenti che hanno subito una variazione, quindi con un lastTimestamp maggiore a quello ottenuto dalla chiamata precedente.

# Signature Write

API di scrittura per *Ts Digital Signature per le operazioni riguardanti i documenti.* [Swagger](https://signature-write-api-test.agyo.io/api/swagger-ui.html)

#### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

Il `Content-Type` deve essere `application/json`


#### Descrizione API

---

##### **UPLOAD**

---

**Upload file for async sign**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/rpc/upload/async">[​/v1​/rpc​/upload​/async](https://signature-write-api-dev.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Upload/asyncSignatureUpload)</span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di caricare un documento per il [processo asincrono](http://13.95.1.59/books/firma/page/processo-asincrono "Processo asincrono")</span>

**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Request body  
  
</span>**

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">I campi contrassegnati da</span>**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async"> asterisco (\*) </span>**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">sono da considerarsi</span>**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async"> obbligatori</span>**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">.</span>

- `transmitterId` **(\*)** id dell'azienda
- `managerId` id del commercialista dell'azienda
- `batchId`
- `fileName` **(\*)** nome del file da caricare
- `fileContent` **(\*)** base64 del file da caricare. il limite è di **15MB**
- `documentType` **(\*)** tipo documento, consultare [qui](https://digital-docs.ts-paas.com/books/signature/page/signature-read-7ef#bkmrk-documents-types) la lista dei tipi di documento disponibili
- `sessionName` nome personalizzato da assegnare alla sessione
- `notes` note aggiuntive sulla sessione
- `thirdPartyEmailAddresses` array di indirizzi email che riceveranno il documento firmato via mail
- `owner` **(\*)** dati relativi all'intestatario del documento, può essere una **persona fisica** o **azienda**
- `owner.firstName`
- `owner.lastName`
- `owner.companyName` ragione sociale
- `owner.vat` partita iva
- `owner.fiscalCode` codice fiscale
- `owner.kind` tipo dell'intestatario. i valori possibili sono **company** o **person**
- `metadata` dati aggiuntivi per la conservazione del documento. **Chiedere info in più** perchè ogni tipo di documento ha dei metadati di conservazione diversi. Oltre ai metadati specifici per la singola classe documentale, per ogni classe documentale bisogna aggiungere questi campi obbligatori: 
    - `SoggettoTitolare-CodiceFiscale`
    - `SoggettoTitolare-PartitaIva`
    - `SoggettoTitolare-Nome` e `SoggettoTitolare-Cognome` in caso di persona fisica altrimenti `SoggettoTitolare-Denominazione`
    - `SoggettoTitolare-IdPaese`
- `autoSendCCT` permette di mandare automaticamente il documento in conservazione una volta che il documento è stato firmato. Per far sì che la conservazione avvenga serve che l'azienda abbia il **servizio di cct attivo** e abbia inserito tutti i **metadata obbligatori** per lo specifico documento
- `signatureMode` **(\*)** i valori che può assumere sono **pades** o **cades**
- `mainSignerId` identificativo di un firmatario che ha un certificato di **FEQ automatica** per sigillare il documento. Se si è scelto di utilizzare il **sigillo TS** bisogna impostarlo a **null**
- `expiryDate` **(\*)** data di scadenza del documento, dopo 30 giorni dalla data di invio del documento alla firma per le sessioni **FEA** e **FES**  e 60 giorni per le sessioni di **FEQ** il documento andrà automaticamente in stato scaduto se non verrà firmato
- `strictExpiryDate` se impostato a **true** ed è presente una data di scadenza il documento, se non verrà firmato entro quella data, passerà in stato **SCADUTO**. Se invece viene impostato a false non verrà fatto il check sulla data di scadenza inserita ma saranno validi i 30/60 giorni specificati sopra per la scadenza del documento
- `year` anno di riferimento del documento
- `signatureProcessName` **(\*)** tipo di processo di firma. I valori possono essere: 
    - **FEA remota**
    - **FEA grafometrica**
    - **FES remota**
    - **FES grafometrica**
    - **FEQ remota**
    - **FEQ con dispositivo fisico**
- `areSignersOrdered:`: parametro che serve per specificare che i firmatari devono essere ordinati e devono firmare in modo consecutivo
- `attachments` eventuali allegati del documento. In questa fase, gli allegati verranno solo specificati mentre il caricamento verrà effettuato durante il processo di firma della sessione
- `attachments.description`**:** descrizione dell'allegato
- `attachments.signerFiscalCode`**:** codice fiscale del firmatario a cui richiedere l'allegato (deve essere presente tra i firmatari)
- `attachments.details`**:** array dei **file** che verranno richiesti nella sessione di firma. Indipendentemente dal numero di attachments.details specificati il risultato finale sarà un PDF con l'aggregazione dei details di un singolo allegato.
- `attachments.details.description`**:** descrizione del **file** da caricare
- `attachments.details.optional`**:** impostare a true se non si vuol rendere l'allegato obbligatorio
- `signers` **(\*)** array di firmatari che devono firmare il documento
- `signers.fiscalCode`
- `signers.firstName`
- `signers.lastName`
- `signers.email` email del firmatario
- `signers.mobile` numero del **telefono cellulare** del firmatario, verrà utilizzato per la sessione di firma
- `signers.canEmailBeSentAgain` //TODO DA ELIMINARE
- `signers.signatureData` array delle area di firma del firmatario sul documento
- `signers.signatureData.signatureType` identifica il tipo di firma che verrà effettuata, **tutte le area di firma sul documento** devono avere lo stesso valore. I tipi disponibili sono: 
    - **SecureCall** tipologia disponibile per **FEA remota** e **FES remota**
    - **otp** tipologia disponibile per **FEA remota** e **FES remota**
    - **BioSignature** tipologia che serve per la **FEA grafometrica in presenza**
    - **BioSignatureRemote** tipologia che serve per la **FEA grafometrica da remoto**
    - **fes\_noservice** tipologia che serve per la **FES grafometrica in presenza**
    - **fes\_noservice\_remote** tipologia che serve per la **FES grafometrica da remoto**
    - **fes** tipologia che serve per la **FES grafometrica con ausilio di tavoletta grafometrica Wacom**
    - **FSM** tipologia che serve per la **FEQ remota**, il valore può essere oltre a FSM anche **FDS** se il certificato di firma qualificata remota è stato richiesto con il metodo di autenticazione **otp**
    - **FSC** tipologia che serve per la **FEQ Remota con dispositivo fisico**
- `signers.signatureData.fieldGroup` può essere valorizzato con un valore personalizzato. Se lo stesso **fieldGroup** verrà messo su più aree di firma il firmatario le firmerà contemporaneamente altrimenti verrà richiesta una firma per ogni singola aree di firma presente sul documento
- `signers.signatureData.shortDescription` descrizione corta dell'area sul documento. Limite caratteri tra 5 e 20
- `signers.signatureData.longDescription` descrizione lunga dell'area sul documento. Limite caratteri 100
- `signers.signatureData.optional` impostare a **true** se non si vuol rendere l'area di firma obbligatoria
- `signers.signatureData.textType` identifica il tipo di area sul documento. Se non impostato di default verrà messo come area di firma. **Il documento deve contenere almeno un area di firma per essere valido**. I tipi possono essere: 
    - **signature** area di firma
    - **checkbox** per inserire una checkbox, oltre al textType dovrà essere inserito come longDescription il titolo che si vuole avere la selezione o meno della checkbox
    - **radiobutton** per inserire un radio button, oltre al textType le varie scelte del radio button dovranno avere sia la <div>longDescription che il fieldGroup uguale per ogni casella di scelta del radio button. La shortDescription identificherà le varie opzioni. Vedere esempio</div>
    - **text** per inserire del testo, oltre al textType dovrà essere inserito come longDescription il titolo che si vuole avere per la sezione
- `signers.signatureData.positioningStrategy` identifica il tipo di posizionamento che verrà usato per le varie aree sul documento. I valori possono essere: 
    - **coords** vengono utilizzate delle coordinate per identificare il posizionamento
    - <div>**textPattern** viene utilizzato un id all'interno del documento che farà da riferimento per il posizionamento  
          
        </div>
- `coordsRegion.page`
- `coordsRegion.h`
- <div><div>`coordsRegion.w`</div></div>
- <div><div>`coordsRegion.x`</div></div>
- `coordsRegion.y`
- `textPatternRegion.pattern` identificativo sul documento dell'area
- <div><div>`textPatternRegion.h`</div></div>
- `textPatternRegion.w`
- `textPatternRegion.offsetX`
- `textPatternRegion.offsetY`
- `multipleDocumentSession` se impostato a true il documento farà parte di una sessione multi documento (più documenti verrano firmati con un unica sessione di firma)
- `useSignatureTimestamp` permette di applicare una marca temporale al documento
- `sendSignedDocumentToMail` se impostato a true i firmatari presenti nel documento alla fine della firma del documento riceveranno una mail con in allegato il documento firmato
- `webHookUrl` permette di specificare un url dove verranno mandati gli eventi relativi all'aggiornamento di stato del documento.  
    Esempio del body del webhook che verrà mandato
- `afterSignRedirectUrl` permette di specificare un url su cui l'utente verra reindirizzato a processo di firma terminato.

```JavaScript
{
  "hubId": "616ecd1edbd9bc7f725633da",
  "status": {
    "statusCode": "Firmato",
    "errorDescription": null,
    "debugDescription": null,
    "creationDate": "2021-10-19T13:51:58.696Z"
  }
}
```

```JSON
{
  "transmitterId": "string",
  "managerId": "string",
  "batchId": "string",
  "fileName": "string",
  "sessionName": "string",
  "notes": "string",
  "thirdPartyEmailAddresses": [
    "string",
      ...
    "string"
  ]
  "fileContent": "string",
  "documentType": "string",
  "owner": {
    "firstName": "string",
    "lastName": "string",
    "companyName": "string",
    "vat": "string",
    "fiscalCode": "string",
    "kind": "string"
  },
  "metadata": {
    "cct": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    },
    "document": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    }
  },
  "autoSendCCT": true,
  "signatureMode": "string",
  "mainSignerId": "string",
  "expiryDate": "string",
  "year": 0,
  "signatureProcessName": "string",
  "areSignersOrdered": true,
  "webHookUrl": "string",
  "afterSignRedirectUrl": "string",
  "attachments": [
    {
      "description": "string",
      "signerFiscalCode": "string",
      "details": [
        {
          "description": "string",
          "optional": true
        }
      ]
    }
  ],
  "signers": [
    {
      "fiscalCode": "string",
      "firstName": "string",
      "lastName": "string",
      "email": "string",
      "mobile": "string",
      "canEmailBeSentAgain": true,
      "signatureData": [
        {
          "signatureType": "string",
          "fieldGroup": "string",
          "shortDescription": "string",
          "longDescription": "string",
          "textType": "string",
          "positioningStrategy": "string",
          "coordsRegion": {
            "page": 0,
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          },
          "fieldNameRegion": {
            "name": "string",
            "offsetX": 0,
            "offsetY": 0,
            "w": 0,
            "h": 0
          },
          "textPatternRegion": {
            "pattern": "string",
            "number": 0,
            "offsetX": 0,
            "offsetY": 0,
            "w": 0,
            "h": 0
          },
          "optional": true
        }
      ]
    }
  ],
  "commonSign": true,
  "multipleDocumentSession": true,
  "useSignatureTimestamp": true,
  "sendSignedDocumentToMail": true
}
```

[Esempi](https://digital-docs.ts-paas.com/books/signature/page/signature-write#bkmrk-upload-file-for-asyn)

---

**Upload file and download signed document**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/rpc/upload/sync">[​/v1​/rpc​/upload​/sync](https://signature-write-api-dev.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Upload/syncSignatureUpload)</span></p>

Permette il caricamento di un file seguendo il [processo sincrono](https://digital-docs.ts-paas.com/books/signature/page/processo-sincrono "Processo sincrono")

**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Request body</span>**

- `transmitterId` id dell'azienda
- `managerId` id del commercialista dell'azienda
- batchId
- `fileName` nome del file da caricare
- `fileContent` base64 del file da caricare. il limite è di **30MB**
- `documentType` tipo documento, consultare [qui](https://digital-docs.ts-paas.com/books/signature/page/signature-read-7ef#bkmrk-documents-types) la lista dei tipi disponibili
- `owner` dati relativi all'intestatario del documento, può essere una **persona fisica** o **azienda**
- `owner.firstName`
- `owner.lastName`
- `owner.companyName` ragione sociale
- `owner.vat` partita iva
- `owner.fiscalCode` codice fiscale
- `owner.kind` tipo dell'intestatario. i valori possibili sono **company** o **person**
- `metadata` dati aggiuntivi per la conservazione del documento. **Chiedere info in più** perchè ogni tipo di documento ha dei metadati di conservazione diversi. Oltre ai metadati specifici per la singola classe documentale per ogni classe documentale bisogna aggiungere questi campi obbligatori: 
    - `SoggettoTitolare-CodiceFiscale`
    - `SoggettoTitolare-PartitaIva`
    - `SoggettoTitolare-Nome` e `SoggettoTitolare-Cognome` in caso di persona fisica sennò `SoggettoTitolare-Denominazione`
    - `SoggettoTitolare-IdPaese`
- `autoSendCCT` permette di mandare automaticamente il documento in conservazione una volta che il documento è stato firmato, per far si che la conservazione avvenga serve che l'azienda abbia il **servizio di cct attivo** e abbia inserito tutti i **metadata obbligatori** per lo specifico documento
- `signatureMode` i valori che può assumere sono **pades** o **cades** o **xades**
- `signer` firmatario con un certificato di **FEQ automatica**
- `signer.fiscalCode`
- `signer.firstName`
- `signer.lastName`
- `signer.email` email del firmatario
- `signer.mobile` numero del **telefono cellulare** del firmatario
- `signer.canEmailBeSentAgain` //TODO DA ELIMINARE
- `pin` deprecato
- `useSignatureTimestamp` permette di applicare una marca temporale al documento
- `withoutFile` se impostato a true nella response non verrà riportato il base64 del file firmato

```JSON
{
  "transmitterId": "string",
  "managerId": "string",
  "batchId": "string",
  "fileName": "string",
  "fileContent": "string",
  "documentType": "string",
  "owner": {
    "firstName": "string",
    "lastName": "string",
    "companyName": "string",
    "vat": "string",
    "fiscalCode": "string",
    "kind": "string"
  },
  "metadata": {
    "cct": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    },
    "document": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    }
  },
  "autoSendCCT": true,
  "signatureMode": "string",
  "signer": {
    "fiscalCode": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "mobile": "string",
    "canEmailBeSentAgain": true,
    "pin": "string"
  },
  "withoutFile": true,
  "useSignatureTimestamp": false
}
```

##### **V2 - UPLOAD**

---

**Upload file for async sign**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/rpc/upload/async">[​/v2/rpc​/upload​/async](https://signature-write-api-dev.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Upload/asyncSignatureUpload)</span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di caricare un documento per il [processo asincrono](http://13.95.1.59/books/firma/page/processo-asincrono "Processo asincrono")</span>

**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Request body</span>**

- `transmitterId` id dell'azienda
- `managerId` id del commercialista dell'azienda
- `batchId`
- `fileName` nome del file da caricare
- `fileContent` base64 del file da caricare. il limite è di **15MB**
- `documentType` tipo documento, consultare [qui](https://digital-docs.ts-paas.com/books/signature/page/signature-read-7ef#bkmrk-documents-types) la lista dei tipi disponibili
- `sessionName` nome personalizzato da assegnare alla sessione
- `notes` note aggiuntive sulla sessione
- `owner` dati relativi all'intestatario del documento, può essere una **persona fisica** o **azienda**
- `owner.firstName`
- `owner.lastName`
- `owner.companyName` ragione sociale
- `owner.vat` partita iva
- `owner.fiscalCode` codice fiscale
- `owner.kind` tipo dell'intestatario. i valori possibili sono **company** o **person**
- `metadata` dati aggiuntivi per la conservazione del documento. **Chiedere info in più** perchè ogni tipo di documento ha dei metadati di conservazione diversi. Oltre ai metadati specifici per la singola classe documentale per ogni classe documentale bisogna aggiungere questi campi obbligatori: 
    - `SoggettoTitolare-CodiceFiscale`
    - `SoggettoTitolare-PartitaIva`
    - `SoggettoTitolare-Nome` e `SoggettoTitolare-Cognome` in caso di persona fisica sennò `SoggettoTitolare-Denominazione`
    - `SoggettoTitolare-IdPaese`
- `autoSendCCT` permette di mandare automaticamente il documento in conservazione una volta che il documento è stato firmato, per far si che la conservazione avvenga serve che l'azienda abbia il **servizio di cct attivo** e abbia inserito tutti i **metadata obbligatori** per lo specifico documento
- `signatureMode` i valori che può assumere sono **pades** o **cades**
- `mainSignerId` identificativo di un firmatario che ha un certificato di **FEQ automatica** per sigillare il documento. Se si scelto di utilizzare il **sigillo TS** bisogna impostarlo a **null**
- `expiryDate` data di scadenza del documento, dopo 30 giorno dalla data di invio del documento alla firma per le sessioni **FEA** e **FES**  e 60 giorni per le sessioni di **FEQ** il documento andrà automaticamente in stato scaduto se non verrà firmato
- `strictExpiryDate` se impostato a **true** ed è presente una data di scadenza il documento se non verrà firmato entro quella data passerà in stato **SCADUTO** se invece viene impostato a false non verrà fatto il check sulla data di scadenza inserita ma saranno validi i 30/60 giorni specificati sopra per la scadenza del documento
- `year` anno di riferimento del documento
- `signatureProcessName` tipo di processo di firma. I valori possono essere: 
    - **FEA remota**
    - **FEA grafometrica**
    - **FES remota**
    - **FES grafometrica**
    - **FEQ remota**
    - **FEQ con dispositivo fisico**
- `areSignersOrdered:`: parametro che serve per specificare che i firmatari devo essere ordinati e devono firmare in modo consecutivo
- `attachments` eventuali allegati del documento, gli allegati qui verrano solo specificati mentre il caricamento verrà effettuato durante il processo di firma della sessione
- `attachments.description`**:** descrizione dell'allegato
- `attachments.signerFiscalCode`**:** codice fiscale del firmatario a cui richiedere l'allegato (deve essere presente tra i firmatari)
- `attachments.details`**:** array dei **file** che verranno richiesti nella sessione di firma. Indipendentemente dal numero di attachments.details specificati il risultato finale sarà un PDF con l'aggregazione dei details di un singolo allegato.
- `attachments.details.description`**:** descrizione del **file** da caricare
- `attachments.details.optional`**:** impostare a true se non si vuol rendere l'allegato obbligatorio
- `signers` array di firmatari che devono firmare il documento
- `signers.fiscalCode`
- `signers.firstName`
- `signers.lastName`
- `signers.email` email del firmatario
- `signers.mobile` numero del **telefono cellulare** del firmatario, verrà utilizzato per la sessione di firma
- `signers.enrollmentInfo` oggetto che consente di passare le informazioni di un firmatario al quale si vuole attivare un certificato di firma qualificata per potergli poi far firmare un documento, al quale devono essere passate le seguenti property:
- `signerId` identificativo del firmatario.
- `profile` che può avere uno dei questi determinati valori: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemTriennale</span>"**
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemAuto</span>"**</div></div>
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">teamsystemOneshot</span>"**</div></div>
- `identificationProcesses` array che definisce la modalità di riconoscimento, i valori ammessi sono: 
    - **"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">FEQ</span>"**
    - <div><div>**"<span class="ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak" dir="ltr">SPID</span>"**</div></div>
- `enrollmentOwner` informazioni del firmatario.
- `enrollmentOwner.firstname`
- `enrollmentOwner.lastName`
- `enrollmentOwner.email`
- `enrollmentOwner.phoneNumber`
- `enrollmentOwner.fiscalCode` (facoltativo)
- `signers.signatureData` array delle area di firma del firmatario sul documento
- `signers.signatureData.signatureType` identifica il tipo di firma che verrà effettuata, **tutte le area di firma sul documento** devono avere lo stesso valore. I tipi disponibili sono: 
    - **SecureCall** tipologia disponibile per **FEA remota** e **FES remota**
    - **otp** tipologia disponibile per **FEA remota** e **FES remota**
    - **BioSignature** tipologia che serve per la **FEA grafometrica in presenza**
    - **BioSignatureRemote** tipologia che serve per la **FEA grafometrica da remoto**
    - **fes\_noservice** tipologia che serve per la **FES grafometrica in presenza**
    - **fes\_noservice\_remote** tipologia che serve per la **FES grafometrica da remoto**
    - **fes** tipologia che serve per la **FES grafometrica con ausilio di tavoletta grafometrica Wacom**
    - **FSM** tipologia che serve per la **FEQ remota**, il valore può essere oltre a FSM anche **FDS** se il certificato di firma qualificata remota è stato richiesto con il metodo di autenticazione **otp**
    - **FSC** tipologia che serve per la **FEQ Remota con dispositivo fisico**
- `signers.signatureData.fieldGroup` può essere valorizzato con un valore personalizzato, se lo stesso **fieldGroup** verrà messo su più aree di firma il firmatario le firmerà contemporaneamente sennò verrà richiesta una firma per ogni singola aree di firma presente sul documento
- `signers.signatureData.shortDescription` descrizione corta dell'area sul documento Limite caratteri tra 5 e 20
- `signers.signatureData.longDescription` descrizione lunga dell'area sul documento. Limite caratteri 100
- `signers.signatureData.optional` impostare a **true** se non si vuol rendere l'area di firma obbligatoria
- `signers.signatureData.textType` identifica il tipo di area sul documento, se non impostato di default verrà messo come area di firma. Il documento deve contenere almeno un area di firma per essere valido. I tipi possono essere: 
    - **signature** area di firma
    - **checkbox** per inserire una checkbox, oltre al textType dovrà essere inserito come longDescription il titolo che si vuole avere la selezione o meno della checkbox
    - **radiobutton** per inserire un radio button, oltre al textType le varie scelte del radio button dovranno avere sia la <div>longDescription che il fieldGroup uguale per ogni casella di scelta del radio button. La shortDescription identificherà le varie opzioni. Vedere esempio</div>
    - **text** per inserire del testo, oltre al textType dovrà essere inserito come longDescription il titolo che si vuole avere per la sezione
- `signers.signatureData.positioningStrategy` identifica il tipo di posizionamento che verrà usato per le varie aree sul documento. I valori possono essere: 
    - **coords** vengono utilizzate delle coordinate per identificare il posizionamento
    - <div>**textPattern** viene utilizzato un id all'interno del documento che farà da riferimento per il posizionamento  
          
        </div>
- `coordsRegion.page`
- `coordsRegion.h`
- <div><div>`coordsRegion.w`</div></div>
- <div><div>`coordsRegion.x`</div></div>
- `coordsRegion.y`
- `textPatternRegion.pattern` identificativo sul documento dell'area
- <div><div>`textPatternRegion.h`</div></div>
- `textPatternRegion.w`
- `textPatternRegion.offsetX`
- `textPatternRegion.offsetY`
- `multipleDocumentSession` se impostato a true il documento farà parte di una sessione multi documento (più documenti verrano firmati con un unica sessione di firma)
- `useSignatureTimestamp` permette di applicare una marca temporale al documento
- `sendSignedDocumentToMail` se impostato a true i firmatari presenti nel documento alla fine della firma del documento riceveranno una mail con in allegato il documento firmato
- `webHookUrl` permette di specificare un url dove verranno mandati gli eventi relativi all'aggiornamento di stato del documento.
- `afterSignRedirectUrl` permette di specificare un url su cui l'utente verra reindirizzato a processo di firma terminato.  
    Esempio del body del webhook che verrà mandato

```JavaScript
{
  "hubId": "616ecd1edbd9bc7f725633da",
  "status": {
    "statusCode": "Firmato",
    "errorDescription": null,
    "debugDescription": null,
    "creationDate": "2021-10-19T13:51:58.696Z"
  }
}
```

```JSON
{
  "transmitterId": "string",
  "managerId": "string",
  "batchId": "string",
  "fileName": "string",
  "fileContent": "string",
  "documentType": "string",
  "sessionName": "string",
  "notes": "string",
  "owner": {
    "firstName": "string",
    "lastName": "string",
    "companyName": "string",
    "vat": "string",
    "fiscalCode": "string",
    "kind": "string"
  },
  "metadata": {
    "cct": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    },
    "document": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    }
  },
  "autoSendCCT": true,
  "signatureMode": "string",
  "mainSignerId": "string",
  "expiryDate": "string",
  "year": 0,
  "signatureProcessName": "string",
  "areSignersOrdered": true,
  "webHookUrl": "string",
  "afterSignRedirectUrl": "string",
  "attachments": [
    {
      "description": "string",
      "signerFiscalCode": "string",
      "details": [
        {
          "description": "string",
          "optional": true
        }
      ]
    }
  ],
  "signers": [
    {
      "fiscalCode": "string",
      "firstName": "string",
      "lastName": "string",
      "email": "string",
      "mobile": "string",
      "canEmailBeSentAgain": true,
      "signatureData": [
        {
          "signatureType": "string",
          "fieldGroup": "string",
          "shortDescription": "string",
          "longDescription": "string",
          "textType": "string",
          "positioningStrategy": "string",
          "coordsRegion": {
            "page": 0,
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          },
          "fieldNameRegion": {
            "name": "string",
            "offsetX": 0,
            "offsetY": 0,
            "w": 0,
            "h": 0
          },
          "textPatternRegion": {
            "pattern": "string",
            "number": 0,
            "offsetX": 0,
            "offsetY": 0,
            "w": 0,
            "h": 0
          },
          "optional": true
        }
      ]
    }
  ],
  "commonSign": true,
  "multipleDocumentSession": true,
  "useSignatureTimestamp": true,
  "sendSignedDocumentToMail": true
}
```

[Esempi](https://digital-docs.ts-paas.com/books/signature/page/signature-write#bkmrk-upload-file-for-asyn)

---

**Upload file and download signed document**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/rpc/upload/sync">[​/v2/rpc​/upload​/sync](https://signature-write-api-dev.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Upload/syncSignatureUpload)</span></p>

Permette il caricamento di un file seguendo il [processo sincrono](https://digital-docs.ts-paas.com/books/signature/page/processo-sincrono "Processo sincrono")

**<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Request body</span>**

- `transmitterId` id dell'azienda
- `managerId` id del commercialista dell'azienda
- batchId
- `fileName` nome del file da caricare
- `fileContent` base64 del file da caricare. il limite è di **30MB**
- `documentType` tipo documento, consultare [qui](https://digital-docs.ts-paas.com/books/signature/page/signature-read-7ef#bkmrk-documents-types) la lista dei tipi disponibili
- `owner` dati relativi all'intestatario del documento, può essere una **persona fisica** o **azienda**
- `owner.firstName`
- `owner.lastName`
- `owner.companyName` ragione sociale
- `owner.vat` partita iva
- `owner.fiscalCode` codice fiscale
- `owner.kind` tipo dell'intestatario. i valori possibili sono **company** o **person**
- `metadata` dati aggiuntivi per la conservazione del documento. **Chiedere info in più** perchè ogni tipo di documento ha dei metadati di conservazione diversi. Oltre ai metadati specifici per la singola classe documentale per ogni classe documentale bisogna aggiungere questi campi obbligatori: 
    - `SoggettoTitolare-CodiceFiscale`
    - `SoggettoTitolare-PartitaIva`
    - `SoggettoTitolare-Nome` e `SoggettoTitolare-Cognome` in caso di persona fisica sennò `SoggettoTitolare-Denominazione`
    - `SoggettoTitolare-IdPaese`
- `autoSendCCT` permette di mandare automaticamente il documento in conservazione una volta che il documento è stato firmato, per far si che la conservazione avvenga serve che l'azienda abbia il **servizio di cct attivo** e abbia inserito tutti i **metadata obbligatori** per lo specifico documento
- `signatureMode` i valori che può assumere sono **pades** o **cades** o **xades**
- `signer` firmatario con un certificato di **FEQ automatica**
- `signer.fiscalCode`
- `signer.firstName`
- `signer.lastName`
- `signer.email` email del firmatario
- `signer.mobile` numero del **telefono cellulare** del firmatario
- `signer.canEmailBeSentAgain` //TODO DA ELIMINARE
- `pin` deprecato
- `withoutFile` se impostato a true nella response non verrà riportato il base64 del file firmato

```JSON
{
  "transmitterId": "string",
  "managerId": "string",
  "batchId": "string",
  "fileName": "string",
  "fileContent": "string",
  "documentType": "string",
  "owner": {
    "firstName": "string",
    "lastName": "string",
    "companyName": "string",
    "vat": "string",
    "fiscalCode": "string",
    "kind": "string"
  },
  "metadata": {
    "cct": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    },
    "document": {
      "additionalProp1": "string",
      "additionalProp2": "string",
      "additionalProp3": "string"
    }
  },
  "autoSendCCT": true,
  "signatureMode": "string",
  "signer": {
    "fiscalCode": "string",
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "mobile": "string",
    "canEmailBeSentAgain": true,
    "pin": "string"
  },
  "withoutFile": true
}
```

  
<textarea style="display: none;">{ "transmitterId": "string", "managerId": "string", "batchId": "string", "fileName": "string", "fileContent": "string", "documentType": "string", "owner": { "firstName": "string", "lastName": "string", "companyName": "string", "vat": "string", "fiscalCode": "string", "kind": "string" }, "metadata": { "cct": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" }, "document": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" } }, "autoSendCCT": true, "signatureMode": "string", "signer": { "fiscalCode": "string", "firstName": "string", "lastName": "string", "email": "string", "mobile": "string", "canEmailBeSentAgain": true, "pin": "string" }, "withoutFile": true }</textarea>

---

**Append document to multiDocumentSession**

<p class="callout info"></p>

Desc

---

##### **JOB**

---

**Start signature job**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/jobs/start">[​/v1​/jobs​/start](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Job/startJob)</span></p>

Permette di creare la sessione di firma del [processo asincrono](http://13.95.1.59/books/firma/page/processo-asincrono "Processo asincrono") per firmare il documento

**Request body**

- `hubId` identificativo del documento
- `sendEmail` **default = true**, permette di ricevere una mail con il link per la sessione di firma per ogni firmatario

[**Esempio**](https://digital-docs.ts-paas.com/books/signature/page/signature-write#bkmrk-start-signature-job-)

---

**Start signature job for multiDocuments**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/jobs/start/multidocument">[​/v1​/jobs​/start​/multidocument](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Job/startMultiDocumentSessionJob)</span></p>

Permette di creare la sessione di firma del [processo asincrono](http://13.95.1.59/books/firma/page/processo-asincrono "Processo asincrono") contemporaneamente su più documenti(documenti multi sessione)

**Request body**

- `multiDocumentSessionId` id del documento multi sessione
- `sendEmail` **default = true**, permette di ricevere una mail con il link per la sessione di firma per ogni firmatario

[**Esempio**](https://digital-docs.ts-paas.com/books/signature/page/signature-write#bkmrk-start-signature-job-)

---

##### **V2 - JOB**

---

**Start signature job per CA Teamsystem**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/jobs/start">[​/v2​/jobs​/start](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Job/startJob)</span></p>

Permette di creare la sessione di firma del [processo asincrono](http://13.95.1.59/books/firma/page/processo-asincrono "Processo asincrono") per firmare il documento

**Request body**

- `hubId` identificativo del documento
- `sendEmail` **default = true**, permette di ricevere una mail con il link per la sessione di firma per ogni firmatario

[**Esempio**](https://digital-docs.ts-paas.com/books/signature/page/signature-write#bkmrk-start-signature-job-)

---

**Start signature job for multiDocuments**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/jobs/start/multidocument">[​/v2/jobs​/start​/multidocument](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Job/startMultiDocumentSessionJob)</span></p>

Permette di creare la sessione di firma del [processo asincrono](http://13.95.1.59/books/firma/page/processo-asincrono "Processo asincrono") contemporaneamente su più documenti(documenti multi sessione)

**Request body**

- `multiDocumentSessionId` id del documento multi sessione
- `sendEmail` **default = true**, permette di ricevere una mail con il link per la sessione di firma per ogni firmatario

[**Esempio**](https://digital-docs.ts-paas.com/books/signature/page/signature-write#bkmrk-start-signature-job-)

---

**Cancel signature job**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/jobs/cancel">[​/v2/jobs​/cancel](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Job/cancelJob)</span></p>

Permette di cancellare una sessione di firma

**Request body**

- `hubId` id del documento in sessione
- `multiDocumentSessionId` id della multi sessione

---

##### **CCT**

---

**Send document to cct**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/cct/send">[​/v1​/cct​/send](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/CCT/sendToCCT)</span></p>

Permette di inviare un documento in conservazione

**Request body**

- `hubId` identificativo del documento

---

**Send documents to cct**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/cct/send/multi">[​/v1​/cct​/send​/multi](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/CCT/sendMultiToCCT)</span></p>

Permette di inviare più documenti in conservazione per un massimo di 50 documenti per chiamata

**Request body**

- `hubIds` array di hubId

---

##### **MAIL**

---

**Resend signature mail**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/mail/resend">[​/v1​/mail​/resend](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Mail/resendEmail)</span></p>

Permette di rimandare la mail con il link per la sessione di firma per uno o più firmatari di un documento se non hanno ancora firmato

**Request body**

- `hubId` identificativo del documento
- `fiscalCodes` array dei codici fiscali dei firmatari presenti all'interno del documento che devono ricevere di nuovo la mail

---

##### **DOCUMENT**

---

**Archive a document**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/document/{hubId}/archive">[​/v1​/document/{hubId}​/archive](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document/archiveDocument)</span></p>

Permette di eliminare un documento. Il documento verrà spostato in una collection quindi per la ricerca eventuale del documento eliminato bisogna utilizzare[ l'api apposta](https://digital-docs.ts-paas.com/books/signature/page/signature-read-7ef#bkmrk-archived-documents)

**Path params**

- `hubId` identificativo del documento

---

**Archive a multiDocument session**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/document/multiDocumentSession/{multiDocumentSessionId}/archive">[​/v1/document/multiDocumentSession/{multiDocumentSessionId}/archive](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document/archiveSession)</span></p>

Permette di eliminare un documento multi sessione. Il documento verrà spostato in una collection quindi per la ricerca eventuale del documento eliminato bisogna utilizzare[ l'api apposta](https://digital-docs.ts-paas.com/books/signature/page/signature-read-7ef#bkmrk-archived-documents)

**Path params**

- `multiDocumentSessionId` id del documento multi sessione

---

**Unarchive a document**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/document/{hubId}/unarchive">[​/v1​/document​/{hubId}​/unarchive](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document/unarchiveDocument)</span></p>

Permette di ripristinare un documento eliminato. Solamente i documenti in stato Firmato o Caricato possono essere ripristinati

**Path params**

- `hubId` identificativo del documento

---

**Unarchive a multiDocument session**

<p class="callout info"><span class="opblock-summary-method">\[POST\] </span><span class="opblock-summary-path" data-path="/v1/document/multiDocumentSession/{multiDocumentSessionId}/unarchive">[​/v1​/document​/multiDocumentSession​/{multiDocumentSessionId}​/unarchive](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document/unarchiveSession)</span></p>

Permette di ripristinare un documento multi sessione eliminato. Solamente i documenti in stato **Firmato** o **Caricato** possono essere ripristinati

**Path params**

- `multiDocumentSessionId` id del documento multi sessione

---

**Remove from multiDocument session**

<p class="callout info"><span class="opblock-summary-method">\[PATCH\] </span><span class="opblock-summary-path" data-path="/v1/document/{hubId}/removeFromMultiDocumentSession">[​/v1​/document​/{hubId}​/removeFromMultiDocumentSession](https://signature-write-api-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/Document/removeFromMultiDocumentSession)</span></p>

Permette di eliminare un documento da una sessione multi documento. Il documento nello specifico non verrà cancellato ma verrà considerato con un normale singolo documento //TODO

**Path params**

- `hubId` identificativo del documento

---

##### **TEMPLATE**

---

**Titolo**

<p class="callout info"></p>

Desc

---

**Titolo**

<p class="callout info"></p>

Desc

---

**Titolo**

<p class="callout info"></p>

Desc

---

**Titolo**

<p class="callout info"></p>

Desc

---

**Titolo**

<p class="callout info"></p>

Desc

---

**Titolo**

<p class="callout info"></p>

Desc

---








#####   
Cancel Jobs

```MarkDown
POST /v1/jobs/cancel
```

Permette di cancellare un job precedentemente avviato. Questo comporta l'eliminazione o lo stralcio del documento. Lo stato del documento passerà in `ELIMINATO` se tutto il processo di firma non era ancora concluso altrimenti in `STRALCIATO`. I documenti già mandati in CCT non possono essere ne eliminati ne stralciati.

---

# Signature Config

API di configurazione per *Ts Digital Signature.* [Swagger](https://signature-config-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/)

#### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

Il `Content-Type` deve essere `application/json`

####  

#### Descrizione API

---

##### **CONFIG**

---

**Get config for specify itemId**

<p class="callout info"><span class="opblock-summary-method">\[GET\] <span class="opblock-summary-path" data-path="/config/{itemId}">[​/config​/{itemId}](https://signature-config-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/CONFIG/getConfig)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di recuperare le info sul pacchetto attivato per una specifica azienda. Se l'azienda ha 2 pacchetti, uno intestato a se stessa e uno al commercialista, verrà recuperato i pacchetto intestato al commercialista.</span>

**Path params**

- `itemId` identificativo dell'azienda. Come valore accetta sia il vecchio valore dell'id (codice fiscale/p.iva) sia **uuid**

**Response**

```JSON
{
    "itemId": "edf11f25-1a02-402d-9092-4d9d4de64b7d",
    "ownerId": "edf11f25-1a02-402d-9092-4d9d4de64b7d",
    "oldItemId": "MNNRFL96D21I829W",
    "oldOwnerId": "MNNRFL96D21I829W",
    "createdAt": "2021-03-10T13:35:37.087+00:00",
    "updatedAt": "2021-03-10T13:35:37.087+00:00",
    "active": true,
    "fga": true,
    "fra": false,
    "frq": false,
    "fmq": true,
    "erp": false,
    "signatureTimeStamp": false,
    "readOnly": false
}
```

---

##### **EXTRADATA**

---

**Get extra-data for specify item**

<p class="callout info"><span class="opblock-summary-method"><span class="opblock-summary-path" data-path="/config/{itemId}">\[GET\] [​/registry​/extra-data](http://localhost:8080/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/EXTRADATA/getExtraData)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di recuperare i dati aggiuntivi per una specifica azienda</span>

**Query params**

- `itemId` identificativo dell'azienda

**Response**

```JSON
{
    "id": "MNNRFL96D21I829W",
    "webSite": " https://agyo.elevio.help/it/articles/477",
    "policyNumber": "IFL0009971",
    "email": "aa@aa.com",
    "cellNumber": "12342"
}
```

---

**Set extra-data for specify item**

<p class="callout info"><span class="opblock-summary-method"><span class="opblock-summary-path" data-path="/config/{itemId}">\[POST\] [​/registry​/extra-data](http://localhost:8080/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/EXTRADATA/getExtraData)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di impostare/aggiornare i dati aggiuntivi per una specifica azienda</span>

**Query params**

- `itemId` identificativo dell'azienda

**Request Body**

- `webSite` default **https://agyo.elevio.help/it/articles/477**
- <div>`cellNumber`</div>
- `email`
- <div>`policyNumber` default **IFL0009971**</div>

---

##### **SEAL**

---

**Get seal info for specify item**

<p class="callout info"><span class="opblock-summary-method"><span class="opblock-summary-path" data-path="/config/{itemId}">\[GET\] [​/seal](https://signature-config-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/SEAL/getSealInfo)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di recuperare le informazioni sul sigillo per una specifica azienda</span>

**Query params**

- `uuid` identificativo uuid dell'azienda

**Response**

```JSON
{
    "personalSeal": false,
    "personalSealDefault": null
}
```

---

**Set seal option for specify item**

<p class="callout info"><span class="opblock-summary-method"><span class="opblock-summary-path" data-path="/config/{itemId}">\[POST\] [​/seal](https://signature-config-test.agyo.io/api/swagger-ui/index.html?configUrl=/api/v3/api-docs/swagger-config#/SEAL/setSealInfo)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di impostare/aggiornare i dati del sigillo per una specifica azienda</span>

**Request Body**

- `uuid` identificativo uuid dell'azienda
- `personalSeal` se messo a **true** verrà utilizzato il certificato di firma di un firmatario per sigillare i documenti se invece messo a **false** verrà utilizzato il certificato di firma di **TeamSystem**
- `personalSealDefault` in caso di personalSeal a true si può impostare il **cf** del firmatario titolare del certificato di firma qualificata automatica che sigillerà tutti i documenti

<div id="bkmrk--7"><div><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>

# Digital Sign Api (DEPRECATO)

API di configurazione per *Ts Digital Signature.* [Swagger](https://ts-digital-sign-api-test.agyo.io/swagger/#/)

#### Header

Gli header richiesti dalla chiamata sono gli [header standard di TSDigital](https://digital-docs.ts-paas.com/books/integrazione-e-utilizzo-api-tsdigital/page/linee-guida-generali-api-ts-digital "Linee guida Generali API TS-Digital").

Il `Content-Type` deve essere `application/json`

#### <span style="text-decoration: underline;"><span style="color: #ff0000; text-decoration: underline;">Servizio deprecato in favore di Signature Config</span></span>

####  

#### Descrizione API

---

##### **EXTRADATA**

---

**Get extra-data for specify item (<span style="text-decoration: underline;"><span style="color: #ff0000; text-decoration: underline;">deprecata</span></span>)**

<p class="callout info"><span class="opblock-summary-method"><span class="opblock-summary-path" data-path="/config/{itemId}">\[GET\] [​/registry​/extra-data](https://ts-digital-sign-api-test.agyo.io/swagger/#/extra-data/get_registry_extra_data)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di recuperare i dati aggiuntivi per una specifica azienda</span>

**Query params**

- `itemId` identificativo dell'azienda

**Response**

```JSON
{
    "id": "MNNRFL96D21I829W",
    "webSite": " https://agyo.elevio.help/it/articles/477",
    "policyNumber": "IFL0009971",
    "email": "aa@aa.com",
    "cellNumber": "12342"
}
```

---

**Set extra-data for specify item (<span style="text-decoration: underline;"><span style="color: #ff0000; text-decoration: underline;">deprecata</span></span>)**

<p class="callout info"><span class="opblock-summary-method"><span class="opblock-summary-path" data-path="/config/{itemId}">\[POST\] [​/registry​/extra-data](https://ts-digital-sign-api-test.agyo.io/swagger/#/extra-data/post_registry_extra_data)</span></span></p>

<span class="opblock-summary-path" data-path="/v1/rpc/upload/async">Permette di impostare/aggiornare i dati aggiuntivi per una specifica azienda</span>

**Query params**

- `itemId` identificativo dell'azienda

**Request Body**

- `webSite` default **https://agyo.elevio.help/it/articles/477**
- <div>`cellNumber`</div>
- `email`
- <div>`policyNumber` default **IFL0009971**</div>

---

---