# Struttura di un Item

<p class="callout warning">Pagina in costruzione, le informazioni riportate potrebbero essere inaccurate o incomplete</p>

L'**item** è l'entità base fornita dall'anagrafica di TSDigital e contiene le informazioni necessarie a rappresentare aziende (compresi studi commercialisti), condomini e persone fisiche.

L'item è suddiviso in due sezioni principali: **base** e **preferences**.

### Base

La sezione base di un item contiene tutte le informazioni anagrafiche, ed è a sua volta suddivisa nelle sottosezioni **details**, **identifier** e **status**. Ha il seguente formato:

```JSON
{
  "id": "string",
  "identifier": {...},
  "details": {...},
  "status": {...},
  "hierarchyId": "string",
  "parentId": "string",
  "holdingId": "string",
  "ncsId": "string"
}
```

- **id**: identificativo univoco dell'item all'interno dell'anagrafica (es: 44672d4c-4dea-4cf9-af6d-1c3a01cb742e)
- **identifier**: insieme di informazioni che identificano univocamente l'item. Vedi [Identifier](#bkmrk-identifier) per maggiori dettagli.
- **details**: dettagli anagrafici dell'item. Vedi [Details](#bkmrk-details) per maggiori dettagli.
- **status**: stato d'attivazione e metadati legati all'item. Vedi [Status](#h_809007869331614699241817) per maggiori dettagli.
- **ncsId**: identificativo univoco dell'item all'interno del Notification Center.
- <span style="text-decoration: line-through;">**hierarchyId**</span>: proprietà deprecata
- <span style="text-decoration: line-through;">**parentId**</span>: proprietà deprecata
- <span style="text-decoration: line-through;">**holdingId**</span>: proprietà deprecata

#### Identifier

L'identifier di un item contiene tutti i dati che lo **identificano univocamente** all'interno dell'anagrafica. Non possono quindi esistere due item che abbiano identifier interamente identici. Ha il seguente formato:

```JSON
{
    "govCode": "string",
    "taxId": "string",
    "taxRegion": "string",
    "vatNumber": "string"
}
```

- **govCode**: identificativo univoco di un ufficio all'interno della Pubblica Amministrazione. Utilizzato per poter registrare come item separati entità governative che hanno la stessa coppia taxId/vatNumber.
- **taxId**: codice fiscale dell'item
- **vatNumber**: partita IVA dell'item
- **taxRegion**: identificativo della nazione alla quale appartiene l'item (es: IT)

<p class="callout warning"><span style="color: #6a2802; font-family: -apple-system, system-ui, 'Segoe UI', Oxygen, Ubuntu, Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; background-color: #fee3d3;">L'univocità di un item è data dall'intero insieme di elementi presenti nell'identifier. Due item possono, ad esempio, avere lo stesso taxId a patto di avere taxRegion differente.</span></p>

#### Details

I details racchiudono tutte le informazioni anagrafiche dell'item che non siano necessarie per identificarlo univocamente. Ha il seguente formato:

```JSON
{
  "classifier": "string",
  "description": "string",
  "firstName": "string",
  "lastName": "string",
  "gender": "string",
  "legalClass": "string",
  "birthDate": 0,
  "addresses": [{...}],
  "economics": {...},
  "contacts": [{...}],
  "professionalRegister": {...},
  "legalForm": {
     "code": "string",
     "description": "string"
   },
  "logoUrl": "string"
}
```

- **classifier**: identificativo della tipologia di item, può assumere i seguenti valori:  
    
    - **COMPANY**: azienda generica
    - **STUDIO:** azienda che effettua operazioni per altre aziende (es: studio commercialista)
    - **PERSON**: persona fisica
    - **BUILDING**: condominio
- **description**: nome/ragione sociale (es: Mondora srl sb)
- **firstName**: nome proprio (solo per classifier PERSON)
- **lastName**: cognome (solo per classifier PERSON)
- **gender**: sesso (solo per classifier PERSON). Valori possibili: *M*, *F*
- **legalClass**: ???
- **birthDate**: data di nascita (solo per classifier PERSON)
- **addresses**: array di indirizzi. Vedi [Address](#bkmrk-address) per maggiori dettagli sul singolo indirizzo
- **economics**: dati economici dell'item. Vedi [Economics](#bkmrk-economics) per maggiori dettagli
- **contacts**: contatti relativi all'item (es: numero di telefono). Vedi [Contacts](#bkmrk-contacts) per maggiori dettagli
- **professionalRegister**: informazioni sulla registrazione dell'item al proprio albo di riferimento. Vedi [ProfessionalRegister](#bkmrk-professionalregister) per maggiori dettagli
- **legalForm**: forma legale dell'azienda, suddivisa in 
    - **code**: codice di due lettere identificativo della forma legale (es: AA)
    - **description**: descrizione della forma legale (es: Società in accomandita per azioni)
- **logoUrl:** url dal quale recuperare il logo aziendale

Descrizione di un indirizzo, ha la seguente forma:

```JSON
{
  "streetName": "string",
  "streetNumber": "string",
  "city": "string",
  "province": "string",
  "zipCode": "string",
  "country": "string",
  "fullAddress": "string",
  "types": [
    "string"
  ],
  "id": "string"
}
```

- **streetName**: nome della via
- **streetNumber**: numero civico
- **city**: nome della città
- **province**: nome della provincia
- **zipCode**: CAP
- **country**: nome della nazione
- **fullAddress**:
- 

##### Economics

```JSON
{
  "rea": "string",
  "cciaa": "string",
  "capitalStock": "string",
  "liquidationState": "string",
  "registrationDate": 0,
  "taxRegime": "string",
  "soleShareholder": "string",
  "balanceSheetDate": 0,
  "economicActivities": {
    "mainActivity": {
      "code": "string",
      "rootCode": "string"
    }
  }
}
```

##### Contacts

```JSON
{
  "type": "string",
  "value": "string",
  "label": "string",
  "id": "string"
}
```

##### ProfessionalRegister

```JSON
{
  "description": "string",
  "province": "string",
  "code": "string",
  "registrationDate": 0
}
```

#### Status

Informazioni sullo stato dell'item quali stato d'attivazione/certificazione, data di creazione, data di ultima modifica, ecc.

```JSON
{
  "active": true,
  "activatedAt": 0,
  "activatedBy": "string",
  "createdAt": 0,
  "createdBy": "string",
  "modifiedAt": 0,
  "modifiedBy": "string",
  "status": "string",
  "deleted": true,
  "deletedAt": 0,
  "deletedBy": "string",
  "ownership": "string",
  "certificationStatus": "string",
  "externallyValidated": true
}
```

- **active**: indica se l'item è attivo su Digital
- **activatedAt**: timestamp in millisecondi dell'attivazione dell'item
- **activatedBy**: identificativo dell'utenza che ha effettuato l'attivazione dell'item
- **createdAt**: timestamp in millisecondi della creazione dell'item
- **createdBy**: identificativo dell'utenza che ha creato l'item
- **modifiedAt**: timestamp in millisecondi dell'ultima modifica effettuata sull'item
- **modifiedBy**: identificativo dell'utenza che ha effettuato l'ultima modifica sull'item
- **status**: status di validazione corrente dell'item. Può assumere uno dei seguenti valori: 
    - **UNVERIFIABLE**: l'azienda non ha mai caricato il contratto di TSDigital
    - **UNVERIFIABLE\_PENDING\_VALIDATE**: l'utente ha caricato il contratto TSDigital ed è in attesa di risposta
    - **REJECTED**: il contratto di TSDigital caricato dall'utente è invalido e ne deve quindi caricare uno corretto
    - **REJECTED\_PENDING\_VALIDATE**: l'utente ha ricaricato il contratto dopo il rifiuto ed è in attesa di risposta
    - **VALIDATED**: il contratto caricato è stato convalidato
- **certificationStatus**: status di certificazione corrente dell'item. Può assumere uno dei seguenti valori 
    - **null**: l'azienda non ha ancora caricato il contratto TSDigital
    - **AWAITING\_UPLOAD**: l'utente deve ricaricare il contratto TSDigital
    - **AWAITING\_APPROVAL**: l'utente ha caricato il contratto TSDigital ed è in attesa di risposta
    - **CERTIFIED**: il contratto è stato certificato
- **deleted**: indica se l'item è stato eliminato da Digital
- **deletedAt**: timestamp in millisecondi della cancellazione dell'item
- **deletedBy**: identificativo dell'utenza che ha eliminato l'item
- **ownership**:
- **externallyValidated**: indica se l'item è considerato essere valido anche in assenza di un contratto TSDigital in quanto validato da un'entità esterna

### Preferences

Preferenze globali dell'item

```JSON
{
  "enableConsole": true,
  "invoiceRecipient": true,
  "language": "string",
  "hidden": true
}
```

- <span style="text-decoration: line-through;">**enableConsole**:</span> deprecata
- **<span style="text-decoration: line-through;">invoiceRecipient</span>:** deprecata
- **<span style="text-decoration: line-through;">language</span>:** deprecata
- **hidden**: indica se l'azienda non può essere trovata tramite API di ricerca globali all'interno di digital. I suoi dati possono essere letti solo da utenti che hanno almeno un permesso sull'item stesso.