{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "joshProtocol! RestApi",
    "description": "L'interfaccia di programmazione delle applicazioni (API) di josh Protocol! fornisce un set completo di endpoint basati su architettura REST, consentendo a sistemi di terze parti di integrare le funzionalità della nostra piattaforma all'interno dei propri ecosistemi software.\r\n<br/><br/>L'infrastruttura è progettata per garantire elevata disponibilità, integrità dei dati e scalabilità, seguendo rigorosamente gli standard industriali per lo scambio di informazioni via web.\r\n\r\nLe API di josh Protocol! operano esclusivamente su protocollo sicuro HTTPS e si basano su:\r\n<ul>\r\n<li><b>Protocollo:</b> RESTful (Representational State Transfer)</li>\r\n<li><b>Formato di Interscambio:</b> JSON (UTF-8) per richieste e risposte</li>\r\n<li><b>Verbi HTTP:</b> Utilizzo semantico dei metodi standard:<br/>\r\n<ul>\r\n<li>GET: Recupero delle risorse.</li>\r\n<li>POST: Creazione di nuove entità.</li>\r\n<li>PUT/PATCH: Aggiornamento di dati esistenti.</li>\r\n<li>DELETE: Rimozione di risorse.</li>\r\n</ul>\r\n</li>\r\n</ul>\r\n",
    "contact": {
      "name": "it Consult Srl",
      "url": "https://www.itconsult.it/contatti/",
      "email": "helpdesk@itconsult.it"
    }
  },
  "host": "joshprotocol.develop.local",
  "basePath": "/joshProtocolRestApi",
  "schemes": [
    "https"
  ],
  "paths": {
    "/api/AOO/{idAttore}": {
      "get": {
        "tags": [
          "AOO"
        ],
        "summary": "/api/AOO/{idAttore}",
        "description": "`GET` **/api/AOO/{idAttore}**\n\n---\n\nRecupera la lista di tutte le AOO visibili dall'utente identificato dall'idAttore passato come parametro",
        "operationId": "AOO_GetByAttore",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "idAttore",
            "in": "path",
            "description": "ID numerico dell'attore",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista di AOO",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AOOViewModel"
              }
            }
          },
          "404": {
            "description": "Nessuna AOO trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/AOO/getByCurrentUser": {
      "get": {
        "tags": [
          "AOO"
        ],
        "summary": "/api/AOO/getByCurrentUser",
        "description": "`GET` **/api/AOO/getByCurrentUser**\n\n---\n\nRecupera la lista di tutte le AOO visibili dall'utente corrente",
        "operationId": "AOO_GetByCurrentUser",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "responses": {
          "200": {
            "description": "Lista di AOO",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AOOViewModel"
              }
            }
          },
          "400": {
            "description": "Utente corrente non valido"
          },
          "404": {
            "description": "Nessuna AOO trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/AOO": {
      "get": {
        "tags": [
          "AOO"
        ],
        "summary": "/api/AOO",
        "description": "`GET` **/api/AOO**\n\n---\n\nRecupera la lista di tutte le AOO presenti nel sistema",
        "operationId": "AOO_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "responses": {
          "200": {
            "description": "Lista di AOO",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AOOViewModel"
              }
            }
          },
          "404": {
            "description": "Nessuna AOO trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/documentiinterni/addfile": {
      "post": {
        "tags": [
          "DocumentiInterni"
        ],
        "summary": "/api/documentiinterni/addfile",
        "description": "`POST` **/api/documentiinterni/addfile**\n\n---\n\nConsente di aggiungere un file (principale o allegato) ad un documento interno",
        "operationId": "DocumentiInterni_AddFile",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DocumentoInternoAddFileRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "In caso di successo l'ID del file creato sarà memorizzato nel campo 'Result'. Errori possibili:\n* **-10**: Parametro [ CodiceAOO ] non specificato o non valido\n* **-20**: Parametro [ NumeroProtocollo ] non specificato o non valido\n* **-30**: Parametro [ Anno ] non specificato o non valido\n* **-31**: Parametro [ IdRegistro ] non specificato o non valido\n* **-40**: Parametro [ FileName ] non specificato o non valido\n* **-50**: Parametro [ FileContent ] non specificato o non valido\n* **-60**: Documento interno non trovato\n* **-70**: Stato documento interno non valido\n* **-1000**: Errore durante l'elaborazione del file\n",
            "schema": {
              "$ref": "#/definitions/GenericOperationResponse"
            }
          },
          "400": {
            "description": "Parameters non specificato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/documentiinterni/addfilebyuri": {
      "post": {
        "tags": [
          "DocumentiInterni"
        ],
        "summary": "/api/documentiinterni/addfilebyuri",
        "description": "`POST` **/api/documentiinterni/addfilebyuri**\n\n---\n\nConsente di aggiungere un file (principale o allegato) ad un documento interno. Il file viene recuperato da un path di rete o da SharePoint",
        "operationId": "DocumentiInterni_AddFileByUri",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DocumentoInternoAddFileByUriRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "In caso di successo l'ID del file creato sarà memorizzato nel campo 'Result'. Errori possibili:\n* **-10**: Parametro [ CodiceAOO ] non specificato o non valido\n* **-20**: Parametro [ NumeroProtocollo ] non specificato o non valido\n* **-30**: Parametro [ Anno ] non specificato o non valido\n* **-31**: Parametro [ IdRegistro ] non specificato o non valido\n* **-40**: Parametro [ FileUri ] non specificato o non valido\n* **-50**: Contenuto del file nullo\n* **-60**: Documento interno non trovato\n* **-70**: Stato documento interno non valido\n* **-80**: File non valido\n* **-1000**: Errore durante l'elaborazione del file\n",
            "schema": {
              "$ref": "#/definitions/GenericOperationResponse"
            }
          },
          "400": {
            "description": "Parameters non specificato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/documentiinterni/{codiceAOO}/{anno}/{numeroProtocollo}/{idRegistro}/deletefile/{idFile}": {
      "get": {
        "tags": [
          "DocumentiInterni"
        ],
        "summary": "/api/documentiinterni/{codiceAOO}/{anno}/{numeroProtocollo}/{idRegistro}/deletefile/{idFile}",
        "description": "`GET` **/api/documentiinterni/{codiceAOO}/{anno}/{numeroProtocollo}/{idRegistro}/deletefile/{idFile}**\n\n---\n\nCancella un file individuato dal suo ID e relativo ad un documento interno",
        "operationId": "DocumentiInterni_DeleteFile",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string",
            "default": "AOOT"
          },
          {
            "name": "anno",
            "in": "path",
            "description": "Anno del documento interno",
            "required": true,
            "type": "integer",
            "format": "int32",
            "default": "2026"
          },
          {
            "name": "numeroProtocollo",
            "in": "path",
            "description": "Numero di documento interno",
            "required": true,
            "type": "string",
            "default": "0000111"
          },
          {
            "name": "idRegistro",
            "in": "path",
            "description": "ID del registro",
            "required": true,
            "type": "integer",
            "format": "int32",
            "default": "1"
          },
          {
            "name": "idFile",
            "in": "path",
            "description": "ID univoco del file da cancellare",
            "required": true,
            "type": "integer",
            "format": "int32",
            "default": "100"
          }
        ],
        "responses": {
          "200": {
            "description": "In caso di successo restituisce un oggetto GenericOperationResponse vuoto. Errori possibili:\n* **-10**: Parametro [ codiceAOO ] non specificato o non valido\n* **-20**: Parametro [ numeroProtocollo ] non specificato o non valido\n* **-30**: Parametro [ anno ] non specificato o non valido\n* **-31**: Parametro [ idRegistro ] non specificato o non valido\n* **-40**: Parametro [ idFile ] non specificato o non valido\n* **-60**: Documento interno non trovato\n* **-70**: Stato documento interno non valido\n* **-1000**: Errore durante l'elaborazione del file\n",
            "schema": {
              "$ref": "#/definitions/GenericOperationResponse"
            }
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/documentiinterni/{codiceAOO}/{anno}/{numeroProtocollo}/{idRegistro}/deleteallfiles": {
      "get": {
        "tags": [
          "DocumentiInterni"
        ],
        "summary": "/api/documentiinterni/{codiceAOO}/{anno}/{numeroProtocollo}/{idRegistro}/deleteallfiles",
        "description": "`GET` **/api/documentiinterni/{codiceAOO}/{anno}/{numeroProtocollo}/{idRegistro}/deleteallfiles**\n\n---\n\nCancella tutti i file relativi ad un documento interno",
        "operationId": "DocumentiInterni_DeleteAllFiles",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string",
            "default": "AOOT"
          },
          {
            "name": "anno",
            "in": "path",
            "description": "Anno del documento interno",
            "required": true,
            "type": "integer",
            "format": "int32",
            "default": "2026"
          },
          {
            "name": "numeroProtocollo",
            "in": "path",
            "description": "Numero di documento interno",
            "required": true,
            "type": "string",
            "default": "0000111"
          },
          {
            "name": "idRegistro",
            "in": "path",
            "description": "ID del registro",
            "required": true,
            "type": "integer",
            "format": "int32",
            "default": "1"
          }
        ],
        "responses": {
          "200": {
            "description": "In caso di successo restituisce un oggetto GenericOperationResponse vuoto. Errori possibili:\n* **-10**: Parametro [ codiceAOO ] non specificato o non valido\n* **-20**: Parametro [ numeroProtocollo ] non specificato o non valido\n* **-30**: Parametro [ anno ] non specificato o non valido\n* **-31**: Parametro [ idRegistro ] non specificato o non valido\n* **-60**: Documento interno non trovato\n* **-70**: Stato documento interno non valido\n* **-1000**: Errore durante l'elaborazione del file\n",
            "schema": {
              "$ref": "#/definitions/GenericOperationResponse"
            }
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/documentiinterni/filecontent/{fileId}": {
      "get": {
        "tags": [
          "DocumentiInterni"
        ],
        "summary": "/api/documentiinterni/filecontent/{fileId}",
        "description": "`GET` **/api/documentiinterni/filecontent/{fileId}**\n\n---\n\nRecupera il contenuto di un file relativo ad un documento interno",
        "operationId": "DocumentiInterni_GetFileContentById",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "ID del file",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "In caso di successo restituisce il contenuto del file in formato binario. Il nome del file viene aggiunto nell'header"
          },
          "400": {
            "description": "Il parametro [ fileId ] non è valido"
          },
          "404": {
            "description": "File non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/fascicolo": {
      "get": {
        "tags": [
          "Fascicolo"
        ],
        "summary": "/api/fascicolo?codice={codice}&codiceTitolario={codiceTitolario}&aoo={aoo}",
        "description": "`GET` **/api/fascicolo?codice={codice}&codiceTitolario={codiceTitolario}&aoo={aoo}**\n\n---\n\nRecupera il fascicolo individuato dal codice, codice titolario e codice AOO passati come parametri",
        "operationId": "Fascicolo_GetByCodice",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codice",
            "in": "query",
            "description": "Codice del fascicolo",
            "required": true,
            "type": "string"
          },
          {
            "name": "codiceTitolario",
            "in": "query",
            "description": "Codice del titolario",
            "required": true,
            "type": "string"
          },
          {
            "name": "aoo",
            "in": "query",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Fascicolo",
            "schema": {
              "$ref": "#/definitions/FascicoloViewModel"
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ codiceFascicolo ] non specificato\n- Parametro [ codiceTitolario ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "Fascicolo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      },
      "post": {
        "tags": [
          "Fascicolo"
        ],
        "summary": "/api/fascicolo",
        "description": "`POST` **/api/fascicolo**\n\n---\n\nConsente la creazione di un nuovo fascicolo. Se per l'AOO indicata, esiste già un fascicolo con lo stesso codice e lo stesso titolario, restituisce la response con l'ID del fascicolo già presente",
        "operationId": "Fascicolo_Post",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "description": "Parametri per la creazione del fascicolo",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FascicoloRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response con l'ID del nuovo fascicolo o con l'errore. Errori possibili:\n* **-1**: Parametro [ CodiceAOO ] non specificato\n* **-2**: Parametro [ Titolario ] non specificato\n* **-3**: Parametro [ Codice ] non specificato\n* **-4**: Il fascicolo non è pubblico e non è stato specificato un assegnatario principale\n* **-5**: Parametro [ Autore ] non specificato\n* **-40**: Parametro [ ResponsabileProcedimento ] non specificato o non valido\n* **-41**: Parametro [ IdUOResponsabileProcedimento ] non specificato o non valido\n* **-42**: Parametro [ ProcedimentoArgomento ] non specificato\n* **-43**: Parametro [ ProcedimentoCatalogo ] non specificato\n* **-44**: Parametro [ ProcedimentoFasi ] non specificato\n* **-45**: Parametro [ Procedimento ] non specificato\n* **-46**: Parametro [ SoggettoNome ] non specificato\n* **-47**: Parametro [ SoggettoCognome ] non specificato\n* **-48**: Parametro [ SoggettoCodiceFiscale ] non specificato\n* **-49**: Parametro [ SoggettoDenominazione ] non specificato\n* **-100**: Titolario non trovato\n* **-110**: Autore con ID X non trovato\n* **-111**: Autore con username X non trovato\n* **-120**: Responsabile procedimento con ID X non trovato\n* **-121**: Responsabile procedimento con username X non trovato\n* **-130**: UO responsabile procedimento non trovata\n* **-150**: Assegnatario principale non trovato\n* **-151**: Assegnatario per conoscenza non trovato\n* **-152**: Assegnatario per competenza non trovato\n* **-200**: Errore durante la creazione di una cartella del fascicolo\n* **-1000**: Errore durante il salvataggio del fascicolo\n* **-10000**: Errore non specificato\n",
            "schema": {
              "$ref": "#/definitions/FascicoloResponse"
            }
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/fascicolo/all": {
      "get": {
        "tags": [
          "Fascicolo"
        ],
        "summary": "/api/fascicolo/all?codiceAOO={codiceAOO}",
        "description": "`GET` **/api/fascicolo/all?codiceAOO={codiceAOO}**\n\n---\n\nRecupera l'elenco dei fascicoli aperti dell'AOO passata come parametro che sono accessibili dall'attore corrente",
        "operationId": "Fascicolo_GetAllByAOO",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "query",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Fascicolo",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FascicoloViewModel"
              }
            }
          },
          "400": {
            "description": "Il parametro [ codiceAOO ] non è valido"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/fascicolo/search": {
      "post": {
        "tags": [
          "Fascicolo"
        ],
        "summary": "/api/fascicolo/search",
        "description": "`POST` **/api/fascicolo/search**\n\n---\n\nEffettua la ricerca dei fascicoli in base ai parametri forniti. La ricerca può essere eseguita in modo paginato",
        "operationId": "Fascicolo_Search",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "description": "Parametri di ricerca: CodiceAOO, filtri, ordinamento e paginazione.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FascicoloSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista di fascicoli trovati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FascicoloViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ parameters ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "AOO non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Fascicolo/{id}": {
      "get": {
        "tags": [
          "Fascicolo"
        ],
        "summary": "/api/Fascicolo/{id}",
        "description": "`GET` **/api/Fascicolo/{id}**\n\n---\n\nRecupera il fascicolo individuato dall'id passato come parametro",
        "operationId": "Fascicolo_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID fascicolo",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Fascicolo",
            "schema": {
              "$ref": "#/definitions/FascicoloViewModel"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Fascicolo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/search": {
      "post": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/search",
        "description": "`POST` **/api/protocolli/search**\n\n---\n\nEffettua la ricerca protocolli in base ai parametri forniti. La ricerca può essere eseguita in modo paginato",
        "operationId": "Protocolli_Search",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "description": "Parametri di ricerca: CodiceAOO, filtri, ordinamento e paginazione.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProtocolliSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista protocolli trovati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ProtocolloViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ parameters ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "AOO non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/{codiceAOO}/{anno}/{idRegistro}/{numeroProtocollo}/statoinvio": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/{codiceAOO}/{anno}/{idRegistro}/{numeroProtocollo}/statoinvio",
        "description": "`GET` **/api/protocolli/{codiceAOO}/{anno}/{idRegistro}/{numeroProtocollo}/statoinvio**\n\n---\n\nRecupera lo stato degli invii di un documento tramite la segnatura di protocollo.",
        "operationId": "Protocolli_GetDettaglioInviiProtocollo",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice dell'AOO.",
            "required": true,
            "type": "string"
          },
          {
            "name": "anno",
            "in": "path",
            "description": "Anno di protocollazione.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "idRegistro",
            "in": "path",
            "description": "ID del registro documenti.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "numeroProtocollo",
            "in": "path",
            "description": "Numero di protocollo (es. 0000050).",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista invii effettuati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/InvioProtocolloViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ codiceAOO ] non specificato\n- Parametro [ anno ] non specificato\n- Parametro [ idRegistro ] non specificato\n- Parametro [ numeroProtocollo ] non specificato"
          },
          "404": {
            "description": "Protocollo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/{id}/statoinvio": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/{id}/statoinvio",
        "description": "`GET` **/api/protocolli/{id}/statoinvio**\n\n---\n\nRecupera lo stato degli invii di un protocollo tramite l'ID.",
        "operationId": "getStatoInviiById",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID numerico del protocollo",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista invii effettuati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/InvioProtocolloViewModel"
              }
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Protocollo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/{codiceAOO}/{anno}/{numeroProtocollo}": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/{codiceAOO}/{anno}/{numeroProtocollo}",
        "description": "`GET` **/api/protocolli/{codiceAOO}/{anno}/{numeroProtocollo}**\n\n---\n\nRecupera un documento protocollo tramite AOO, anno e numero protocollo.",
        "operationId": "Protocolli_GetByProtocollo",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice dell'AOO di appartenenza.",
            "required": true,
            "type": "string"
          },
          {
            "name": "anno",
            "in": "path",
            "description": "Anno di protocollazione.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "numeroProtocollo",
            "in": "path",
            "description": "Numero di protocollo (es. 0000111).",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Protocollo trovato",
            "schema": {
              "$ref": "#/definitions/DocumentoViewModel"
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ codiceAOO ] non specificato\n- Parametro [ anno ] non specificato\n- Parametro [ numeroProtocollo ] non specificato"
          },
          "404": {
            "description": "Protocollo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/{id}/content": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/{id}/content",
        "description": "`GET` **/api/protocolli/{id}/content**\n\n---\n\nScarica il file principale (documento principale) di un protocollo.",
        "operationId": "getContentProtocollo",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID numerico del protocollo",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "File restituito come application/octet-stream"
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Protocollo o file principale non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/{id}/files": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/{id}/files",
        "description": "`GET` **/api/protocolli/{id}/files**\n\n---\n\nRecupera tutti i file di un documento tramite il suo ID",
        "operationId": "Protocolli_GetFiles",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID numerico del protocollo",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Elenco di file trovati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/FileProtocolloResponse"
              }
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Protocollo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/filecontent/{fileId}": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/filecontent/{fileId}",
        "description": "`GET` **/api/protocolli/filecontent/{fileId}**\n\n---\n\nScarica il contenuto di un file tramite il suo ID.",
        "operationId": "Protocolli_GetFileContentById",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "fileId",
            "in": "path",
            "description": "ID numerico del file.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "File restituito come application/octet-stream"
          },
          "400": {
            "description": "Parametro [ fileId ] non specificato"
          },
          "404": {
            "description": "File non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/protocolli/{id}": {
      "put": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/protocolli/{id}",
        "description": "`PUT` **/api/protocolli/{id}**\n\n---\n\nAggiorna le proprietà di un protocollo esistente",
        "operationId": "Protocolli_Put",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID del documento da aggiornare.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "request",
            "in": "body",
            "description": "Elenco di variabili nome/valore da aggiornare sul documento.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DocumentoUpdateRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Aggiornamento completato o lista errori di validazione",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ValidationErrorViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ id ] non specificato\n- Parametro [ request ] non specificato\n- Parametro[CurrentUserName] non specificato\n- Proprietà da aggiornare non specificate"
          },
          "404": {
            "description": "Documento non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Protocolli/{id}": {
      "get": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/Protocolli/{id}",
        "description": "`GET` **/api/Protocolli/{id}**\n\n---\n\nRecupera un protocollo tramite il suo ID.",
        "operationId": "Protocolli_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID numerico del protocollo",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Protocollo trovato",
            "schema": {
              "$ref": "#/definitions/DocumentoViewModel"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Protocollo non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Protocolli": {
      "post": {
        "tags": [
          "Protocolli"
        ],
        "summary": "/api/Protocolli",
        "description": "`POST` **/api/Protocolli**\n\n---\n\nConsente la creazione di un nuovo protocollo",
        "operationId": "Protocolli_Post",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "description": "Parametri per la creazione del protocollo",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProtocollazioneRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response con l'ID del nuovo protocollo o con l'errore. I valori possibili per il campo ErrorCode sono:\n* **0**: Operazione completata correttamente\n* **1**: Protocollazione completata correttamente, ma si è verificato un errore nell’invio delle notifiche interne.\n* **2**: Protocollazione completata correttamente, ma si è verificato un errore nell’invio dell’email del protocollo ai destinatari. Questo codice viene generato solo in caso di protocolli in uscita.\n* **-1**: Repository file temporanei non definito\n* **-2**: Protocollo prenotato non trovato\n* **-3**: AOO non trovata\n* **-20**: Nome file principale non specificato\n* **-21**: Il nome del file principale contiene caratteri non validi. I caratteri invalidi sono: \\\\ / : * ? \\\" < > | # { } % ~ & °. \r\nInoltre, il nome del file non può contenere il punto prima dell'estensione\r\n\n* **-22**: La voce di titolario con ID passato come parametro è inesistente\n* **-23**: La voce di titolario con codice passato come parametro è inesistente\n* **-30**: Parametro [ CodiceAOO ] non specificato\n* **-31**: Parametro [ Titolario ] non specificato\n* **-32**: Parametro [ FilePrincipale ] non specificato\n* **-33**: Parametro [ Oggetto ] non specificato\n* **-34**: Parametro [ Protocollatore ] non specificato\n* **-35**: Parametro [ Assegnatario ] non specificato\n* **-36**: Parametro [ MittentiDestinatari ] non specificato\n* **-41**: Dimensione file principale non valida\n* **-42**: Dimensione allegato non valida\n* **-43**: Fascicolo non trovato\n* **-44**: Ufficio di protocollazione non trovato\n* **-45**: Tipologia documentale non trovata\n* **-46**: Protocollo collegato non trovato\n* **-50**: La lunghezza dei destinatari principali supera il massimo consentito (8000 caratteri)\n* **-51**: La lunghezza dei destinatari per conoscenza supera il massimo consentito (8000 caratteri)\n* **-52**: La lunghezza dei destinatari per competenza supera il massimo consentito (8000 caratteri)\n* **-53**: Assegnatario non trovato\n* **-61**: Errore durante l’upload del file principale\n* **-62**: Errore durante l’upload del file relativo alla conversione in PDF\n* **-63**: Errore durante la generazione della segnatura del protocollo\n* **-64**: Errore durante la modifica del nome della cartella di protocollazione\n* **-65**: Errore durante l’upload del file relativo ad un allegato\n* **-66**: Utente protocollista non trovato\n* **-70**: Assegnatario di tipo UO non trovato\n* **-1000**: Errore durante il salvataggio del protocollo\n* **-10000**: Errore non specificato\n",
            "schema": {
              "$ref": "#/definitions/ProtocollazioneResponse"
            }
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/rubrica/{codiceAOO}/{displayName}": {
      "get": {
        "tags": [
          "Rubrica"
        ],
        "summary": "/api/rubrica/{codiceAOO}/{displayName}",
        "description": "`GET` **/api/rubrica/{codiceAOO}/{displayName}**\n\n---\n\nRestituisce le informazioni del contatto corrispondente al display name e all'AOO di appartenenza. Vengono recuperate anche le informazioni del recapito di default",
        "operationId": "Rubrica_GetByDisplayName",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO di appartenenza",
            "required": true,
            "type": "string"
          },
          {
            "name": "displayName",
            "in": "path",
            "description": "Display name del contatto",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Contatto trovato",
            "schema": {
              "$ref": "#/definitions/ContattoViewModel"
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ codiceAOO ] non specificato\n- Parametro [ displayName ] non specificato\n"
          },
          "404": {
            "description": "Nessun contatto trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/rubrica/search": {
      "post": {
        "tags": [
          "Rubrica"
        ],
        "summary": "/api/rubrica/search",
        "description": "`POST` **/api/rubrica/search**\n\n---\n\nEffettua la ricerca dei contatti in base ai parametri forniti. La ricerca può essere eseguita in modo paginato.\r\nIl metodo cerca sia nella rubrica standard, sia nelle rubriche riservate accessibili dall'utente corrente",
        "operationId": "Rubrica_Search",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "description": "Parametri di ricerca: CodiceAOO, filtri, ordinamento e paginazione.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/RubricaSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista di contatti trovati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContattoViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ parameters ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "AOO non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Rubrica/{id}": {
      "get": {
        "tags": [
          "Rubrica"
        ],
        "summary": "/api/Rubrica/{id}",
        "description": "`GET` **/api/Rubrica/{id}**\n\n---\n\nRestituisce le informazioni del contatto corrispondente all'id passato come parametro. Vengono recuperate anche le informazioni del recapito di default",
        "operationId": "Rubrica_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID del contatto",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Contatto trovato",
            "schema": {
              "$ref": "#/definitions/ContattoViewModel"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Nessun contatto trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Searches": {
      "post": {
        "tags": [
          "Searches"
        ],
        "summary": "/api/Searches",
        "description": "`POST` **/api/Searches**\n\n---\n\nEffettua la ricerca avanzata sui protocolli",
        "operationId": "Searches_Post",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "data",
            "in": "body",
            "description": "Dati relativi alla ricerca: paginazione, filtri, ordinamento",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SearchProtocolliViewModel"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ricerca eseguita correttamente",
            "schema": {
              "$ref": "#/definitions/SearchRsponseData"
            }
          },
          "400": {
            "description": "Parametri mancanti o non validi"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/titolario/{codiceAOO}/{codiceTitolario}": {
      "get": {
        "tags": [
          "Titolario"
        ],
        "summary": "/api/titolario/{codiceAOO}/{codiceTitolario}",
        "description": "`GET` **/api/titolario/{codiceAOO}/{codiceTitolario}**\n\n---\n\nRecupera la voce di titolario in base all'AOO di appartenenza e al codice della voce di titolario",
        "operationId": "Titolario_GetByCodice",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          },
          {
            "name": "codiceTitolario",
            "in": "path",
            "description": "Codice della voce di titolario",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Voce di titolario",
            "schema": {
              "$ref": "#/definitions/TitolarioViewModel"
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ codiceAOO ] non specificato\n- AOO [ codiceAOO ] non trovata\n- Parametro [ codiceTitolario ] non specificato"
          },
          "404": {
            "description": "Voce di titolario non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/titolario/search": {
      "post": {
        "tags": [
          "Titolario"
        ],
        "summary": "/api/titolario/search",
        "description": "`POST` **/api/titolario/search**\n\n---\n\nEffettua la ricerca delle voci di titolario in base ai parametri forniti. La ricerca può essere eseguita in modo paginato.",
        "operationId": "Titolario_Search",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "description": "Parametri di ricerca: CodiceAOO, filtri, ordinamento e paginazione.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TitolarioSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista voci di titolario trovate",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TitolarioViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ parameters ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "AOO non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Titolario/{id}": {
      "get": {
        "tags": [
          "Titolario"
        ],
        "summary": "/api/Titolario/{id}",
        "description": "`GET` **/api/Titolario/{id}**\n\n---\n\nRecupera la voce di titolario in base all'ID numerico passato come parametro",
        "operationId": "Titolario_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID univoco della voce di titolario",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Voce di titolario",
            "schema": {
              "$ref": "#/definitions/TitolarioViewModel"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Voce di titolario non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/UO/{codiceAOO}/list": {
      "get": {
        "tags": [
          "UO"
        ],
        "summary": "/api/UO/{codiceAOO}/list",
        "description": "`GET` **/api/UO/{codiceAOO}/list**\n\n---\n\nRecupera l'elenco delle unità organizzative in base al codice AOO passato come parametro",
        "operationId": "UO_GetAll",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Lista di unità organizzative",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UnitaOrganizzativaRespViewModel"
              }
            }
          },
          "400": {
            "description": "Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "Nessuna unità organizzativa trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/UO/{id}/canbedisabled": {
      "get": {
        "tags": [
          "UO"
        ],
        "summary": "/api/UO/{id}/canbedisabled",
        "description": "`GET` **/api/UO/{id}/canbedisabled**\n\n---\n\nRestituisce un booleano che indica se l'unità organizzativa può essere disabilitata o meno",
        "operationId": "UO_CanBeDisabled",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID univoco dell'unità organizzativa",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Boolean con valore che indica se l'unità organizzativa può essere disabilitata",
            "schema": {
              "type": "boolean"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Nessuna unità organizzativa trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/UO/search": {
      "post": {
        "tags": [
          "UO"
        ],
        "summary": "/api/UO/search",
        "description": "`POST` **/api/UO/search**\n\n---\n\nEffettua la ricerca delle unità organizzative in base ai parametri forniti. La ricerca può essere eseguita in modo paginato.",
        "operationId": "UO_Search",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "description": "Parametri di ricerca: CodiceAOO, filtri, ordinamento e paginazione.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UOSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista unità organizzative trovate",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UnitaOrganizzativaRespViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ parameters ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "AOO non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/UO/{codiceAOO}/tree": {
      "get": {
        "tags": [
          "UO"
        ],
        "summary": "/api/UO/{codiceAOO}/tree",
        "description": "`GET` **/api/UO/{codiceAOO}/tree**\n\n---\n\nRecupera l'elenco delle unità organizzative delle AOO e organizzate in un albero recuperando anche gli utenti",
        "operationId": "UO_GetAlberoUO",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Elenco di unità organizzative",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UOTreeItemViewModel"
              }
            }
          },
          "400": {
            "description": "Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "Nessuna unità organizzativa trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/UO/{id}": {
      "get": {
        "tags": [
          "UO"
        ],
        "summary": "/api/UO/{id}",
        "description": "`GET` **/api/UO/{id}**\n\n---\n\nRecupera un'unità organizzativa in base all'ID numerico passato come parametro",
        "operationId": "UO_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID univoco dell'unità organizzativa",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Unità organizzativa",
            "schema": {
              "$ref": "#/definitions/UnitaOrganizzativaRespViewModel"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Unità organizzativa non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "/api/users?userName={userName}&email={email}",
        "description": "`GET` **/api/users?userName={userName}&email={email}**\n\n---\n\nRecupera un'utente in base alla username o in base all'email. In caso fossero passati entrambi i parametri viene considerata solo la username",
        "operationId": "Users_GetByUserNameOrEmail",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "description": "Username dell'utente",
            "required": false,
            "type": "string"
          },
          {
            "name": "email",
            "in": "query",
            "description": "Email dell'utente",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Utente",
            "schema": {
              "$ref": "#/definitions/AttoreViewModel"
            }
          },
          "400": {
            "description": "Parametri [userName, email] non specificati"
          },
          "404": {
            "description": "Utente non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Users/Search": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "/api/Users/Search",
        "description": "`POST` **/api/Users/Search**\n\n---\n\nEffettua la ricerca degli utenti in base ai parametri forniti. La ricerca può essere eseguita in modo paginato.",
        "operationId": "Users_Search",
        "consumes": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml",
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "parameters",
            "in": "body",
            "description": "Parametri di ricerca: CodiceAOO, filtri, ordinamento e paginazione.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserSearchRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lista di utenti trovati",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AttoreViewModel"
              }
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Parametro [ parameters ] non specificato\n- Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "AOO non trovata"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/users/permissions/{id}/{codiceAOO}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "/api/users/permissions/{id}/{codiceAOO}",
        "description": "`GET` **/api/users/permissions/{id}/{codiceAOO}**\n\n---\n\nRecupera i permessi dell'utente in base all'ID numerico passato come parametro e al codice AOO opzionale. Se il codice AOO non viene specificato, verrà utilizzata l'AOO predefinita dell'utente o la prima AOO visibile all'utente.\r\n<br />I permessi relativi al tipo di protocollista, vengono recuperati sempre dal registro di protocollo.",
        "operationId": "Users_GetUserPermissions",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID univoco dell'utente",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Elenco di permessi dell'utente",
            "schema": {
              "$ref": "#/definitions/PermessiUtenteViewModel"
            }
          },
          "400": {
            "description": "La richiesta non è valida. Possibili cause:\n- Nessuna AOO configurata per l'utente con ID {id}\n- AOO non trovata"
          },
          "404": {
            "description": "Utente non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/users/{codiceAOO}/organigramma": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "/api/users/{codiceAOO}/organigramma",
        "description": "`GET` **/api/users/{codiceAOO}/organigramma**\n\n---\n\nRecupera l'organigramma della AOO passata come parametro",
        "operationId": "Users_GetOrganigramma",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "codiceAOO",
            "in": "path",
            "description": "Codice AOO",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Organigramma",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/UtenteOrganigrammaViewModel"
              }
            }
          },
          "400": {
            "description": "Parametro [ codiceAOO ] non specificato"
          },
          "404": {
            "description": "Nessun utente trovato trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    },
    "/api/Users/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "/api/Users/{id}",
        "description": "`GET` **/api/Users/{id}**\n\n---\n\nRecupera un'utente in base all'ID numerico passato come parametro",
        "operationId": "Users_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json",
          "application/xml",
          "text/xml"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID univoco dell'utente",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "Utente",
            "schema": {
              "$ref": "#/definitions/AttoreViewModel"
            }
          },
          "400": {
            "description": "Parametro [ id ] non specificato"
          },
          "404": {
            "description": "Utente non trovato"
          },
          "500": {
            "description": "Errore interno del server"
          }
        }
      }
    }
  },
  "definitions": {
    "AOOViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "description": "Identificativo numerico univoco",
          "type": "integer"
        },
        "Codice": {
          "description": "Codice AOO. Viene utilizzato in quasi tutti i metodi per identificare l'AOO corrente",
          "type": "string"
        },
        "Descrizione": {
          "description": "Descrizione AOO",
          "type": "string"
        }
      }
    },
    "AssegnatarioDocumentoViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "description": "ID dell'utente o dell'unità organizzativa",
          "type": "integer"
        },
        "Valore": {
          "description": "Se il campo ID è vuoto, isUO = false, allora il campo Valore deve contenere il login dell'utente",
          "type": "string"
        },
        "isUO": {
          "description": "Indica se l'assegnatario è un utente o una unità organizzativa",
          "type": "boolean"
        },
        "TipoAssociazione": {
          "description": "Tipo associazione. I valori possibili sono:\r\n* **AssegnatarioPrimario** = Assegnatario principale\r\n* **AssegnatarioPerConoscenza** = Assegnatario aggiunto per conoscenza\r\n* **AssegnatarioPerCompetenza** = Assegnatario aggiunto per competenza",
          "type": "string"
        }
      }
    },
    "AssegnatarioFascicoloViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Valore": {
          "type": "string"
        },
        "isUO": {
          "type": "boolean"
        },
        "TipoAssociazione": {
          "type": "string"
        }
      }
    },
    "AssegnatarioViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "type": "string"
        },
        "Login": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "DataAssegnamento": {
          "format": "date-time",
          "type": "string"
        },
        "TipoAssegnatario": {
          "description": "Tipo di assegnatario. I valori possibili sono:\r\n* **Utente** = Assegnatario di tipo utente\r\n* **UO** = Assegnatario di tipo unità organizzativa",
          "type": "string"
        },
        "TipoAssociazione": {
          "description": "Tipo associazione. I valori possibili sono:\r\n* **AssegnatarioPrimario** = Assegnatario principale\r\n* **AssegnatarioPerConoscenza** = Assegnatario aggiunto per conoscenza\r\n* **AssegnatarioPerCompetenza** = Assegnatario aggiunto per competenza",
          "type": "string"
        },
        "Childs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssegnatarioViewModel"
          }
        },
        "IsAdded": {
          "type": "boolean"
        },
        "Livello": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "AttoreDocumentoViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "UserName": {
          "type": "string"
        }
      }
    },
    "AttoreFascicoloViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "UserName": {
          "type": "string"
        }
      }
    },
    "AttoreSmallViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "type": "string"
        },
        "Cognome": {
          "type": "string"
        },
        "Email": {
          "type": "string"
        },
        "UserName": {
          "type": "string"
        },
        "NomeCompleto": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        }
      }
    },
    "AttoreViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "type": "string"
        },
        "Cognome": {
          "type": "string"
        },
        "Email": {
          "type": "string"
        },
        "UserName": {
          "type": "string"
        },
        "IsResponsabileProtocollo": {
          "type": "boolean"
        },
        "IsResponsabileArchiviazione": {
          "type": "boolean"
        },
        "isProtocollistaRegistro": {
          "type": "boolean"
        },
        "IsResponsabilePrivacy": {
          "type": "boolean"
        },
        "IsAmministratoreAOO": {
          "type": "boolean"
        },
        "IsAmministratoreFarm": {
          "type": "boolean"
        },
        "IsAmministratoreRubrica": {
          "type": "boolean"
        },
        "IsSupervisoreAOO": {
          "type": "boolean"
        },
        "IsForumAdministrator": {
          "description": "Indica se l'utente può gestire le discussioni all'interno dei protocolli",
          "type": "boolean"
        },
        "Descrizione": {
          "type": "string"
        },
        "IsJoshUser": {
          "type": "boolean"
        },
        "IsJoshProtocolUser": {
          "type": "boolean"
        },
        "CodiceFiscale": {
          "type": "string"
        },
        "RespOrganigrammaName": {
          "description": "Nome dell'utente responsabile nell'organigramma. Se l'utente non ha responsabile, il valore sarà null.",
          "type": "string"
        },
        "RespOrganigrammaId": {
          "format": "int32",
          "description": "ID dell'utente responsabile nell'organigramma. Se l'utente non ha responsabile, il valore sarà 0.",
          "type": "integer"
        }
      }
    },
    "ContattoViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "description": "Identificativo univoco del contatto",
          "type": "integer"
        },
        "IDIndirizzo": {
          "format": "int32",
          "description": "Identificativo univoco del recaopito di default",
          "type": "integer"
        },
        "DisplayName": {
          "type": "string"
        },
        "Nome": {
          "type": "string"
        },
        "Cognome": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "Indirizzo": {
          "type": "string"
        },
        "Cap": {
          "type": "string"
        },
        "Telefono": {
          "type": "string"
        },
        "Fax": {
          "type": "string"
        },
        "Luogo": {
          "type": "string"
        },
        "Email": {
          "type": "string"
        },
        "EmailPEC": {
          "type": "string"
        },
        "IsLegacy": {
          "type": "boolean"
        },
        "Comune": {
          "type": "string"
        },
        "Provincia": {
          "type": "string"
        },
        "Stato": {
          "type": "string"
        },
        "Cellulare": {
          "type": "string"
        },
        "CodiceFiscale": {
          "type": "string"
        },
        "PartitaIva": {
          "type": "string"
        },
        "RagioneSociale": {
          "type": "string"
        },
        "CampoExtra1": {
          "type": "string"
        },
        "CampoExtra2": {
          "type": "string"
        },
        "CampoExtra3": {
          "type": "string"
        },
        "CampoExtra4": {
          "type": "string"
        },
        "CampoExtra5": {
          "type": "string"
        },
        "DataCreazione": {
          "format": "date-time",
          "type": "string"
        },
        "DataUltimaModifica": {
          "format": "date-time",
          "type": "string"
        },
        "TipoInvio": {
          "description": "Tipo di invio predefinito del recapito di default. I valori possibili sono:\r\n* **Altro** = 0\r\n* **Email** = 1\r\n* **PEC** = 2\r\n* **WebService** = 3\r\n* **RESTApi** = 4",
          "type": "string"
        },
        "TipoContatto": {
          "description": "Tipologia del contatto. I valori possibili sono:\r\n* **Generico** = 0\r\n* **PersonaFisica** = 1\r\n* **Azienda** = 2\r\n* **PA** = 3",
          "type": "string"
        },
        "LabelTipoInvio": {
          "description": "Label descrittiva relativa alla tipologia di invio",
          "type": "string"
        },
        "CodiceAOO": {
          "type": "string"
        },
        "IsContattoPersonale": {
          "type": "boolean"
        },
        "IsReadOnly": {
          "type": "boolean"
        },
        "RecapitoForSelection": {
          "description": "Descrizione del recapito di default, utile per la selezione del contatto in un elenco a discesa",
          "type": "string"
        },
        "DescrizioneIndirizzo": {
          "type": "string"
        },
        "IsDefault": {
          "type": "boolean"
        },
        "IDAzienda": {
          "format": "int32",
          "type": "integer"
        },
        "TipoVisibilita": {
          "format": "int32",
          "description": "Indica il tipo di visibilità del contatto che corrisponde all'entità padre. I valori possibili sono:\r\n* **Contatto creato a livello di farm** = 1\r\n* **Contatto creato a livello di azienda** = 2\r\n* **Contatto creato a livello di AOO** = 3",
          "type": "integer"
        },
        "ContattoCodiceAOO": {
          "description": "In caso di contatto di tipo PA, contiene il codice AOO del contatto. In caso di contatto di tipo generico o azienda, il valore è null",
          "type": "string"
        },
        "ContattoCodiceAmministrazione": {
          "description": "In caso di contatto di tipo PA, contiene il codice dell'amministrazione del contatto. In caso di contatto di tipo generico o azienda, il valore è null",
          "type": "string"
        },
        "ContattoCodiceUniAOO": {
          "description": "In caso di contatto di tipo PA, contiene il codice AOO univoco del contatto. In caso di contatto di tipo generico o azienda, il valore è null",
          "type": "string"
        },
        "IDRubricaRiservata": {
          "format": "int32",
          "description": "Se maggiore di 0, indica che il contatto appartiene ad una rubrica riservata. In caso contrario, il contatto appartiene alla rubrica pubblica",
          "type": "integer"
        },
        "RubricaRiservata_Nome": {
          "description": "Nome dell'eventuale rubrica riservata a cui appartiene il contatto. Se il contatto appartiene alla rubrica pubblica, il valore è null",
          "type": "string"
        },
        "RubricaRiservata_Descrizione": {
          "description": "Descrizione dell'eventuale rubrica riservata a cui appartiene il contatto. Se il contatto appartiene alla rubrica pubblica, il valore è null",
          "type": "string"
        }
      }
    },
    "datas": {
      "type": "object",
      "properties": {
        "idDocumento": {
          "format": "int32",
          "type": "integer"
        },
        "codiceAOO": {
          "type": "string"
        },
        "anno": {
          "type": "string"
        },
        "isEntrata": {
          "type": "boolean"
        },
        "numeroProtocollo": {
          "type": "string"
        },
        "dataProtocollo": {
          "format": "date-time",
          "type": "string"
        },
        "oggetto": {
          "type": "string"
        },
        "mittentiDestinatari": {
          "type": "string"
        },
        "isLetto": {
          "type": "boolean"
        },
        "stato": {
          "type": "string"
        },
        "titolario": {
          "type": "string"
        }
      }
    },
    "DestMittenteViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "IDIndirizzo": {
          "format": "int32",
          "type": "integer"
        },
        "IDContatto": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "type": "string"
        },
        "Recapito": {
          "type": "string"
        },
        "TipoAssociazione": {
          "type": "string"
        },
        "TipoInvioAltro": {
          "type": "boolean"
        },
        "TipoInvioEmail": {
          "type": "boolean"
        },
        "TipoInvioPec": {
          "type": "boolean"
        },
        "Email": {
          "type": "string"
        },
        "EmailPEC": {
          "type": "string"
        },
        "Allegati": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "DescrizioneIndirizzo": {
          "type": "string"
        },
        "RifInternoNomeCognome": {
          "type": "string"
        },
        "RifInternoAmministrazione": {
          "type": "string"
        },
        "RifInternoNomeUO": {
          "type": "string"
        },
        "RifInternoIndirizzoUO": {
          "type": "string"
        },
        "EscludiSegnaturaXML": {
          "type": "boolean"
        }
      }
    },
    "DocumentoInternoAddFileByUriRequest": {
      "type": "object",
      "properties": {
        "CodiceAOO": {
          "type": "string",
          "example": "AOOT"
        },
        "NumeroProtocollo": {
          "type": "string",
          "example": 100
        },
        "Anno": {
          "format": "int32",
          "type": "integer",
          "example": 2026
        },
        "IdRegistro": {
          "format": "int32",
          "type": "integer"
        },
        "FileUri": {
          "description": "URL o percorso di rete del file da aggiungere. Nel caso in cui il file sia memorizzato su SharePoint Online occorre valorizzare anche la proprietà settingsSPSOnLine con le informazioni di autenticazione e configurazione necessarie per accedere al file.",
          "type": "string",
          "example": "https://mysite/documento.pdf"
        },
        "IsAttachment": {
          "type": "boolean"
        },
        "settingsSPSOnLine": {
          "$ref": "#/definitions/SPSOnLineSettingsViewModel",
          "description": "Impostazioni di autenticazione e configurazione per l'accesso a SharePoint Online"
        }
      }
    },
    "DocumentoInternoAddFileRequest": {
      "type": "object",
      "properties": {
        "CodiceAOO": {
          "type": "string",
          "example": "AOOT"
        },
        "NumeroProtocollo": {
          "description": "Numero di protocollo del documento interno a cui aggiungere il file",
          "type": "string",
          "example": 100
        },
        "Anno": {
          "format": "int32",
          "description": "Anno del documento interno a cui aggiungere il file",
          "type": "integer",
          "example": 2026
        },
        "IdRegistro": {
          "format": "int32",
          "description": "Id del registro documentale del documento interno",
          "type": "integer"
        },
        "FileName": {
          "description": "Nome del file da aggiungere",
          "type": "string",
          "example": "documento.pdf"
        },
        "FileContent": {
          "format": "byte",
          "description": "Contenuto del file da aggiungere, codificato in Base64",
          "type": "string",
          "example": "cHJvdmEgZGkgY29udGVudXRv....."
        },
        "IsAttachment": {
          "description": "Indica se il file da aggiungere è un allegato o il documento principale. Se true, il file sarà considerato un allegato; se false, sarà considerato il documento principale.",
          "type": "boolean"
        }
      }
    },
    "DocumentoUpdateRequest": {
      "type": "object",
      "properties": {
        "CurrentUserName": {
          "description": "Username dell'utente che sta effettuando l'aggiornamento del protocollo",
          "type": "string"
        },
        "Properties": {
          "description": "Elenco di proprietà da aggiornare. L'elenco dei nomi utilizzabili è il seguente:\r\n* **IDFascicolo** = ID numerico del fascicolo da associare al protocollo\r\n* **CodiceFascicolo** = Se IDFascicolo non viene passato, viene preso in considerazione il codice\r\n* **CodiceTitolario** = Codice voce di titolario\r\n* **IDTitolario** = Se il codice titolario non viene passato, viene preso in considerazione l'ID numerico della voce di titolario\r\n* **Oggetto** = Oggetto del protocollo\r\n* **Luogo** = Luogo di ricezione/invio\r\n* **Mezzo** = Mezzo di ricezione/invio\r\n* **Note** = Note\r\n* **DocRif_DataProtocollo** = Data del protocollo di riferimento. Formato: dd/MM/yyyy\r\n* **DocRif_NumProtocollo** = Numero del protocollo di riferimento\r\n* **IsPrivacyEnabled** = Flag che consente di specificare se il protocollo è soggetto a privacy\r\n* **DataArrivoDocumento** = Data di arrivo di un protocollo in entrata. Formato: dd/MM/yyyy\r\n* **Assegnatario_ID** = ID dell'assegnatario principale\r\n* **Assegnatario_UserName** = Se \"Assegnatario_ID\" è vuoto, viene utilizzato lo username dell'assegnatario principale\r\n* **Assegnatario_UO_ID** = Se \"Assegnatario_ID\" e \"Assegnatario_UserName\" sono vuoti, viene utilizzato l'ID dell'unità organizzativa\r\n* **AssCompetenza_ID** = ID separati da \";\", relativi agli utenti da utilizzare come assegnatari per competenza\r\n* **AssCompetenza_Username** = Se \"AssCompetenza_ID\" è vuoto, viene utilizzato questo campo che contiene un elenco di username separati da \";\"\r\n* **AssCompetenza_UO_ID** = ID separati da \";\", relativi alle UO da utilizzare come assegnatari per competenza\r\n* **AssConoscenza_ID** = ID separati da \";\", relativi agli utenti da utilizzare come assegnatari per conoscenza\r\n* **AssConoscenza_Username** = Se \"AssConoscenza_ID\" è vuoto, viene utilizzato questo campo che contiene un elenco di username separati da \";\"\r\n* **AssConoscenza_UO_ID** = ID separati da \";\", relativi alle UO da utilizzare come assegnatari per conoscenza \r\n* **Mittente_IDRecapito** = Elenco di ID, separati da \";\", relativi ai recapiti da utilizzare come mittenti di un protocollo\r\n* **Mittente_TipoInvio** = Elenco di tipologie di invio, separate da \";\", relativo ai mittenti di un protocollo\r\n* **MittenteAltri_DisplayName** = Elenco di displayname, separati da \";\", relativi ai mittenti fuori rubrica di un protocollo\r\n* **MittenteAltri_Recapito** = Elenco di recapiti, separati da \";\", relativi ai mittenti fuori rubrica di un protocollo\r\n* **MittenteAltri_TipoInvio** = Elenco di tipologie di invio, separati da \";\", relative ai mittenti fuori rubrica di un protocollo \r\n* **Destinatari_IDRecapito** = Elenco di ID, separati da \";\", relativi ai recapiti da utilizzare come destinatari principali di un protocollo\r\n* **Destinatari_TipoInvio** = Elenco di tipologie di invio, separate da \";\", relativo ai destinatari principali di un protocollo\r\n* **DestinatariAltri_DisplayName** = Elenco di displayname, separati da \";\", relativi ai destinatari principali fuori rubrica di un protocollo\r\n* **DestinatariAltri_Recapito** = Elenco di recapiti, separati da \";\", relativi ai destinatari principali fuori rubrica di un protocollo\r\n* **DestinatariAltri_TipoInvio** = Elenco di tipologie di invio, separati da \";\", relative ai destinatari principali fuori rubrica di un protocollo \r\n* **DestinatariCompetenza_IDRecapito** = Elenco di ID, separati da \";\", relativi ai recapiti da utilizzare come destinatari per competenza di un protocollo\r\n* **DestinatariCompetenza_TipoInvio** = Elenco di tipologie di invio, separate da \";\", relativo ai destinatari per competenza di un protocollo\r\n* **DestinatariCompetenzaAltri_DisplayName** = Elenco di displayname, separati da \";\", relativi ai destinatari per competenza fuori rubrica di un protocollo\r\n* **DestinatariCompetenzaAltri_Recapito** = Elenco di recapiti, separati da \";\", relativi ai destinatari per competenza fuori rubrica di un protocollo\r\n* **DestinatariCompetenzaAltri_TipoInvio** = Elenco di tipologie di invio, separati da \";\", relative ai destinatari per competenza fuori rubrica di un protocollo \r\n* **DestinatariConoscenza_IDRecapito** = Elenco di ID, separati da \";\", relativi ai recapiti da utilizzare come destinatari per conoscenza di un protocollo\r\n* **DestinatariConoscenza_TipoInvio** = Elenco di tipologie di invio, separate da \";\", relativo ai destinatari per conoscenza di un protocollo\r\n* **DestinatariConoscenzaAltri_DisplayName** = Elenco di displayname, separati da \";\", relativi ai destinatari per conoscenza fuori rubrica di un protocollo\r\n* **DestinatariConoscenzaAltri_Recapito** = Elenco di recapiti, separati da \";\", relativi ai destinatari per conoscenza fuori rubrica di un protocollo\r\n* **DestinatariConoscenzaAltri_TipoInvio** = Elenco di tipologie di invio, separati da \";\", relative ai destinatari per conoscenza fuori rubrica di un protocollo\r\n* **DestInterniPrincipali_ID** = ID separati da \";\", relativi agli utenti da utilizzare come destinatari interni principali\r\n* **DestInterniPrincipali_Username** = Se \"DestInterniPrincipali_ID\" è vuoto, viene utilizzato questo campo che contiene un elenco di username separati da \";\"\r\n* **DestInterniPrincipali_UO_ID** = ID separati da \";\", relativi alle UO da utilizzare come destinatari interni principali\r\n* **DestInterniConoscenza_ID** = ID separati da \";\", relativi agli utenti da utilizzare come destinatari interni per conoscenza\r\n* **DestInterniConoscenza_Username** = Se \"DestInterniConoscenza_ID\" è vuoto, viene utilizzato questo campo che contiene un elenco di username separati da \";\"\r\n* **DestInterniConoscenza_UO_ID** = ID separati da \";\", relativi alle UO da utilizzare come destinatari interni per conoscenza \r\n* **Proprietà aggiuntive** = Ogni proprietà va passata usando il prefisso configurato, che di default è \"jpProperty_\" più il nome della propiretà. Quindi ad esempio \"jpProperty_NumeroPratica\". Il campo \"Value\" conterrà il valore da aggiornare",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GenericItemViewModel"
          }
        }
      },
      "example": {
        "CurrentUserName": "username",
        "Properties": [
          {
            "Name": "AssCompetenza_Username",
            "Value": "username_assegnatario"
          },
          {
            "Name": "Oggetto",
            "Value": "Nuovo oggetto"
          }
        ]
      }
    },
    "DocumentoViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Anno": {
          "format": "int32",
          "type": "integer"
        },
        "NumeroProtocollo": {
          "type": "string"
        },
        "DataProtocollo": {
          "format": "date-time",
          "type": "string"
        },
        "TitolarioDescrizione": {
          "type": "string"
        },
        "TitolarioCodice": {
          "type": "string"
        },
        "TitolarioID": {
          "format": "int32",
          "type": "integer"
        },
        "IDUfficioDiProtocollazione": {
          "format": "int32",
          "type": "integer"
        },
        "NomeUfficioDiProtocollazione": {
          "type": "string"
        },
        "FlagEntrata": {
          "type": "boolean"
        },
        "IsPrivacyEnabled": {
          "type": "boolean"
        },
        "IsArchiviato": {
          "type": "boolean"
        },
        "Oggetto": {
          "type": "string"
        },
        "Mezzo": {
          "type": "string"
        },
        "Luogo": {
          "type": "string"
        },
        "Fascicoli": {
          "description": "Elenco di fascicoli. Nel campo ID sarà memorizzato l'ID del fascicolo, mentre nel campo Descrizione sarà memorizzato il codice del fascicolo",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GenericListItemViewModel"
          }
        },
        "CodiceAOO": {
          "type": "string"
        },
        "IDRegistro": {
          "format": "int32",
          "type": "integer"
        },
        "DescrizioneAOO": {
          "type": "string"
        },
        "DocRif_Numero": {
          "type": "string"
        },
        "DocRif_Data": {
          "format": "date-time",
          "type": "string"
        },
        "DocRif_CodiceAmministrazione": {
          "type": "string"
        },
        "DocRif_CodiceAOO": {
          "type": "string"
        },
        "MotivoAnnullamento": {
          "type": "string"
        },
        "ProvvedimentoAnnullamento": {
          "type": "string"
        },
        "StatoDTO": {
          "$ref": "#/definitions/GenericListItemViewModel"
        },
        "ProtocollatoDaDTO": {
          "$ref": "#/definitions/GenericListItemViewModel",
          "description": "Protocollista. Nel campo ID sarà memorizzato l'ID dell'utente, mentre nel campo Descrizione sarà memorizzato il nome completo (Cognome + Nome)"
        },
        "Assegnatari": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssegnatarioViewModel"
          }
        },
        "DestinatariInterni": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssegnatarioViewModel"
          }
        },
        "MittenteInterno": {
          "$ref": "#/definitions/AssegnatarioViewModel"
        },
        "MittentiDestinatari": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DestMittenteViewModel"
          }
        },
        "Note": {
          "type": "string"
        },
        "DataArrivo": {
          "format": "date-time",
          "type": "string"
        },
        "NumAllegati": {
          "format": "int32",
          "type": "integer"
        },
        "AssPrincipale_ResponsabileUO": {
          "$ref": "#/definitions/GenericListItemViewModel",
          "description": "Nel caso in cui l'assegnatario principale sia una UO, questo campo conterrà i dati del responsabile"
        },
        "NumeroProtocolloEmergenza": {
          "type": "string"
        },
        "DataProtocolloEmergenza": {
          "format": "date-time",
          "type": "string"
        },
        "IdentificativoProcedimento": {
          "type": "string"
        },
        "OggettoProcedimento": {
          "type": "string"
        },
        "OrigineProtocollazione": {
          "type": "string"
        },
        "IsProtocolloInterno": {
          "type": "boolean"
        }
      }
    },
    "FascicoloDocumentoViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "description": "Identificativo del fascicolo",
          "type": "integer"
        },
        "Codice": {
          "description": "Se viene valorizzato il codice del fascicolo, verrà utilizzato anche il codice AOO e il codice titolario per individuare il giusto fascicolo",
          "type": "string"
        },
        "NumeroFascicolo": {
          "type": "string"
        }
      }
    },
    "FascicoloRequest": {
      "type": "object",
      "properties": {
        "CodiceAOO": {
          "type": "string",
          "example": "AOOT"
        },
        "Codice": {
          "description": "Codice del fascicolo. Deve essere univoco all'interno della AOO e all'interno del titolario",
          "type": "string",
          "example": "FASC_TEST1"
        },
        "Descrizione": {
          "type": "string"
        },
        "Titolario": {
          "$ref": "#/definitions/TitolarioDocumentoViewModel",
          "description": "Titolario del fascicolo. Deve essere valorizzato almeno il campo \"ID\" o il campo \"Codice\""
        },
        "FlagPubblico": {
          "type": "boolean"
        },
        "Note": {
          "type": "string"
        },
        "Tipologia": {
          "format": "int32",
          "description": "Tipologia del fascicolo. I valori possibili sono:\r\n* **Affare** = 1\r\n* **Attività** = 2\r\n* **PersonaFisica** = 3\r\n* **PersonaGiuridica** = 4\r\n* **ProcedimentoAmministrativo** = 5",
          "type": "integer",
          "example": 1
        },
        "Assegnatari": {
          "description": "Elenco di assegnatari. Sono obbligatori solo se FlagPubblico = false",
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssegnatarioFascicoloViewModel"
          },
          "example": ""
        },
        "Cartelle": {
          "description": "Elenco delle sotto cartelle del fascicolo. Le cartelle vanno specificate attraverso il loro nome",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Autore": {
          "$ref": "#/definitions/AttoreFascicoloViewModel",
          "description": "Autore del fascicolo. Deve essere valorizzato il campo \"ID\" o il campo \"UserName\""
        },
        "ResponsabileProcedimento": {
          "$ref": "#/definitions/AttoreFascicoloViewModel",
          "description": "Responsabile del procedimento. Campo opzionale. Per essere specificato valorizzare il campo \"ID\" o il campo \"UserName\""
        },
        "IdUOResponsabileProcedimento": {
          "format": "int32",
          "type": "integer"
        },
        "PropAggiuntive": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GenericItemViewModel"
          },
          "example": [
            {
              "Name": "Stringa",
              "Value": "Testo"
            },
            {
              "Name": "Data",
              "Value": "10/10/2025"
            }
          ]
        },
        "ProcedimentoArgomento": {
          "type": "string"
        },
        "Procedimento": {
          "type": "string"
        },
        "ProcedimentoCatalogo": {
          "type": "string"
        },
        "ProcedimentoFasi": {
          "type": "string"
        },
        "SoggettoTipo": {
          "type": "string"
        },
        "SoggettoCodiceFiscale": {
          "type": "string"
        },
        "SoggettoNome": {
          "type": "string"
        },
        "SoggettoCognome": {
          "type": "string"
        },
        "SoggettoDenominazione": {
          "type": "string"
        },
        "AmministrazioniPartecipanti": {
          "type": "string"
        },
        "PosizioneFisicaAggDocumentale": {
          "type": "string"
        }
      }
    },
    "FascicoloResponse": {
      "type": "object",
      "properties": {
        "ErrorCode": {
          "format": "int32",
          "description": "Minore di 0 in caso di errori",
          "type": "integer"
        },
        "ErrorDescription": {
          "description": "Descrizione dell'errore, vuoto in caso di successo",
          "type": "string"
        },
        "IDFascicolo": {
          "format": "int32",
          "description": "ID generato o ID del fascicolo esistente",
          "type": "integer"
        }
      }
    },
    "FascicoloSearchFilter": {
      "type": "object",
      "properties": {
        "FieldName": {
          "description": "Nome del campo su cui verrà eseguito il filtro. I nomi sono case sensitive. I valori possibili sono:\r\n* **CodiceFascicolo** = Codice fascicolo\r\n* **NumeroFascicolo** = Numero fascicolo\r\n* **Descrizione** = Descrizione del fascicolo\r\n* **DataCreazione** = Data di creazione del fascicolo nel formato ISO 8601 (es. 2023-01-01T00:00:00)\r\n* **FlagPubblico** = Flag che indica se il fascicolo è pubblico o privato (true/false)\r\n* **Note** = Note del fascicolo\r\n* **CreatoDa.ID** = Identificativo dell'utente che ha creato il fascicolo\r\n* **CreatoDa.UserName** = Identificativo dell'utente che ha creato il fascicolo",
          "type": "string"
        },
        "Type": {
          "description": "Tipo del campo su cui filtrare. I valori possibili sono:\r\n* **fString** = Stringa\r\n* **fNumeric** = Numerico\r\n* **fDate** = Data nel formato dd/MM/yyyy\r\n* **fBoolean** = Booleano. Valori ammessi: true, false",
          "type": "string"
        },
        "Operatore": {
          "description": "Operatore del filtro. I valori possibili sono:\r\n* **IsEqual** = Uguale a \r\n* **Contains** = Contiene\r\n* **GreaterEqual** = Maggiore o uguale\r\n* **GreaterThan** = Maggiore di\r\n* **LessEqual** = Minore o uguale\r\n* **LessThan** = Minore di\r\n* **IsNotEqual** = Diverso da\r\n* **StartsWith** = Inizia con\r\n* **EndsWith** = Finisce con\r\n* **NotContains** = Non contiene\r\n* **NotEndsWith** = Non finisce con\r\n* **NotStartsWith** = Non inizia con\r\n* **IsNull** = È nullo\r\n* **IsNotNull** = Non è nullo\r\n* **IsNullOrEmpty** = È nullo o vuoto\r\n* **IsNotNullOrEmpty** = Non è nullo o vuoto",
          "type": "string"
        },
        "Values": {
          "description": "In caso di valori multipli, verranno messi in OR indipendentemente dall'operatore logico impostato nella richiesta principale",
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "FascicoloSearchRequest": {
      "type": "object",
      "properties": {
        "CodiceTitolario": {
          "description": "Codice del titolario. Può essere vuoto",
          "type": "string",
          "example": ""
        },
        "Filters": {
          "description": "Filtri di ricerca",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FascicoloSearchFilter"
          },
          "example": [
            {
              "fieldName": "CodiceFascicolo",
              "type": "fString",
              "operatore": "Contains",
              "values": [
                "Test"
              ]
            }
          ]
        },
        "CodiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        },
        "StartIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer",
          "example": 0
        },
        "Size": {
          "format": "int32",
          "description": "Dimensione della pagina",
          "type": "integer",
          "example": 20
        },
        "OrderBy": {
          "description": "Campo di ordinamento. E' uno dei valori previsti per il campo \"FieldName\" descritti nei filtri. Può essere vuoto",
          "type": "string"
        },
        "OrderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "OperatoreLogico": {
          "description": "Operatore logico per i filtri di ricerca. I valori ammessi sono: AndOp e OrOp",
          "type": "string",
          "example": "AndOp"
        }
      }
    },
    "FascicoloViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Codice": {
          "type": "string"
        },
        "NumeroFascicolo": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "DataCreazione": {
          "format": "date-time",
          "type": "string"
        },
        "DataChiusura": {
          "format": "date-time",
          "type": "string"
        },
        "StatoDTO": {
          "$ref": "#/definitions/GenericListItemViewModel"
        },
        "TitolarioID": {
          "format": "int32",
          "type": "integer"
        },
        "TitolarioCodice": {
          "type": "string"
        },
        "TitolarioDescrizione": {
          "type": "string"
        },
        "CreatoDaDTO": {
          "$ref": "#/definitions/GenericListItemViewModel",
          "description": "Utente che ha creato il fascicolo. Nel campo ID sarà memorizzato l'ID dell'utente, mentre nel campo Descrizione sarà memorizzato il nome completo (Cognome + Nome)"
        },
        "CodiceAOO": {
          "type": "string"
        },
        "FlagPubblico": {
          "type": "boolean"
        },
        "Cartelle": {
          "description": "Elenco delle sotto cartelle del fascicolo. Nella proprietà \"ID\" viene indicato l'identificativo della cartella, mentre nella proprietà \"Descrizione\" viene indicato il nome della cartella.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GenericListItemViewModel"
          }
        },
        "TipologiaFascicolo": {
          "format": "int32",
          "description": "Tipologia del fascicolo. I valori possibili sono:\r\n* **Affare** = 1\r\n* **Attività** = 2\r\n* **PersonaFisica** = 3\r\n* **PersonaGiuridica** = 4\r\n* **ProcedimentoAmministrativo** = 5",
          "type": "integer"
        },
        "IsReadOnly": {
          "type": "boolean"
        }
      }
    },
    "FileDocumentoViewModel": {
      "type": "object",
      "properties": {
        "FileName": {
          "type": "string"
        },
        "FileContent": {
          "format": "byte",
          "type": "string"
        }
      }
    },
    "FileProtocolloResponse": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Tipo": {
          "description": "Tipo di file. I valori possibil sono:\r\n            <ul><li>Principale</li><li>Allegato</li><li>ConversioneViewer</li><li>RicevutaPEC</li><li>RicevutaXML</li><li>XMLUscita</li><li>Annesso</li><li>XMLIngresso</li></ul>",
          "type": "string"
        },
        "FileName": {
          "type": "string"
        },
        "DataCreazione": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "Filters": {
      "description": "E' possibile specificare uno o più filtri di ricerca che saranno messi in And",
      "type": "object",
      "properties": {
        "oggetto": {
          "type": "string"
        },
        "numeroProtocollo": {
          "type": "string"
        },
        "dataProtocolloInizio": {
          "format": "date-time",
          "description": "Formato data: yyyy-MM-dd. E' possibile specificare un range di date indicando sia dataProtocolloInizio che dataProtocolloFine",
          "type": "string"
        },
        "dataProtocolloFine": {
          "format": "date-time",
          "description": "Formato data: yyyy-MM-dd. E' possibile specificare un range di date indicando sia dataProtocolloInizio che dataProtocolloFine",
          "type": "string"
        },
        "isEntrata": {
          "type": "boolean"
        },
        "mittentiDestinatari": {
          "type": "string"
        },
        "assegnatario": {
          "description": "Nome, cognome o email dell'assegnatario di tipo utente del protocollo",
          "type": "string"
        },
        "protocollista": {
          "description": "Nome, cognome o email del protocollista",
          "type": "string"
        },
        "isLetto": {
          "type": "boolean"
        },
        "freeText": {
          "description": "Testo relativo alla ricerca libera. Il testo verrà cercato nei campi oggetto, mittenti/destinatari, note e titolario",
          "type": "string"
        },
        "titolario": {
          "description": "Codice del titolario (es. 01.01)",
          "type": "string"
        },
        "fascicolo": {
          "type": "string"
        },
        "idUfficioProtocollazione": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "GenericItemViewModel": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string"
        },
        "Value": {
          "type": "string"
        }
      }
    },
    "GenericListItemViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        }
      }
    },
    "GenericOperationResponse": {
      "type": "object",
      "properties": {
        "Result": {
          "description": "Risultato eventuale dell'operazione",
          "type": "string"
        },
        "ErrorCode": {
          "format": "int32",
          "description": "In caso di errore, il valore conterrà il codice di errore. Il valore è sempre minore di 0",
          "type": "integer"
        },
        "ErrorMessage": {
          "description": "// In caso di errore, contiene il messaggio con la descrizione dell'errore",
          "type": "string"
        }
      }
    },
    "InvioProtocolloViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Mittente": {
          "type": "string"
        },
        "ToAddress": {
          "type": "string"
        },
        "Subject": {
          "type": "string"
        },
        "DataInvio": {
          "format": "date-time",
          "type": "string"
        },
        "DataRicevutaAccettazione": {
          "format": "date-time",
          "type": "string"
        },
        "DataRicevutaConsegna": {
          "format": "date-time",
          "type": "string"
        },
        "DataRicevutaMancataAccettazione": {
          "format": "date-time",
          "type": "string"
        },
        "DataRicevutaMancataConsegna": {
          "format": "date-time",
          "type": "string"
        },
        "ModalitaInvio": {
          "format": "int32",
          "description": "Indica la modalità con cui è stato effettutato l'invio. I valori possibili sono:\r\n* **0** = Invio tramite altro mezzo di trasmissione\r\n* **1** = Invio tramite email\r\n* **2** = Invio tramite PEC",
          "type": "integer"
        },
        "Stato": {
          "description": "Stato dell'invio. I valori possibili sono:\r\n* **AccettazionePec** = Ricevuta PEC di accettazione elaborata correttamente\r\n* **ConsegnaPec** = Ricevuta PEC di consegna elaborata correttamente\r\n* **DecorrenzaConsegna** = Scadenza del termine di consegna della PEC superata senza ricezione di ricevuta di consegna\r\n* **ErroreInvio** = Errore invio\r\n* **InFaseDiInvio** = In fase di invio\r\n* **Inviato** = Inviato corretamente\r\n* **MancataConsegnaPec** = Mancata ricezione della ricevuta di consegna della PEC\r\n* **NonAccettazionePec** = Messaggio PEC non accettato dal destinatario",
          "type": "string"
        }
      }
    },
    "JoshProcessWiewModel": {
      "type": "object",
      "properties": {
        "joshProcessId": {
          "format": "int32",
          "type": "integer"
        },
        "joshProcessStart": {
          "type": "string"
        }
      }
    },
    "MittenteDestinatarioDocumentoViewModel": {
      "type": "object",
      "properties": {
        "IDRecapito": {
          "format": "int32",
          "description": "ID del recapito del destinatario. Se il destinatario è fuori rubrica, il valore sarà 0",
          "type": "integer"
        },
        "TipoAssociazione": {
          "description": "Tipo di associazione del destinatario. I valori possibili sono:\r\n* **Primario** = destinatario principale\r\n* **PerConoscenza** = destinatario per conoscenza\r\n* **PerCompetenza** = destinatario per competenza",
          "type": "string"
        },
        "TipoInvio": {
          "description": "Tipo di invio predefinito del destinatario. I valori possibili sono:\r\n* **Altro** = 0\r\n* **Email** = 1\r\n* **PEC** = 2\r\n* **WebService** = 3\r\n* **RESTApi** = 4",
          "type": "string"
        },
        "DisplayName": {
          "type": "string"
        },
        "IsTemp": {
          "description": "Se a true verrà creato un destinatario fuori rubrica",
          "type": "boolean"
        }
      }
    },
    "PermessiUtenteViewModel": {
      "type": "object",
      "properties": {
        "IsResponsabileArchiviazione": {
          "type": "boolean"
        },
        "IsAmministratoreAOO": {
          "type": "boolean"
        },
        "IsSupervisoreAOO": {
          "type": "boolean"
        },
        "IsAmministratoreRubrica": {
          "type": "boolean"
        },
        "IsProtocollista": {
          "type": "boolean"
        },
        "IsProtocollistaLimitato": {
          "type": "boolean"
        },
        "IsProtocollistaUfficio": {
          "type": "boolean"
        },
        "IsResponsabileProtocollo": {
          "type": "boolean"
        },
        "IsAmministratoreFarm": {
          "type": "boolean"
        },
        "IsResponsabilePrivacy": {
          "type": "boolean"
        },
        "CanMakeProtocolliEntrata": {
          "type": "boolean"
        },
        "CanMakeProtocolliUscita": {
          "type": "boolean"
        },
        "IsValidUser": {
          "type": "boolean"
        }
      }
    },
    "ProtocollazioneRequest": {
      "description": "Richiesta con i dati del protocollo",
      "type": "object",
      "properties": {
        "CodiceAOO": {
          "type": "string"
        },
        "Titolario": {
          "$ref": "#/definitions/TitolarioDocumentoViewModel",
          "description": "Titolario del fascicolo. Deve essere valorizzato almeno il campo \"ID\" o il campo \"Codice\""
        },
        "FilePrincipale": {
          "$ref": "#/definitions/FileDocumentoViewModel"
        },
        "Allegati": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FileDocumentoViewModel"
          }
        },
        "Protocollatore": {
          "$ref": "#/definitions/AttoreDocumentoViewModel",
          "description": "Protocollista. Deve essere valorizzato il campo \"ID\" o il campo \"UserName\""
        },
        "Oggetto": {
          "type": "string"
        },
        "Assegnatari": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssegnatarioDocumentoViewModel"
          }
        },
        "FlagEntrata": {
          "type": "boolean"
        },
        "MittentiDestinatari": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MittenteDestinatarioDocumentoViewModel"
          }
        },
        "MittentiDestinatariInterni": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AssegnatarioDocumentoViewModel"
          }
        },
        "Mezzo": {
          "type": "string"
        },
        "Luogo": {
          "type": "string"
        },
        "DocRif_NumProtocollo": {
          "type": "string"
        },
        "DocRif_DataProtocollo": {
          "type": "string"
        },
        "Fascicoli": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FascicoloDocumentoViewModel"
          }
        },
        "DataArrivoDocumento": {
          "type": "string"
        },
        "IsPrivacyEnabled": {
          "type": "boolean"
        },
        "joshProcess": {
          "$ref": "#/definitions/JoshProcessWiewModel"
        },
        "Note": {
          "type": "string"
        },
        "PropAggiuntive": {
          "description": "Array di proprietà aggiuntive da valorizzare sul protocollo. Ogni elemento dell'array deve contenere il campo \"Name\" e il campo \"Value\". Il campo \"Name\" deve contenere il nome della proprietà aggiuntiva da valorizzare, mentre il campo \"Value\" deve contenere il valore da assegnare alla proprietà aggiuntiva.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/GenericItemViewModel"
          }
        },
        "IdUfficioProtocollazione": {
          "format": "int32",
          "type": "integer"
        },
        "EmailUscitaPEI": {
          "type": "string"
        },
        "EmailUscitaPEC": {
          "type": "string"
        },
        "IdTipologiaDocumentale": {
          "format": "int32",
          "type": "integer"
        },
        "InviaNotifiche": {
          "type": "boolean"
        },
        "ProtocolliCollegati": {
          "description": "Array di protocolli collegati. Ogni elemento dell'array deve contenere l'ID del protocollo collegato. I protocolli collegati devono appartenere alla stessa AOO del protocollo che si sta protocollando.",
          "type": "array",
          "items": {
            "format": "int32",
            "type": "integer"
          }
        },
        "IsAsync": {
          "description": "Consente di specificare se la protocollazione deve essere eseguita in modalità asincrona. Se impostato a true, i metadati del protocollo saranno comunque registrati in modo sincrono, ma tutte le elaborazioni sui file saranno eseguite in background",
          "type": "boolean"
        }
      },
      "example": {
        "CodiceAOO": "AOOT",
        "Titolario": {
          "Codice": "15"
        },
        "FilePrincipale": {
          "FileName": "test.txt",
          "FileContent": "cHJvdmEgZGkgY29udGVudXRv"
        },
        "Oggetto": "Protocollo da rest API",
        "Protocollatore": {
          "ID": 9126
        },
        "Assegnatari": [
          {
            "ID": 126,
            "TipoAssociazione": "assegnatarioprimario",
            "IsUO": false
          }
        ],
        "FlagEntrata": true,
        "MittentiDestinatari": [
          {
            "IDRecapito": 0,
            "DisplayName": "Contatto di prova",
            "IsTemp": true,
            "TipoInvio": "0",
            "TipoAssociazione": "Primario"
          }
        ]
      }
    },
    "ProtocollazioneResponse": {
      "type": "object",
      "properties": {
        "ErrorCode": {
          "format": "int32",
          "description": "Minore di 0 in caso di errori",
          "type": "integer"
        },
        "NumeroProtocollo": {
          "description": "Numero di protocollo generato",
          "type": "string"
        },
        "Anno": {
          "format": "int32",
          "description": "Anno del protocollo",
          "type": "integer"
        },
        "Data": {
          "format": "date-time",
          "description": "Data del protocollo",
          "type": "string"
        },
        "IDDocumento": {
          "format": "int32",
          "description": "ID del documento protocollato",
          "type": "integer"
        }
      }
    },
    "ProtocolliSearchFilter": {
      "type": "object",
      "properties": {
        "FieldName": {
          "description": "Nome del campo su cui verrà eseguito il filtro. I nomi sono case sensitive. I valori possibili sono:\r\n* **ID** = Identificativo univoco del protocollo\r\n* **NumeroProtocollo** = Numero di protocollo (stringa)\r\n* **DataProtocollo** = Data di protocollo nel formato ISO 8601 (es. 2023-01-01T00:00:00)\r\n* **Oggetto** = Oggetto del protocollo\r\n* **Rubrica_MittentiDestinatari** = Mittente o destinatari principali\r\n* **Rubrica_Competenza** = Destinatari per competenza\r\n* **Rubrica_Conoscenza** = Destinatari per conoscenza\r\n* **FlagProvenienza** = 'true' per entrata e 'false' per uscita\r\n* **Anno** = anno del protocollo (es. 2023)\r\n* **CodiceTitolario** = codice titolario\r\n* **TitolarioDescrizione** = descrizione del titolario\r\n* **ProtocollatoreDescrizione** = nome o cognome del protocollatore\r\n* **AssPrincipaleDescrizione** = nome o cognome dell'assegnatario principale nel caso sia un utente, o nome della UO nel caso sia stata utilizzata una unità organizzativa\r\n* **DocRif_NumProtocollo** = Numero del documento di riferimento (stringa)\r\n* **DocRif_DataProtocollo** = Data di protocollo di riferimento nel formato ISO 8601 (es. 2023-01-01T00:00:00)",
          "type": "string"
        },
        "Type": {
          "description": "Tipo del campo su cui filtrare. I valori possibili sono:\r\n* **fString** = Stringa\r\n* **fNumeric** = Numerico\r\n* **fDate** = Data nel formato dd/MM/yyyy\r\n* **fBoolean** = Booleano. Valori ammessi: true, false",
          "type": "string"
        },
        "Operatore": {
          "description": "Operatore del filtro. I valori possibili sono:\r\n* **IsEqual** = Uguale a \r\n* **Contains** = Contiene\r\n* **GreaterEqual** = Maggiore o uguale\r\n* **GreaterThan** = Maggiore di\r\n* **LessEqual** = Minore o uguale\r\n* **LessThan** = Minore di\r\n* **IsNotEqual** = Diverso da\r\n* **StartsWith** = Inizia con\r\n* **EndsWith** = Finisce con\r\n* **NotContains** = Non contiene\r\n* **NotEndsWith** = Non finisce con\r\n* **NotStartsWith** = Non inizia con\r\n* **IsNull** = È nullo\r\n* **IsNotNull** = Non è nullo\r\n* **IsNullOrEmpty** = È nullo o vuoto\r\n* **IsNotNullOrEmpty** = Non è nullo o vuoto",
          "type": "string"
        },
        "Values": {
          "description": "In caso di valori multipli, verranno messi in OR indipendentemente dall'operatore logico impostato nella richiesta principale",
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "ProtocolliSearchRequest": {
      "type": "object",
      "properties": {
        "Filters": {
          "description": "Filtri di ricerca",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProtocolliSearchFilter"
          },
          "example": [
            {
              "fieldName": "Oggetto",
              "type": "fString",
              "operatore": "Contains",
              "values": [
                "verbale"
              ]
            }
          ]
        },
        "CodiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        },
        "StartIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer",
          "example": 0
        },
        "Size": {
          "format": "int32",
          "description": "Dimensione della pagina",
          "type": "integer",
          "example": 20
        },
        "OrderBy": {
          "description": "Campo di ordinamento. E' uno dei valori previsti per il campo \"FieldName\" descritti nei filtri. Può essere vuoto",
          "type": "string"
        },
        "OrderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "OperatoreLogico": {
          "description": "Operatore logico per i filtri di ricerca. I valori ammessi sono: AndOp e OrOp",
          "type": "string",
          "example": "AndOp"
        }
      }
    },
    "ProtocolloViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "description": "ID generato",
          "type": "integer"
        },
        "NumeroProtocollo": {
          "description": "Numero di protocollo",
          "type": "string"
        },
        "Anno": {
          "format": "int32",
          "description": "Anno del protocollo",
          "type": "integer"
        },
        "DataProtocollazione": {
          "format": "date-time",
          "description": "Data del protocollo",
          "type": "string"
        },
        "IsEntrata": {
          "description": "Indica se il protocollo è entrata o uscita",
          "type": "boolean"
        },
        "Oggetto": {
          "type": "string"
        },
        "CodiceTitolario": {
          "type": "string"
        },
        "DescrizioneTitolario": {
          "type": "string"
        },
        "Stato": {
          "type": "string"
        },
        "MittentiDestinatariPrincipali": {
          "type": "string"
        },
        "Protocollista": {
          "$ref": "#/definitions/GenericListItemViewModel",
          "description": "Protocollista. Nel campo ID sarà memorizzato l'ID dell'utente, mentre nel campo Descrizione sarà memorizzato il nome completo (Cognome + Nome)"
        }
      }
    },
    "RubricaSearchFilter": {
      "type": "object",
      "properties": {
        "FieldName": {
          "description": "Nome del campo su cui verrà eseguito il filtro. I nomi sono case sensitive. I valori possibili sono:\r\n* **ID** = Identificativo univoco del contatto\r\n* **DisplayName** = Nome visualizzato del contatto\r\n* **Nome** = Nome del contatto (in caso di persona fisica)\r\n* **Cognome** = Cognome del contatto (in caso di persona fisica)\r\n* **Descrizione** = Descrizione del contatto\r\n* **CodiceFiscale** = Codice fiscale del contatto\r\n* **PartitaIva** = Partita IVA del contatto\r\n* **TipoContatto** = Tipo di contatto. I valori possibili sono indicati nell'oggetto ContattoViewModel\r\n* **RagioneSociale** = Ragione sociale del contatto (in caso di azienda)\r\n* **TipoVisibilita** = Tipo di visibilità. I valori possibili sono indicati nell'oggetto ContattoViewModel\r\n* **DataCreazione** = Data di creazione\r\n* **IDIndirizzo** = Identificativo univoco del recapito di default\r\n* **DescrizioneIndirizzo** = Descrizione del recapito di default\r\n* **Indirizzo** = Indirizzo del recapito di default\r\n* **Cap** = Cap del recapito di default\r\n* **Telefono** = Telefono del recapito di default\r\n* **Email** = Email del recapito di default\r\n* **EmailPEC** = Email PEC del recapito di default\r\n* **Comune** = Comune del recapito di default\r\n* **Provincia** = Provincia del recapito di default\r\n* **Stato** = Stato del recapito di default\r\n* **Cellulare** = Cellulare del recapito di default\r\n* **TipoInvio** = Tipo di invio del recapito di default. I valori possibili sono indicati nell'oggetto ContattoViewModel",
          "type": "string"
        },
        "Type": {
          "description": "Tipo del campo su cui filtrare. I valori possibili sono:\r\n* **fString** = Stringa\r\n* **fNumeric** = Numerico\r\n* **fDate** = Data nel formato dd/MM/yyyy\r\n* **fBoolean** = Booleano. Valori ammessi: true, false",
          "type": "string"
        },
        "Operatore": {
          "description": "Operatore del filtro. I valori possibili sono:\r\n* **IsEqual** = Uguale a \r\n* **Contains** = Contiene\r\n* **GreaterEqual** = Maggiore o uguale\r\n* **GreaterThan** = Maggiore di\r\n* **LessEqual** = Minore o uguale\r\n* **LessThan** = Minore di\r\n* **IsNotEqual** = Diverso da\r\n* **StartsWith** = Inizia con\r\n* **EndsWith** = Finisce con\r\n* **NotContains** = Non contiene\r\n* **NotEndsWith** = Non finisce con\r\n* **NotStartsWith** = Non inizia con\r\n* **IsNull** = È nullo\r\n* **IsNotNull** = Non è nullo\r\n* **IsNullOrEmpty** = È nullo o vuoto\r\n* **IsNotNullOrEmpty** = Non è nullo o vuoto",
          "type": "string"
        },
        "Values": {
          "description": "In caso di valori multipli, verranno messi in OR indipendentemente dall'operatore logico impostato nella richiesta principale",
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "RubricaSearchRequest": {
      "type": "object",
      "properties": {
        "Filters": {
          "description": "Filtri di ricerca",
          "type": "array",
          "items": {
            "$ref": "#/definitions/RubricaSearchFilter"
          },
          "example": [
            {
              "fieldName": "DisplayName",
              "type": "fString",
              "operatore": "Contains",
              "values": [
                "Rossi"
              ]
            },
            {
              "fieldName": "TipoInvio",
              "type": "fNumeric",
              "operatore": "IsEqual",
              "values": [
                "2"
              ]
            }
          ]
        },
        "CodiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        },
        "StartIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer",
          "example": 0
        },
        "Size": {
          "format": "int32",
          "description": "Dimensione della pagina",
          "type": "integer",
          "example": 20
        },
        "OrderBy": {
          "description": "Campo di ordinamento. E' uno dei valori previsti per il campo \"FieldName\" descritti nei filtri. Può essere vuoto",
          "type": "string"
        },
        "OrderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "OperatoreLogico": {
          "description": "Operatore logico per i filtri di ricerca. I valori ammessi sono: AndOp e OrOp",
          "type": "string",
          "example": "AndOp"
        }
      }
    },
    "SearchProtocolliViewModel": {
      "type": "object",
      "properties": {
        "startIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer"
        },
        "size": {
          "format": "int32",
          "description": "Dimensione della pagina (default 50)",
          "type": "integer",
          "example": 20
        },
        "orderBy": {
          "description": "Campo di ordinamento",
          "type": "string"
        },
        "orderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "filters": {
          "$ref": "#/definitions/Filters",
          "description": "Filtri di ricerca"
        },
        "codiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        }
      }
    },
    "SearchRsponseData": {
      "type": "object",
      "properties": {
        "totalCount": {
          "format": "int32",
          "type": "integer"
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/datas"
          }
        }
      }
    },
    "SPSOnLineSettingsViewModel": {
      "type": "object",
      "properties": {
        "ApplicationClientId": {
          "description": "Client Id dell'applicazione registrata in Azure AD per l'autenticazione verso SharePoint Online",
          "type": "string"
        },
        "ApplicationClientSecret": {
          "description": "Client Secret dell'applicazione registrata in Azure AD per l'autenticazione verso SharePoint Online",
          "type": "string"
        },
        "ApplicationClientSecretCrypted": {
          "description": "Client Secret criptato dell'applicazione registrata in Azure AD per l'autenticazione verso SharePoint Online. L'algoritmo di criptazione sarà fornito a parte",
          "type": "string"
        },
        "Realm": {
          "description": "Identificativo del tenant di SharePoint Online",
          "type": "string"
        },
        "Authority": {
          "description": "URL del sito root di SharePoint Online, ad esempio https://mytenant.sharepoint.com",
          "type": "string"
        }
      }
    },
    "TitolarioDocumentoViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Codice": {
          "type": "string",
          "example": "01.01"
        }
      }
    },
    "TitolarioSearchFilter": {
      "type": "object",
      "properties": {
        "FieldName": {
          "description": "Nome del campo su cui verrà eseguito il filtro. I nomi sono case sensitive. I valori possibili sono:\r\n* **ID** = Identificativo univoco della voce di titolario\r\n* **CodiceTitolario** = Codice titolario\r\n* **Descrizione** = Descrizione della voce di titolario\r\n* **DataDecorrenza** = Data di decorrenza nel formato ISO 8601 (es. 2023-01-01T00:00:00)\r\n* **DataScadenza** = Data di scadenza nel formato ISO 8601 (es. 2023-01-01T00:00:00)\r\n* **FlagDocumento** = Indica se la voce di titolario è abilitata per la protocollazione dei documenti\r\n* **FlagFascicolo** = Indica se la voce di titolario è abilitata per la creazione dei fascicoli\r\n* **TipoVisibilita** = Tipo di visibilità. I valori possibili sono indicati nell'oggetto ContattoViewModel\r\n* **ProcessNameDocumenti** = Eventuale processo josh da avviare quando si crea un protocollo con questa voce di titolario\r\n* **ProcessNameFascicoli** = Eventuale processo josh da avviare quando si crea un fascicolo con questa voce di titolario\r\n* **DescrizioneIndirizzo** = Descrizione del recapito di default\r\n* **NumAssegnatari** = Numero di assegnatari associati alla voce di titolario\r\n* **NumDestInterni** = Numero di destinatari interni associati alla voce di titolario",
          "type": "string"
        },
        "Type": {
          "description": "Tipo del campo su cui filtrare. I valori possibili sono:\r\n* **fString** = Stringa\r\n* **fNumeric** = Numerico\r\n* **fDate** = Data nel formato dd/MM/yyyy\r\n* **fBoolean** = Booleano. Valori ammessi: true, false",
          "type": "string"
        },
        "Operatore": {
          "description": "Operatore del filtro. I valori possibili sono:\r\n* **IsEqual** = Uguale a \r\n* **Contains** = Contiene\r\n* **GreaterEqual** = Maggiore o uguale\r\n* **GreaterThan** = Maggiore di\r\n* **LessEqual** = Minore o uguale\r\n* **LessThan** = Minore di\r\n* **IsNotEqual** = Diverso da\r\n* **StartsWith** = Inizia con\r\n* **EndsWith** = Finisce con\r\n* **NotContains** = Non contiene\r\n* **NotEndsWith** = Non finisce con\r\n* **NotStartsWith** = Non inizia con\r\n* **IsNull** = È nullo\r\n* **IsNotNull** = Non è nullo\r\n* **IsNullOrEmpty** = È nullo o vuoto\r\n* **IsNotNullOrEmpty** = Non è nullo o vuoto",
          "type": "string"
        },
        "Values": {
          "description": "In caso di valori multipli, verranno messi in OR indipendentemente dall'operatore logico impostato nella richiesta principale",
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "TitolarioSearchRequest": {
      "type": "object",
      "properties": {
        "Filters": {
          "description": "Filtri di ricerca",
          "type": "array",
          "items": {
            "$ref": "#/definitions/TitolarioSearchFilter"
          },
          "example": [
            {
              "fieldName": "CodiceTitolario",
              "type": "fString",
              "operatore": "IsEqual",
              "values": [
                "01.02"
              ]
            }
          ]
        },
        "CodiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        },
        "StartIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer",
          "example": 0
        },
        "Size": {
          "format": "int32",
          "description": "Dimensione della pagina",
          "type": "integer",
          "example": 20
        },
        "OrderBy": {
          "description": "Campo di ordinamento. E' uno dei valori previsti per il campo \"FieldName\" descritti nei filtri. Può essere vuoto",
          "type": "string"
        },
        "OrderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "OperatoreLogico": {
          "description": "Operatore logico per i filtri di ricerca. I valori ammessi sono: AndOp e OrOp",
          "type": "string",
          "example": "AndOp"
        }
      }
    },
    "TitolarioViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "CodiceTitolario": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "DataDecorrenza": {
          "format": "date-time",
          "description": "Data di decorrenza del titolario. Formato data: yyyy-MM-ddTHH:mm:ss",
          "type": "string"
        },
        "DataScadenza": {
          "format": "date-time",
          "description": "Data di scadenza del titolario. Formato data: yyyy-MM-ddTHH:mm:ss",
          "type": "string"
        },
        "Parent": {
          "description": "Codice titolario del nodo padre. Se il nodo è di primo livello, il valore sarà null",
          "type": "string"
        },
        "FlagDocumento": {
          "description": "Indica se la voce di titolario è abilitata per la protocollazione dei documenti",
          "type": "boolean"
        },
        "FlagFascicolo": {
          "description": "Indica se la voce di titolario è abilitata per la creazione dei fascicoli",
          "type": "boolean"
        },
        "ProcessNameDocumenti": {
          "description": "Eventuale processo josh da avviare quando si crea un protocollo con questa voce di titolario",
          "type": "string"
        },
        "ProcessNameFascicoli": {
          "description": "Eventuale processo josh da avviare quando si crea un fascicolo con questa voce di titolario",
          "type": "string"
        },
        "CodiceAOO": {
          "type": "string"
        },
        "Azienda": {
          "type": "string"
        },
        "NumAssegnatari": {
          "format": "int32",
          "description": "Numero di assegnatari associati alla voce di titolario",
          "type": "integer"
        },
        "NumDestInterni": {
          "format": "int32",
          "description": "Numero di destinatari interni associati alla voce di titolario",
          "type": "integer"
        }
      }
    },
    "UnitaOrganizzativaRespViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "Responsabile": {
          "$ref": "#/definitions/AttoreSmallViewModel"
        }
      }
    },
    "UOSearchFilter": {
      "type": "object",
      "properties": {
        "FieldName": {
          "description": "Nome del campo su cui verrà eseguito il filtro. I nomi sono case sensitive. I valori possibili sono:\r\n* **ID** = Identificativo univoco dell'unità organizzativa\r\n* **Nome** = Nome dell'unità organizzativa\r\n* **Descrizione** = Descrizione dell'unità organizzativa\r\n* **Email** = Email dell'unità organizzativa\r\n* **ParentId** = ID unità organizzativa padre\r\n* **Responsabile.ID** = Identificativo dell'utente responsabile dell'unità organizzativa\r\n* **Responsabile.UserName** = Identificativo dell'utente responsabile dell'unità organizzativa",
          "type": "string"
        },
        "Type": {
          "description": "Tipo del campo su cui filtrare. I valori possibili sono:\r\n* **fString** = Stringa\r\n* **fNumeric** = Numerico\r\n* **fDate** = Data nel formato dd/MM/yyyy\r\n* **fBoolean** = Booleano. Valori ammessi: true, false",
          "type": "string"
        },
        "Operatore": {
          "description": "Operatore del filtro. I valori possibili sono:\r\n* **IsEqual** = Uguale a \r\n* **Contains** = Contiene\r\n* **GreaterEqual** = Maggiore o uguale\r\n* **GreaterThan** = Maggiore di\r\n* **LessEqual** = Minore o uguale\r\n* **LessThan** = Minore di\r\n* **IsNotEqual** = Diverso da\r\n* **StartsWith** = Inizia con\r\n* **EndsWith** = Finisce con\r\n* **NotContains** = Non contiene\r\n* **NotEndsWith** = Non finisce con\r\n* **NotStartsWith** = Non inizia con\r\n* **IsNull** = È nullo\r\n* **IsNotNull** = Non è nullo\r\n* **IsNullOrEmpty** = È nullo o vuoto\r\n* **IsNotNullOrEmpty** = Non è nullo o vuoto",
          "type": "string"
        },
        "Values": {
          "description": "In caso di valori multipli, verranno messi in OR indipendentemente dall'operatore logico impostato nella richiesta principale",
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "UOSearchRequest": {
      "type": "object",
      "properties": {
        "Filters": {
          "description": "Filtri di ricerca",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UOSearchFilter"
          },
          "example": [
            {
              "fieldName": "Responsabile.UserName",
              "type": "fString",
              "operatore": "Contains",
              "values": [
                "Rossi"
              ]
            }
          ]
        },
        "CodiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        },
        "StartIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer",
          "example": 0
        },
        "Size": {
          "format": "int32",
          "description": "Dimensione della pagina",
          "type": "integer",
          "example": 20
        },
        "OrderBy": {
          "description": "Campo di ordinamento. E' uno dei valori previsti per il campo \"FieldName\" descritti nei filtri. Può essere vuoto",
          "type": "string"
        },
        "OrderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "OperatoreLogico": {
          "description": "Operatore logico per i filtri di ricerca. I valori ammessi sono: AndOp e OrOp",
          "type": "string",
          "example": "AndOp"
        }
      }
    },
    "UOTreeItemViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "description": "Nome dell'utente o dell'unità organizzativa",
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "Email": {
          "description": "Email dell'utente o dell'unità organizzativa",
          "type": "string"
        },
        "Login": {
          "description": "Login dell'utente. In caso di unità organizzativa, il login sarà vuoto",
          "type": "string"
        },
        "IsUO": {
          "description": "Indica se l'elemento è un'unità organizzativa (true) o un utente (false)",
          "type": "boolean"
        },
        "IsResponsible": {
          "description": "In caso di utente, indica se l'utente è responsabile dell'unità organizzativa (true) o meno (false)",
          "type": "boolean"
        },
        "Childs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UOTreeItemViewModel"
          }
        }
      }
    },
    "UserSearchFilter": {
      "type": "object",
      "properties": {
        "FieldName": {
          "description": "Nome del campo su cui verrà eseguito il filtro. I nomi sono case sensitive. I valori possibili sono:\r\n* **ID** = Identificativo univoco dell'utente\r\n* **UserName** = Username dell'utente\r\n* **Email** = Email dell'utente\r\n* **Nome** = Nome dell'utente\r\n* **Cognome** = Cognome dell'utente\r\n* **CodiceFiscale** = Codice fiscale dell'utente\r\n* **Descrizione** = Descrizione associata all'utente\r\n* **IsDeleted** = Indica se l'utente è stato eliminato\r\n* **IsJoshUser** = Indica se l'utente è un utente josh\r\n* **IsJoshProtocolUser** = Indica se l'utente è un utente josh Protocol!\r\n* **IsScannerUser** = Indica se l'utente può usare le funzionalità di scansione",
          "type": "string"
        },
        "Type": {
          "description": "Tipo del campo su cui filtrare. I valori possibili sono:\r\n* **fString** = Stringa\r\n* **fNumeric** = Numerico\r\n* **fDate** = Data nel formato dd/MM/yyyy\r\n* **fBoolean** = Booleano. Valori ammessi: true, false",
          "type": "string"
        },
        "Operatore": {
          "description": "Operatore del filtro. I valori possibili sono:\r\n* **IsEqual** = Uguale a \r\n* **Contains** = Contiene\r\n* **GreaterEqual** = Maggiore o uguale\r\n* **GreaterThan** = Maggiore di\r\n* **LessEqual** = Minore o uguale\r\n* **LessThan** = Minore di\r\n* **IsNotEqual** = Diverso da\r\n* **StartsWith** = Inizia con\r\n* **EndsWith** = Finisce con\r\n* **NotContains** = Non contiene\r\n* **NotEndsWith** = Non finisce con\r\n* **NotStartsWith** = Non inizia con\r\n* **IsNull** = È nullo\r\n* **IsNotNull** = Non è nullo\r\n* **IsNullOrEmpty** = È nullo o vuoto\r\n* **IsNotNullOrEmpty** = Non è nullo o vuoto",
          "type": "string"
        },
        "Values": {
          "description": "In caso di valori multipli, verranno messi in OR indipendentemente dall'operatore logico impostato nella richiesta principale",
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "UserSearchRequest": {
      "type": "object",
      "properties": {
        "Filters": {
          "description": "Filtri di ricerca",
          "type": "array",
          "items": {
            "$ref": "#/definitions/UserSearchFilter"
          },
          "example": [
            {
              "fieldName": "UserName",
              "type": "fString",
              "operatore": "Contains",
              "values": [
                "Rossi"
              ]
            }
          ]
        },
        "CodiceAOO": {
          "description": "Codice della AOO di riferimento",
          "type": "string",
          "example": "AOOT"
        },
        "StartIndex": {
          "format": "int32",
          "description": "Indice iniziale per la paginazione",
          "type": "integer",
          "example": 0
        },
        "Size": {
          "format": "int32",
          "description": "Dimensione della pagina",
          "type": "integer",
          "example": 20
        },
        "OrderBy": {
          "description": "Campo di ordinamento. E' uno dei valori previsti per il campo \"FieldName\" descritti nei filtri. Può essere vuoto",
          "type": "string"
        },
        "OrderAscending": {
          "description": "Indica se l'ordinamento deve essere ascendente",
          "type": "boolean"
        },
        "OperatoreLogico": {
          "description": "Operatore logico per i filtri di ricerca. I valori ammessi sono: AndOp e OrOp",
          "type": "string",
          "example": "AndOp"
        }
      }
    },
    "UtenteOrganigrammaViewModel": {
      "type": "object",
      "properties": {
        "ID": {
          "format": "int32",
          "type": "integer"
        },
        "Nome": {
          "type": "string"
        },
        "Cognome": {
          "type": "string"
        },
        "Email": {
          "type": "string"
        },
        "UserName": {
          "type": "string"
        },
        "NomeCompleto": {
          "type": "string"
        },
        "Descrizione": {
          "type": "string"
        },
        "Childs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/UtenteOrganigrammaViewModel"
          }
        }
      }
    },
    "ValidationErrorViewModel": {
      "type": "object",
      "properties": {
        "PropertyName": {
          "type": "string"
        },
        "Message": {
          "type": "string"
        },
        "Value": {
          "type": "object"
        },
        "MessageParams": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "IsWarning": {
          "type": "boolean"
        },
        "IsConfirm": {
          "type": "boolean"
        }
      }
    }
  },
  "tags": [
    {
      "name": "AOO",
      "description": "Interfaccia che contiene i metodi per il recupero e la modifica delle AOO"
    },
    {
      "name": "DocumentiInterni",
      "description": "Interfaccia che contiene i metodi relativi ai documenti interni"
    },
    {
      "name": "Fascicolo",
      "description": "Interfaccia che contiene i metodi per il recupero e la modifica dei fascicoli"
    },
    {
      "name": "Protocolli",
      "description": "Interfaccia che contiene i metodi relativi ai protocolli"
    },
    {
      "name": "Rubrica",
      "description": "Interfaccia che contiene i metodi per il recupero e la modifica dei contatti della rubrica"
    },
    {
      "name": "Searches",
      "description": "Consente l'esecuzione di una ricerca avanzata sui protocolli"
    },
    {
      "name": "Titolario",
      "description": "Interfaccia che contiene i metodi per il recupero e la modifica delle voci di titolario"
    },
    {
      "name": "UO",
      "description": "Interfaccia che contiene i metodi per il recupero e la gestione delle unità organizzative"
    }
  ]
}