{
	"openapi": "3.0.3",
	"info": {
		"title": "MyTown — ws_spring_portal_manager",
		"version": "0.2.0",
		"description": "Amministrazione del portale: utenti, ruoli, menu e pagine, moduli e funzioni, dashboard, etichette di traduzione, notifiche e push.\n\nDocumentazione generata automaticamente dal codice sorgente da `platform/tools/openapi-gen`.\nNon modificare a mano: le modifiche vanno fatte nei controller e la specifica va rigenerata.\n\nAutenticazione: token JWT nell’header `Authorization: Bearer <token>`, ottenuto da\n`POST /ws_spring_portal_login/api/login`. Gli endpoint marcati come pubblici non richiedono il token.",
		"license": {
			"name": "AGPL-3.0-or-later",
			"url": "https://www.gnu.org/licenses/agpl-3.0.html"
		}
	},
	"servers": [
		{
			"url": "/ws_spring_portal_manager/api",
			"description": "Stesso host, servizi esposti alla radice (Tomcat diretto)"
		},
		{
			"url": "/api/ws_spring_portal_manager/api",
			"description": "Stesso host, servizi dietro reverse proxy montato su /api (vedi platform/INSTALL.md)"
		},
		{
			"url": "{host}/ws_spring_portal_manager/api",
			"description": "Host esplicito",
			"variables": {
				"host": {
					"default": "http://localhost:8080",
					"description": "Schema e host del server applicativo"
				}
			}
		}
	],
	"tags": [
		{
			"name": "Alias",
			"description": "Endpoint di AliasController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java)"
		},
		{
			"name": "Combo",
			"description": "Endpoint di ComboController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/ComboController.java)"
		},
		{
			"name": "Dashboard",
			"description": "Endpoint di DashboardController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java)"
		},
		{
			"name": "Funzioni",
			"description": "Endpoint di FunzioniController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java)"
		},
		{
			"name": "Label",
			"description": "Endpoint di LabelController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/LabelController.java)"
		},
		{
			"name": "MailSettings",
			"description": "Endpoint di MailSettingsController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MailSettingsController.java)"
		},
		{
			"name": "Menu",
			"description": "Endpoint di MenuController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java)"
		},
		{
			"name": "Notify",
			"description": "Endpoint di NotifyController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java)"
		},
		{
			"name": "Portal",
			"description": "Endpoint di PortalController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java)"
		},
		{
			"name": "PortalPages",
			"description": "Endpoint di PortalPagesController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java)"
		},
		{
			"name": "Push",
			"description": "Endpoint di PushController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java)"
		},
		{
			"name": "Ruoli",
			"description": "Endpoint di RuoliController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java)"
		},
		{
			"name": "User",
			"description": "Endpoint di UserController (src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java)"
		}
	],
	"paths": {
		"/api/alias/add": {
			"post": {
				"tags": [
					"Alias"
				],
				"summary": "Insert Alias",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:50` — `AliasController.InsertAlias()`.",
				"operationId": "AliasController.InsertAlias",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:50",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Alias"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/alias/del/{al_id}": {
			"delete": {
				"tags": [
					"Alias"
				],
				"summary": "Delete Alias",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:90` — `AliasController.DeleteAlias()`.",
				"operationId": "AliasController.DeleteAlias",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:90",
				"parameters": [
					{
						"name": "al_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/alias/get/{al_id}": {
			"get": {
				"tags": [
					"Alias"
				],
				"summary": "Get Alias",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:79` — `AliasController.GetAlias()`.",
				"operationId": "AliasController.GetAlias",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:79",
				"parameters": [
					{
						"name": "al_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Alias"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/alias/getcompany/{pt_id}": {
			"get": {
				"tags": [
					"Alias"
				],
				"summary": "get Alias Companies",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:59` — `AliasController.getAliasCompanies()`.",
				"operationId": "AliasController.getAliasCompanies",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:59",
				"parameters": [
					{
						"name": "pt_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "integer",
										"format": "int32"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/alias/list/{pt_id}": {
			"get": {
				"tags": [
					"Alias"
				],
				"summary": "Alias List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:36` — `AliasController.AliasList()`.",
				"operationId": "AliasController.AliasList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:36",
				"parameters": [
					{
						"name": "pt_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "al_descrizione",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitda",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "limitper",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Alias"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/alias/setcompany/{pt_id}/{cmp_id}/{cmp_isChecked}": {
			"get": {
				"tags": [
					"Alias"
				],
				"summary": "Save Ass Alias Azienda",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:69` — `AliasController.SaveAssAliasAzienda()`.",
				"operationId": "AliasController.SaveAssAliasAzienda",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/AliasController.java:69",
				"parameters": [
					{
						"name": "pt_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "cmp_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "cmp_isChecked",
						"in": "path",
						"required": true,
						"schema": {
							"type": "boolean"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/combo/comuni": {
			"get": {
				"tags": [
					"Combo"
				],
				"summary": "Comuni List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/ComboController.java:36` — `ComboController.ComuniList()`.",
				"operationId": "ComboController.ComuniList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/ComboController.java:36",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Combo"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/config": {
			"get": {
				"tags": [
					"Dashboard"
				],
				"summary": "Get Dashboard Config",
				"description": "GET /dashboard/config - Recupera la configurazione dashboard dell'utente corrente.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:53` — `DashboardController.GetDashboardConfig()`.",
				"operationId": "DashboardController.GetDashboardConfig",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:53",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserDashboardConfig"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"put": {
				"tags": [
					"Dashboard"
				],
				"summary": "Update Dashboard Config",
				"description": "PUT /dashboard/config - Aggiorna la configurazione dashboard (layout, colonne, tema).\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:67` — `DashboardController.UpdateDashboardConfig()`.",
				"operationId": "DashboardController.UpdateDashboardConfig",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:67",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserDashboardConfig"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserDashboardConfig"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/registry": {
			"get": {
				"tags": [
					"Dashboard"
				],
				"summary": "Get All Registry Widgets",
				"description": "GET /dashboard/registry - Lista tutti i widget del registry.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:204` — `DashboardController.GetAllRegistryWidgets()`.",
				"operationId": "DashboardController.GetAllRegistryWidgets",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:204",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/WidgetRegistry"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"post": {
				"tags": [
					"Dashboard"
				],
				"summary": "Insert Registry Widget",
				"description": "POST /dashboard/registry - Inserisce un nuovo widget nel registry.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:233` — `DashboardController.InsertRegistryWidget()`.",
				"operationId": "DashboardController.InsertRegistryWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:233",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/WidgetRegistry"
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Creato",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WidgetRegistry"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/registry/{wr_id}": {
			"put": {
				"tags": [
					"Dashboard"
				],
				"summary": "Update Registry Widget",
				"description": "PUT /dashboard/registry/{id} - Aggiorna un widget nel registry.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:217` — `DashboardController.UpdateRegistryWidget()`.",
				"operationId": "DashboardController.UpdateRegistryWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:217",
				"parameters": [
					{
						"name": "wr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/WidgetRegistry"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/WidgetRegistry"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"delete": {
				"tags": [
					"Dashboard"
				],
				"summary": "Delete Registry Widget",
				"description": "DELETE /dashboard/registry/{id} - Elimina un widget dal registry.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:247` — `DashboardController.DeleteRegistryWidget()`.",
				"operationId": "DashboardController.DeleteRegistryWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:247",
				"parameters": [
					{
						"name": "wr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"204": {
						"description": "Nessun contenuto"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/reset-defaults": {
			"post": {
				"tags": [
					"Dashboard"
				],
				"summary": "Reset To Defaults",
				"description": "POST /dashboard/reset-defaults - Resetta la dashboard ai widget di default del ruolo.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:81` — `DashboardController.ResetToDefaults()`.",
				"operationId": "DashboardController.ResetToDefaults",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:81",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserDashboardConfig"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/roles": {
			"get": {
				"tags": [
					"Dashboard"
				],
				"summary": "Get All Role Names",
				"description": "GET /dashboard/roles - Lista tutti i nomi di ruolo del sistema.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:262` — `DashboardController.GetAllRoleNames()`.",
				"operationId": "DashboardController.GetAllRoleNames",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:262",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "string"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/widgets": {
			"get": {
				"tags": [
					"Dashboard"
				],
				"summary": "Get User Widgets",
				"description": "GET /dashboard/widgets - Lista widget dell'utente corrente.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:97` — `DashboardController.GetUserWidgets()`.",
				"operationId": "DashboardController.GetUserWidgets",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:97",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/DashboardWidget"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"post": {
				"tags": [
					"Dashboard"
				],
				"summary": "Add Widget",
				"description": "POST /dashboard/widgets - Aggiunge un nuovo widget.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:126` — `DashboardController.AddWidget()`.",
				"operationId": "DashboardController.AddWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:126",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DashboardWidget"
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Creato",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DashboardWidget"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/widgets/{dw_id}": {
			"put": {
				"tags": [
					"Dashboard"
				],
				"summary": "Update Widget",
				"description": "PUT /dashboard/widgets/{id} - Aggiorna un widget esistente.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:158` — `DashboardController.UpdateWidget()`.",
				"operationId": "DashboardController.UpdateWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:158",
				"parameters": [
					{
						"name": "dw_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DashboardWidget"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DashboardWidget"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"delete": {
				"tags": [
					"Dashboard"
				],
				"summary": "Delete Widget",
				"description": "DELETE /dashboard/widgets/{id} - Rimuove un widget.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:173` — `DashboardController.DeleteWidget()`.",
				"operationId": "DashboardController.DeleteWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:173",
				"parameters": [
					{
						"name": "dw_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"204": {
						"description": "Nessun contenuto"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/widgets/available": {
			"get": {
				"tags": [
					"Dashboard"
				],
				"summary": "Get Available Widgets",
				"description": "GET /dashboard/widgets/available - Lista widget disponibili filtrati per ruolo.\r I ruoli vengono recuperati dalla stored procedure in base all'usr_id.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:112` — `DashboardController.GetAvailableWidgets()`.",
				"operationId": "DashboardController.GetAvailableWidgets",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:112",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AvailableWidgetsResponse"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/widgets/iframe": {
			"post": {
				"tags": [
					"Dashboard"
				],
				"summary": "Add Iframe Widget",
				"description": "POST /dashboard/widgets/iframe - Salva una pagina come widget iframe.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:140` — `DashboardController.AddIframeWidget()`.",
				"operationId": "DashboardController.AddIframeWidget",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:140",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/DashboardWidget"
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Creato",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/DashboardWidget"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/dashboard/widgets/reorder": {
			"put": {
				"tags": [
					"Dashboard"
				],
				"summary": "Reorder Widgets",
				"description": "PUT /dashboard/widgets/reorder - Riordina i widget (batch).\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:188` — `DashboardController.ReorderWidgets()`.",
				"operationId": "DashboardController.ReorderWidgets",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/DashboardController.java:188",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/ReorderWidgetRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/byuser/{modNome}": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "Get Funzioni By User",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:48` — `FunzioniController.GetFunzioniByUser()`.",
				"operationId": "FunzioniController.GetFunzioniByUser",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:48",
				"parameters": [
					{
						"name": "modNome",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/ModuleFunction"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/funzionibymodnome/{modNome}": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "Get Funzioni",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:37` — `FunzioniController.GetFunzioni()`.",
				"operationId": "FunzioniController.GetFunzioni",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:37",
				"parameters": [
					{
						"name": "modNome",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/ModuleFunction"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/getruoli/{tipo}": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "Get Ruoli",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:58` — `FunzioniController.GetRuoli()`.",
				"operationId": "FunzioniController.GetRuoli",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:58",
				"parameters": [
					{
						"name": "tipo",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Ruolo"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/{moduleId}": {
			"delete": {
				"tags": [
					"Funzioni"
				],
				"summary": "delete Module",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:222` — `FunzioniController.deleteModule()`.",
				"operationId": "FunzioniController.deleteModule",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:222",
				"parameters": [
					{
						"name": "moduleId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/{moduleId}/functions/by-role": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "get Module Functions By Role",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:106` — `FunzioniController.getModuleFunctionsByRole()`.",
				"operationId": "FunzioniController.getModuleFunctionsByRole",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:106",
				"parameters": [
					{
						"name": "roleId",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "moduleId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/ModuleFunction"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/all": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "get All Modules",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:158` — `FunzioniController.getAllModules()`.",
				"operationId": "FunzioniController.getAllModules",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:158",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Module"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/assign": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "assign Module To Service",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:165` — `FunzioniController.assignModuleToService()`.",
				"operationId": "FunzioniController.assignModuleToService",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:165",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/create": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "create Module",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:174` — `FunzioniController.createModule()`.",
				"operationId": "FunzioniController.createModule",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:174",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/disassociate": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "disassociate Module From Service",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:213` — `FunzioniController.disassociateModuleFromService()`.",
				"operationId": "FunzioniController.disassociateModuleFromService",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:213",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/functions/{functionId}": {
			"delete": {
				"tags": [
					"Funzioni"
				],
				"summary": "delete Module Function",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:274` — `FunzioniController.deleteModuleFunction()`.",
				"operationId": "FunzioniController.deleteModuleFunction",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:274",
				"parameters": [
					{
						"name": "functionId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/functions/create": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "create Module Function",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:184` — `FunzioniController.createModuleFunction()`.",
				"operationId": "FunzioniController.createModuleFunction",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:184",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/functions/update": {
			"put": {
				"tags": [
					"Funzioni"
				],
				"summary": "update Module Function",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:230` — `FunzioniController.updateModuleFunction()`.",
				"operationId": "FunzioniController.updateModuleFunction",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:230",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/layout": {
			"put": {
				"tags": [
					"Funzioni"
				],
				"summary": "update Module Layout",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:264` — `FunzioniController.updateModuleLayout()`.",
				"operationId": "FunzioniController.updateModuleLayout",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:264",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/layout/{modNome}": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "get Module Layout",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:257` — `FunzioniController.getModuleLayout()`.\n\nTipo di risposta non deducibile dal sorgente: il metodo restituisce `ResponseEntity<?>`.",
				"operationId": "FunzioniController.getModuleLayout",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:257",
				"parameters": [
					{
						"name": "modNome",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/service/{serviceId}/company/{companyId}": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "Get Module By Service And Company",
				"description": "Permessi Servizzi Module\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:80` — `FunzioniController.GetModuleByServiceAndCompany()`.",
				"operationId": "FunzioniController.GetModuleByServiceAndCompany",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:80",
				"parameters": [
					{
						"name": "serviceId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "companyId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Module"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/toggle-all-functions": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "Toggle All Module Functions",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:94` — `FunzioniController.ToggleAllModuleFunctions()`.",
				"operationId": "FunzioniController.ToggleAllModuleFunctions",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:94",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/update": {
			"put": {
				"tags": [
					"Funzioni"
				],
				"summary": "update Module",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:202` — `FunzioniController.updateModule()`.",
				"operationId": "FunzioniController.updateModule",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:202",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/modules/with-function-status": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "Get Modules With Function Status",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:87` — `FunzioniController.GetModulesWithFunctionStatus()`.",
				"operationId": "FunzioniController.GetModulesWithFunctionStatus",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:87",
				"parameters": [
					{
						"name": "serviceId",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "roleId",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Module"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/roleassignments/bymodule/{modNome}": {
			"get": {
				"tags": [
					"Funzioni"
				],
				"summary": "get Role Assignments By Module",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:249` — `FunzioniController.getRoleAssignmentsByModule()`.",
				"operationId": "FunzioniController.getRoleAssignmentsByModule",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:249",
				"parameters": [
					{
						"name": "modNome",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"type": "object"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/save-function-permissions": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "save Function Permissions",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:113` — `FunzioniController.saveFunctionPermissions()`.",
				"operationId": "FunzioniController.saveFunctionPermissions",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:113",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/save-pages-permissions": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "save Page Permissions",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:135` — `FunzioniController.savePagePermissions()`.",
				"operationId": "FunzioniController.savePagePermissions",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:135",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK"
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/funzioni/saveassrlfu": {
			"post": {
				"tags": [
					"Funzioni"
				],
				"summary": "Save Ass Role Func",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:68` — `FunzioniController.SaveAssRoleFunc()`.",
				"operationId": "FunzioniController.SaveAssRoleFunc",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/FunzioniController.java:68",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/ModuleFunction"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/labels/get/{key}": {
			"get": {
				"tags": [
					"Label"
				],
				"summary": "Get Labels",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/LabelController.java:35` — `LabelController.GetLabels()`.",
				"operationId": "LabelController.GetLabels",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/LabelController.java:35",
				"parameters": [
					{
						"name": "key",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Label"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/mail-settings/my": {
			"get": {
				"tags": [
					"MailSettings"
				],
				"summary": "Get My Mail Settings",
				"description": "Preferenze notifica dell'utente corrente (solo i tipi pertinenti ai suoi ruoli nell'azienda corrente).\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MailSettingsController.java:36` — `MailSettingsController.GetMyMailSettings()`.",
				"operationId": "MailSettingsController.GetMyMailSettings",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MailSettingsController.java:36",
				"parameters": [
					{
						"name": "cmp_id",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "0"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/MailSettingItem"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"post": {
				"tags": [
					"MailSettings"
				],
				"summary": "Save My Mail Settings",
				"description": "Salva le scelte di canale dell'utente corrente.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MailSettingsController.java:45` — `MailSettingsController.SaveMyMailSettings()`.",
				"operationId": "MailSettingsController.SaveMyMailSettings",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MailSettingsController.java:45",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/MailSettingItem"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/check-admin": {
			"get": {
				"tags": [
					"Menu"
				],
				"summary": "check Admin",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:172` — `MenuController.checkAdmin()`.",
				"operationId": "MenuController.checkAdmin",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:172",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "boolean"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/export": {
			"get": {
				"tags": [
					"Menu"
				],
				"summary": "export Menu",
				"description": "═══════════ Export / Import menu (migrazione tra ambienti) ═══════════\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:129` — `MenuController.exportMenu()`.",
				"operationId": "MenuController.exportMenu",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:129",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/import-merge": {
			"post": {
				"tags": [
					"Menu"
				],
				"summary": "import Merge",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:161` — `MenuController.importMerge()`.",
				"operationId": "MenuController.importMerge",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:161",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/MenuExportItem"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/import-overwrite": {
			"post": {
				"tags": [
					"Menu"
				],
				"summary": "import Overwrite",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:150` — `MenuController.importOverwrite()`.",
				"operationId": "MenuController.importOverwrite",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:150",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/MenuExportItem"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/locks": {
			"get": {
				"tags": [
					"Menu"
				],
				"summary": "get Position Locks",
				"description": "═══════════ Posizioni: blocco e riordino alfabetico ═══════════\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:93` — `MenuController.getPositionLocks()`.",
				"operationId": "MenuController.getPositionLocks",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:93",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/page-position": {
			"put": {
				"tags": [
					"Menu"
				],
				"summary": "set Page Position",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:102` — `MenuController.setPagePosition()`.",
				"operationId": "MenuController.setPagePosition",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:102",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/positions": {
			"post": {
				"tags": [
					"Menu"
				],
				"summary": "apply Positions",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:116` — `MenuController.applyPositions()`.",
				"operationId": "MenuController.applyPositions",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:116",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"type": "object"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/preview-merge": {
			"post": {
				"tags": [
					"Menu"
				],
				"summary": "preview Merge",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:140` — `MenuController.previewMerge()`.",
				"operationId": "MenuController.previewMerge",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:140",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/MenuExportItem"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/sidebarmenu": {
			"post": {
				"tags": [
					"Menu"
				],
				"summary": "add Menu",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:54` — `MenuController.addMenu()`.",
				"operationId": "MenuController.addMenu",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:54",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SidebarMenu"
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Creato",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/manager/sidebarmenu/{pg_id}": {
			"put": {
				"tags": [
					"Menu"
				],
				"summary": "update Menu",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:66` — `MenuController.updateMenu()`.",
				"operationId": "MenuController.updateMenu",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:66",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/SidebarMenu"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"delete": {
				"tags": [
					"Menu"
				],
				"summary": "delete Menu",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:79` — `MenuController.deleteMenu()`.",
				"operationId": "MenuController.deleteMenu",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:79",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			},
			"get": {
				"tags": [
					"Menu"
				],
				"summary": "sidebarmenu Manager",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:45` — `MenuController.sidebarmenuManager()`.",
				"operationId": "MenuController.sidebarmenuManager",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:45",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/SidebarMenu"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/menu/sidebarmenu/{prt_id}/{cmp_id}": {
			"get": {
				"tags": [
					"Menu"
				],
				"summary": "sidebarmenu",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:36` — `MenuController.sidebarmenu()`.",
				"operationId": "MenuController.sidebarmenu",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/MenuController.java:36",
				"parameters": [
					{
						"name": "prt_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "cmp_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/SidebarMenu"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/add": {
			"post": {
				"tags": [
					"Notify"
				],
				"summary": "Insert Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:84` — `NotifyController.InsertNotify()`.",
				"operationId": "NotifyController.InsertNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:84",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserNotify"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/add-batch": {
			"post": {
				"tags": [
					"Notify"
				],
				"summary": "Insert Batch Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:159` — `NotifyController.InsertBatchNotify()`.",
				"operationId": "NotifyController.InsertBatchNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:159",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/NotifyBatchRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/del/{usrnot_id}": {
			"delete": {
				"tags": [
					"Notify"
				],
				"summary": "Delete Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:100` — `NotifyController.DeleteNotify()`.",
				"operationId": "NotifyController.DeleteNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:100",
				"parameters": [
					{
						"name": "usrnot_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/get/{usrnot_id}": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "Get Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:75` — `NotifyController.GetNotify()`.",
				"operationId": "NotifyController.GetNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:75",
				"parameters": [
					{
						"name": "usrnot_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserNotify"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/image/{filename}": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "Serve Image",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:202` — `NotifyController.ServeImage()`.",
				"operationId": "NotifyController.ServeImage",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:202",
				"parameters": [
					{
						"name": "filename",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/list": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "Notify List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:53` — `NotifyController.NotifyList()`.",
				"operationId": "NotifyController.NotifyList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:53",
				"parameters": [
					{
						"name": "txtsearch",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": "usrnot_dateins DESC"
						}
					},
					{
						"name": "limit",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "20"
						}
					},
					{
						"name": "offset",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "0"
						}
					},
					{
						"name": "usrnot_type",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "usrnot_typesent",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "status",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "date_from",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "date_to",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/UserNotify"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/mark-read/{usrnot_id}": {
			"put": {
				"tags": [
					"Notify"
				],
				"summary": "Mark As Read",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:108` — `NotifyController.MarkAsRead()`.",
				"operationId": "NotifyController.MarkAsRead",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:108",
				"parameters": [
					{
						"name": "usrnot_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/my-list": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "My Notify List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:133` — `NotifyController.MyNotifyList()`.",
				"operationId": "NotifyController.MyNotifyList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:133",
				"parameters": [
					{
						"name": "limit",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "20"
						}
					},
					{
						"name": "offset",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "0"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/UserNotify"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/retry/{usrnot_id}": {
			"put": {
				"tags": [
					"Notify"
				],
				"summary": "Retry Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:116` — `NotifyController.RetryNotify()`.",
				"operationId": "NotifyController.RetryNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:116",
				"parameters": [
					{
						"name": "usrnot_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int64"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/types": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "Get Notify Types",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:151` — `NotifyController.GetNotifyTypes()`.",
				"operationId": "NotifyController.GetNotifyTypes",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:151",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/UserNotifyType"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/unread-count": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "Unread Count",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:144` — `NotifyController.UnreadCount()`.",
				"operationId": "NotifyController.UnreadCount",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:144",
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/upd": {
			"put": {
				"tags": [
					"Notify"
				],
				"summary": "Update Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:92` — `NotifyController.UpdateNotify()`.",
				"operationId": "NotifyController.UpdateNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:92",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserNotify"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/notify/upload-image": {
			"post": {
				"tags": [
					"Notify"
				],
				"summary": "Upload Image",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:167` — `NotifyController.UploadImage()`.",
				"operationId": "NotifyController.UploadImage",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:167",
				"requestBody": {
					"required": true,
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"file": {
										"type": "string",
										"format": "binary"
									}
								},
								"required": [
									"file"
								]
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio"
					}
				}
			}
		},
		"/api/notify/users": {
			"get": {
				"tags": [
					"Notify"
				],
				"summary": "Get Users For Notify",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:124` — `NotifyController.GetUsersForNotify()`.",
				"operationId": "NotifyController.GetUsersForNotify",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/NotifyController.java:124",
				"parameters": [
					{
						"name": "txtsearch",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "fcm_only",
						"in": "query",
						"required": false,
						"schema": {
							"type": "boolean",
							"default": "false"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/UserPortal"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine": {
			"get": {
				"tags": [
					"PortalPages"
				],
				"summary": "Get View Pagine",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:84` — `PortalPagesController.GetViewPagine()`.",
				"operationId": "PortalPagesController.GetViewPagine",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:84",
				"parameters": [
					{
						"name": "pg_name",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitda",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitper",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/PortalePagina"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/add": {
			"post": {
				"tags": [
					"PortalPages"
				],
				"summary": "Insert Pagina",
				"description": "Modificato per rimuovere @PathVariable(\"username\") e usare l'autenticazione\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:62` — `PortalPagesController.InsertPagina()`.",
				"operationId": "PortalPagesController.InsertPagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:62",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PortalePagina"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/del/{pg_id}": {
			"delete": {
				"tags": [
					"PortalPages"
				],
				"summary": "Delete Pagina",
				"description": "Modificato per rimuovere @PathVariable(\"username\") e usare l'autenticazione\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:72` — `PortalPagesController.DeletePagina()`.",
				"operationId": "PortalPagesController.DeletePagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:72",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/list": {
			"get": {
				"tags": [
					"PortalPages"
				],
				"summary": "Get View Sottopagine",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:105` — `PortalPagesController.GetViewSottopagine()`.",
				"operationId": "PortalPagesController.GetViewSottopagine",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:105",
				"parameters": [
					{
						"name": "pg_name",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitda",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitper",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "parent_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/PortalePagina"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/paginabyid/{pg_id}": {
			"get": {
				"tags": [
					"PortalPages"
				],
				"summary": "Get Ruolo",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:39` — `PortalPagesController.GetRuolo()`.",
				"operationId": "PortalPagesController.GetRuolo",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:39",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/PortalePagina"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/service/{serviceId}/company/{companyId}": {
			"get": {
				"tags": [
					"PortalPages"
				],
				"summary": "Get Pages By Service And Company",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:142` — `PortalPagesController.GetPagesByServiceAndCompany()`.",
				"operationId": "PortalPagesController.GetPagesByServiceAndCompany",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:142",
				"parameters": [
					{
						"name": "serviceId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "companyId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/PortalePagina"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/service/{serviceId}/role/{roleId}": {
			"get": {
				"tags": [
					"PortalPages"
				],
				"summary": "Get Pages By Service And Role",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:149` — `PortalPagesController.GetPagesByServiceAndRole()`.",
				"operationId": "PortalPagesController.GetPagesByServiceAndRole",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:149",
				"parameters": [
					{
						"name": "serviceId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "roleId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/PortalePagina"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/pagine/update": {
			"put": {
				"tags": [
					"PortalPages"
				],
				"summary": "Update Pagina",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:52` — `PortalPagesController.UpdatePagina()`.",
				"operationId": "PortalPagesController.UpdatePagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalPagesController.java:52",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PortalePagina"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/add": {
			"post": {
				"tags": [
					"Portal"
				],
				"summary": "Insert Portale",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:49` — `PortalController.InsertPortale()`.",
				"operationId": "PortalController.InsertPortale",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:49",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Portale"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/deleteportalepagina": {
			"delete": {
				"tags": [
					"Portal"
				],
				"summary": "Delete Ruolo Pagina",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:99` — `PortalController.DeleteRuoloPagina()`.",
				"operationId": "PortalController.DeleteRuoloPagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:99",
				"parameters": [
					{
						"name": "pg_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "pt_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/get/{pt_id_out}": {
			"get": {
				"tags": [
					"Portal"
				],
				"summary": "Get Portale",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:58` — `PortalController.GetPortale()`.",
				"operationId": "PortalController.GetPortale",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:58",
				"parameters": [
					{
						"name": "pt_id_out",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Portale"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/list": {
			"get": {
				"tags": [
					"Portal"
				],
				"summary": "Portal List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:35` — `PortalController.PortalList()`.",
				"operationId": "PortalController.PortalList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:35",
				"parameters": [
					{
						"name": "pt_descrizione",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitda",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "limitper",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Portale"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/listaportalipagina/{pg_id}": {
			"get": {
				"tags": [
					"Portal"
				],
				"summary": "Portals Page List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:78` — `PortalController.PortalsPageList()`.",
				"operationId": "PortalController.PortalsPageList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:78",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Portale"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/saveasportalepagina/{pg_id}": {
			"post": {
				"tags": [
					"Portal"
				],
				"summary": "Insert Portale Pagina",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:88` — `PortalController.InsertPortalePagina()`.",
				"operationId": "PortalController.InsertPortalePagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:88",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Portale"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/saveassportali/{usr_id}": {
			"post": {
				"tags": [
					"Portal"
				],
				"summary": "Associa Portali",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:113` — `PortalController.AssociaPortali()`.",
				"operationId": "PortalController.AssociaPortali",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:113",
				"parameters": [
					{
						"name": "usr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/Portale"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/set/{pt_id_out}": {
			"get": {
				"tags": [
					"Portal"
				],
				"summary": "Set Portale",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:68` — `PortalController.SetPortale()`.",
				"operationId": "PortalController.SetPortale",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:68",
				"parameters": [
					{
						"name": "pt_id_out",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/StringObject"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/portal/utente/{user_id}": {
			"get": {
				"tags": [
					"Portal"
				],
				"summary": "Get Portali User",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:123` — `PortalController.GetPortaliUser()`.",
				"operationId": "PortalController.GetPortaliUser",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PortalController.java:123",
				"parameters": [
					{
						"name": "user_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Portale"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/push/send": {
			"post": {
				"tags": [
					"Push"
				],
				"summary": "send",
				"description": "Endpoint interno per lo scheduler. Autenticato via header X-Service-Key (no JWT).\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java:78` — `PushController.send()`.",
				"operationId": "PushController.send",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java:78",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PushRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/push/subscribe": {
			"post": {
				"tags": [
					"Push"
				],
				"summary": "subscribe",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java:47` — `PushController.subscribe()`.",
				"operationId": "PushController.subscribe",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java:47",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/PushSubscription"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/push/unsubscribe": {
			"post": {
				"tags": [
					"Push"
				],
				"summary": "unsubscribe",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java:66` — `PushController.unsubscribe()`.",
				"operationId": "PushController.unsubscribe",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/PushController.java:66",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"additionalProperties": {
									"type": "string"
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/add": {
			"post": {
				"tags": [
					"Ruoli"
				],
				"summary": "Insert Ruolo",
				"description": "Modificato per rimuovere @PathVariable(\"username\") e usare l'autenticazione\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:57` — `RuoliController.InsertRuolo()`.",
				"operationId": "RuoliController.InsertRuolo",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:57",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Ruolo"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/associazioni/{rl_id}": {
			"get": {
				"tags": [
					"Ruoli"
				],
				"summary": "Count Associazioni",
				"description": "Conta gli utenti associati ad un ruolo (per gestire l'eliminazione lato frontend)\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:67` — `RuoliController.CountAssociazioni()`.",
				"operationId": "RuoliController.CountAssociazioni",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:67",
				"parameters": [
					{
						"name": "rl_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/del/{rl_id}": {
			"delete": {
				"tags": [
					"Ruoli"
				],
				"summary": "Delete Ruolo",
				"description": "Con force=true il ruolo viene prima disassociato da tutti gli utenti, poi eliminato\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:77` — `RuoliController.DeleteRuolo()`.",
				"operationId": "RuoliController.DeleteRuolo",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:77",
				"parameters": [
					{
						"name": "rl_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "force",
						"in": "query",
						"required": false,
						"schema": {
							"type": "boolean",
							"default": "false"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/deleteruolopagina": {
			"delete": {
				"tags": [
					"Ruoli"
				],
				"summary": "Delete Ruolo Pagina",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:150` — `RuoliController.DeleteRuoloPagina()`.",
				"operationId": "RuoliController.DeleteRuoloPagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:150",
				"parameters": [
					{
						"name": "pg_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "rl_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/lista": {
			"get": {
				"tags": [
					"Ruoli"
				],
				"summary": "Get View Ruoli",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:87` — `RuoliController.GetViewRuoli()`.",
				"operationId": "RuoliController.GetViewRuoli",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:87",
				"parameters": [
					{
						"name": "rl_description",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitda",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitper",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Ruolo"
									}
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/listaruolipagina/{pg_id}": {
			"get": {
				"tags": [
					"Ruoli"
				],
				"summary": "Get View Ruoli Pagine",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:105` — `RuoliController.GetViewRuoliPagine()`.",
				"operationId": "RuoliController.GetViewRuoliPagine",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:105",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Ruolo"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/listaruoliuser/{usr_id}": {
			"get": {
				"tags": [
					"Ruoli"
				],
				"summary": "Get View Ruoli User",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:116` — `RuoliController.GetViewRuoliUser()`.",
				"operationId": "RuoliController.GetViewRuoliUser",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:116",
				"parameters": [
					{
						"name": "usr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/Ruolo"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/ruolobyid/{rl_id}": {
			"get": {
				"tags": [
					"Ruoli"
				],
				"summary": "Get Ruolo",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:35` — `RuoliController.GetRuolo()`.",
				"operationId": "RuoliController.GetRuolo",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:35",
				"parameters": [
					{
						"name": "rl_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/Ruolo"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/saveasruolopagina/{pg_id}": {
			"post": {
				"tags": [
					"Ruoli"
				],
				"summary": "Insert Portale Pagina",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:127` — `RuoliController.InsertPortalePagina()`.",
				"operationId": "RuoliController.InsertPortalePagina",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:127",
				"parameters": [
					{
						"name": "pg_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Ruolo"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/saveassruoliuser/{usr_id}": {
			"post": {
				"tags": [
					"Ruoli"
				],
				"summary": "Insert Role User",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:138` — `RuoliController.InsertRoleUser()`.",
				"operationId": "RuoliController.InsertRoleUser",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:138",
				"parameters": [
					{
						"name": "usr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Ruolo"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/ruoli/update": {
			"put": {
				"tags": [
					"Ruoli"
				],
				"summary": "Update Ruolo",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:47` — `RuoliController.UpdateRuolo()`.",
				"operationId": "RuoliController.UpdateRuolo",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/RuoliController.java:47",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Ruolo"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/add": {
			"post": {
				"tags": [
					"User"
				],
				"summary": "Insert Utente",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:53` — `UserController.InsertUtente()`.",
				"operationId": "UserController.InsertUtente",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:53",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserPortal"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/asscol": {
			"post": {
				"tags": [
					"User"
				],
				"summary": "Ass Col Utente",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:100` — `UserController.AssColUtente()`.",
				"operationId": "UserController.AssColUtente",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:100",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Collaborator"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/asscust": {
			"post": {
				"tags": [
					"User"
				],
				"summary": "Ass Cust Utente",
				"description": "Utenza per collaboratore di un CLIENTE: ritorna usr_id (>0), -1 = email gia' registrata, -2 = nessun portale per l'azienda\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:117` — `UserController.AssCustUtente()`.",
				"operationId": "UserController.AssCustUtente",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:117",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Collaborator"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/assdoctor": {
			"post": {
				"tags": [
					"User"
				],
				"summary": "Ass Doctor",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:145` — `UserController.AssDoctor()`.",
				"operationId": "UserController.AssDoctor",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:145",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Doctor"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/assempl": {
			"post": {
				"tags": [
					"User"
				],
				"summary": "Ass Utente",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:84` — `UserController.AssUtente()`.",
				"operationId": "UserController.AssUtente",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:84",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/Employee"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/avatar": {
			"put": {
				"tags": [
					"User"
				],
				"summary": "Update Avatar",
				"description": "L'usr_id e' ricavato dal principal: ognuno modifica solo il proprio avatar.\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:171` — `UserController.UpdateAvatar()`.",
				"operationId": "UserController.UpdateAvatar",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:171",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/del/{usr_id_out}": {
			"delete": {
				"tags": [
					"User"
				],
				"summary": "Del Utente",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:75` — `UserController.DelUtente()`.",
				"operationId": "UserController.DelUtente",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:75",
				"parameters": [
					{
						"name": "usr_id_out",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/get/{usr_id_out}": {
			"get": {
				"tags": [
					"User"
				],
				"summary": "Get Utente",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:65` — `UserController.GetUtente()`.",
				"operationId": "UserController.GetUtente",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:65",
				"parameters": [
					{
						"name": "usr_id_out",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserPortal"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/getbyusername": {
			"get": {
				"tags": [
					"User"
				],
				"summary": "Get User Id By Username",
				"description": "Cerca l'usr_id di un'utenza esistente per username/email (0 se non esiste)\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:126` — `UserController.GetUserIdByUsername()`.",
				"operationId": "UserController.GetUserIdByUsername",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:126",
				"parameters": [
					{
						"name": "username",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/linkcol": {
			"post": {
				"tags": [
					"User"
				],
				"summary": "Link Collaborator Existing User",
				"description": "Aggancia un collaboratore a un'utenza portale esistente (caso email duplicata confermata dall'amministratore)\n\nSorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:135` — `UserController.LinkCollaboratorExistingUser()`.",
				"operationId": "UserController.LinkCollaboratorExistingUser",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:135",
				"parameters": [
					{
						"name": "usr_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "col_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "cmp_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/list": {
			"get": {
				"tags": [
					"User"
				],
				"summary": "User List",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:39` — `UserController.UserList()`.",
				"operationId": "UserController.UserList",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:39",
				"parameters": [
					{
						"name": "usr_username",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "orderby",
						"in": "query",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "limitda",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "limitper",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "role_id",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "0"
						}
					},
					{
						"name": "cmp_id",
						"in": "query",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					},
					{
						"name": "usr_type",
						"in": "query",
						"required": false,
						"schema": {
							"type": "string",
							"default": ""
						}
					},
					{
						"name": "pt_id_filter",
						"in": "query",
						"required": false,
						"schema": {
							"type": "integer",
							"format": "int32",
							"default": "0"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "array",
									"items": {
										"$ref": "#/components/schemas/UserPortal"
									}
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/loginAsUser/{usr_id}": {
			"get": {
				"tags": [
					"User"
				],
				"summary": "login As User",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:181` — `UserController.loginAsUser()`.",
				"operationId": "UserController.loginAsUser",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:181",
				"parameters": [
					{
						"name": "usr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/UserPortal"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		},
		"/api/user/preferences/{usr_id}": {
			"put": {
				"tags": [
					"User"
				],
				"summary": "Update Preferences",
				"description": "Sorgente: `src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:156` — `UserController.UpdatePreferences()`.",
				"operationId": "UserController.UpdatePreferences",
				"x-source": "src/main/java/com/kondorcs/ws_spring_portal_manager/controller/UserController.java:156",
				"parameters": [
					{
						"name": "usr_id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "integer",
							"format": "int32"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "OK",
						"content": {
							"application/json": {
								"schema": {
									"type": "integer",
									"format": "int32"
								}
							}
						}
					},
					"400": {
						"description": "Richiesta non valida"
					},
					"401": {
						"description": "Non autenticato: token JWT assente, scaduto o non valido"
					},
					"500": {
						"description": "Errore interno del servizio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/ErrorResponse"
								}
							}
						}
					}
				}
			}
		}
	},
	"components": {
		"securitySchemes": {
			"bearerAuth": {
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT",
				"description": "Token JWT emesso dal servizio di login del portale."
			}
		},
		"schemas": {
			"ErrorResponse": {
				"type": "object",
				"description": "Corpo di errore del gestore centralizzato delle eccezioni (kondorcs-utils, GlobalExceptionHandler). Le proprietà oltre a `requestId` sono presenti solo se il chiamante ha ruolo ADMIN.",
				"properties": {
					"timestamp": {
						"type": "string",
						"format": "date-time"
					},
					"status": {
						"type": "integer",
						"format": "int32"
					},
					"error": {
						"type": "string"
					},
					"message": {
						"type": "string"
					},
					"requestId": {
						"type": "string",
						"description": "Solo nella variante generica (utenti non ADMIN)."
					},
					"rootCause": {
						"type": "string",
						"description": "Solo per ADMIN."
					},
					"formattedRootCause": {
						"type": "string",
						"description": "Solo per ADMIN."
					},
					"location": {
						"type": "string",
						"description": "Solo per ADMIN: classe, metodo e riga."
					},
					"requestUri": {
						"type": "string",
						"description": "Solo per ADMIN."
					},
					"httpMethod": {
						"type": "string",
						"description": "Solo per ADMIN."
					},
					"user": {
						"type": "string",
						"description": "Solo per ADMIN."
					},
					"parameters": {
						"type": "object",
						"additionalProperties": {
							"type": "string"
						},
						"description": "Solo per ADMIN."
					},
					"contentType": {
						"type": "string",
						"description": "Solo per ADMIN."
					},
					"requestHeaders": {
						"type": "object",
						"additionalProperties": {
							"type": "string"
						},
						"description": "Solo per ADMIN."
					},
					"requestBody": {
						"type": "string",
						"description": "Solo per ADMIN, se la richiesta aveva un corpo."
					},
					"stackTrace": {
						"type": "string",
						"description": "Solo per ADMIN e solo se `log.db.write.stacktrace` è attivo."
					}
				}
			},
			"Alias": {
				"type": "object",
				"properties": {
					"al_id": {
						"type": "integer",
						"format": "int32"
					},
					"al_pt_id": {
						"type": "integer",
						"format": "int32"
					},
					"al_descrizione": {
						"type": "string"
					},
					"al_url": {
						"type": "string"
					}
				}
			},
			"Combo": {
				"type": "object",
				"properties": {
					"text": {
						"type": "string"
					},
					"value": {
						"type": "string"
					}
				}
			},
			"UserDashboardConfig": {
				"type": "object",
				"properties": {
					"udc_id": {
						"type": "integer",
						"format": "int32"
					},
					"udc_usr_id": {
						"type": "integer",
						"format": "int32"
					},
					"udc_layout": {
						"type": "string"
					},
					"udc_columns": {
						"type": "integer",
						"format": "int32"
					},
					"udc_theme": {
						"type": "string"
					},
					"udc_created_at": {
						"type": "string"
					},
					"udc_updated_at": {
						"type": "string"
					}
				}
			},
			"WidgetRegistry": {
				"type": "object",
				"properties": {
					"wr_id": {
						"type": "integer",
						"format": "int32"
					},
					"wr_key": {
						"type": "string"
					},
					"wr_name": {
						"type": "string"
					},
					"wr_description": {
						"type": "string"
					},
					"wr_icon": {
						"type": "string"
					},
					"wr_allowed_roles": {
						"type": "string"
					},
					"wr_default_config": {
						"type": "string"
					},
					"wr_category": {
						"type": "string"
					},
					"wr_order": {
						"type": "integer",
						"format": "int32"
					},
					"wr_is_active": {
						"type": "boolean"
					},
					"wr_is_default": {
						"type": "boolean"
					},
					"defaultConfig": {
						"$ref": "#/components/schemas/DashboardWidget"
					}
				}
			},
			"DashboardWidget": {
				"type": "object",
				"properties": {
					"dw_id": {
						"type": "integer",
						"format": "int32"
					},
					"dw_usr_id": {
						"type": "integer",
						"format": "int32"
					},
					"dw_type": {
						"type": "string"
					},
					"dw_component_key": {
						"type": "string"
					},
					"dw_title": {
						"type": "string"
					},
					"dw_icon": {
						"type": "string"
					},
					"dw_position": {
						"type": "integer",
						"format": "int32"
					},
					"dw_grid_col": {
						"type": "integer",
						"format": "int32"
					},
					"dw_grid_row": {
						"type": "integer",
						"format": "int32"
					},
					"dw_col_span": {
						"type": "integer",
						"format": "int32"
					},
					"dw_row_span": {
						"type": "integer",
						"format": "int32"
					},
					"dw_config": {
						"type": "string"
					},
					"dw_iframe_url": {
						"type": "string"
					},
					"dw_query_params": {
						"type": "string"
					},
					"dw_datatable_config": {
						"type": "string"
					},
					"dw_servicecard_config": {
						"type": "string"
					},
					"dw_is_active": {
						"type": "boolean"
					},
					"dw_created_at": {
						"type": "string"
					},
					"dw_updated_at": {
						"type": "string"
					}
				}
			},
			"AvailableWidgetsResponse": {
				"type": "object",
				"properties": {
					"widgets": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/WidgetRegistry"
						}
					},
					"userWidgetKeys": {
						"type": "array",
						"items": {
							"type": "string"
						}
					}
				}
			},
			"ReorderWidgetRequest": {
				"type": "object",
				"properties": {
					"widgets": {
						"type": "array",
						"items": {}
					}
				}
			},
			"ModuleFunction": {
				"type": "object",
				"properties": {
					"mdfu_id": {
						"type": "integer",
						"format": "int32"
					},
					"mdfu_md_id": {
						"type": "integer",
						"format": "int32"
					},
					"md_nome": {
						"type": "string"
					},
					"mdfu_nome": {
						"type": "string"
					},
					"mdfu_descrizione": {
						"type": "string"
					},
					"mdfu_view_name": {
						"type": "string"
					},
					"mdfu_type": {
						"type": "string"
					},
					"mdfu_icon": {
						"type": "string"
					},
					"mdfu_function": {
						"type": "string"
					},
					"mdfu_params": {
						"type": "string"
					},
					"mdfu_view": {
						"type": "integer",
						"format": "int32"
					},
					"mdfu_order": {
						"type": "integer",
						"format": "int32"
					},
					"mdfu_color": {
						"type": "string"
					},
					"is_assigned": {
						"type": "boolean"
					},
					"ruoli": {
						"type": "array",
						"items": {
							"$ref": "#/components/schemas/Ruolo"
						}
					}
				}
			},
			"Ruolo": {
				"type": "object",
				"properties": {
					"rl_id": {
						"type": "integer",
						"format": "int32"
					},
					"rl_description": {
						"type": "string"
					},
					"rl_type": {
						"type": "string"
					},
					"rl_isChecked": {
						"type": "boolean"
					},
					"rl_default": {
						"type": "boolean"
					},
					"totalrows": {
						"type": "integer",
						"format": "int32"
					}
				}
			},
			"Module": {
				"type": "object",
				"properties": {
					"md_id": {
						"type": "integer",
						"format": "int32"
					},
					"md_nome": {
						"type": "string"
					},
					"md_descrizione": {
						"type": "string"
					},
					"md_prs_id": {
						"type": "integer",
						"format": "int32"
					},
					"assigned_functions": {
						"type": "integer",
						"format": "int64"
					},
					"module_status": {
						"type": "string"
					}
				}
			},
			"Label": {
				"type": "object",
				"properties": {
					"lb_id": {
						"type": "integer",
						"format": "int32"
					},
					"lb_key": {
						"type": "string"
					},
					"lb_fieldname": {
						"type": "string"
					},
					"lb_label": {
						"type": "string"
					},
					"lb_orderby": {
						"type": "string"
					},
					"lb_style": {
						"type": "string"
					}
				}
			},
			"MailSettingItem": {
				"type": "object",
				"properties": {
					"umst_id": {
						"type": "integer",
						"format": "int32"
					},
					"umst_value": {
						"type": "string"
					},
					"umst_desc": {
						"type": "string"
					},
					"umst_category": {
						"type": "string"
					},
					"umst_order": {
						"type": "integer",
						"format": "int32"
					},
					"umst_default_channel": {
						"type": "string"
					},
					"ums_channel": {
						"type": "string"
					}
				}
			},
			"MenuExportItem": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string"
					},
					"url": {
						"type": "string"
					},
					"styleclass": {
						"type": "string"
					},
					"title": {
						"type": "string"
					},
					"posizione": {
						"type": "integer",
						"format": "int32"
					},
					"parent_name": {
						"type": "string"
					},
					"locked": {
						"type": "boolean"
					}
				}
			},
			"SidebarMenu": {
				"type": "object",
				"properties": {
					"pg_id": {
						"type": "integer",
						"format": "int32"
					},
					"name": {
						"type": "string"
					},
					"url": {
						"type": "string"
					},
					"styleclass": {
						"type": "string"
					},
					"pg_title": {
						"type": "string"
					},
					"pg_posizione": {
						"type": "integer",
						"format": "int32"
					},
					"pg_parentid": {
						"type": "integer",
						"format": "int32"
					},
					"pg_description": {
						"type": "string"
					},
					"ptIds": {
						"type": "array",
						"items": {
							"type": "integer",
							"format": "int32"
						}
					},
					"pt_names": {
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"roles": {
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"roleIds": {
						"type": "array",
						"items": {
							"type": "integer",
							"format": "int32"
						}
					},
					"service_ids": {
						"type": "array",
						"items": {
							"type": "integer",
							"format": "int32"
						}
					},
					"service_names": {
						"type": "array",
						"items": {
							"type": "string"
						}
					}
				}
			},
			"UserNotify": {
				"type": "object",
				"properties": {
					"usrnot_id": {
						"type": "integer",
						"format": "int64"
					},
					"usrnot_usr_id": {
						"type": "integer",
						"format": "int32"
					},
					"usrnot_dateins": {
						"type": "string",
						"format": "date-time"
					},
					"usrnot_datesent": {
						"type": "string",
						"format": "date-time"
					},
					"usrnot_message_it": {
						"type": "string"
					},
					"usrnot_message_en": {
						"type": "string"
					},
					"usrnot_message_html_it": {
						"type": "string"
					},
					"usrnot_message_html_en": {
						"type": "string"
					},
					"usrnot_custom_contact": {
						"type": "string"
					},
					"usrnot_type": {
						"type": "string"
					},
					"usrnot_title": {
						"type": "string"
					},
					"usrnot_typesent": {
						"type": "string"
					},
					"usrnot_numattempts": {
						"type": "integer",
						"format": "int32"
					},
					"usrnot_intervalresent": {
						"type": "integer",
						"format": "int32"
					},
					"usrnot_responseschedule": {
						"type": "string"
					},
					"usrnot_dateread": {
						"type": "string",
						"format": "date-time"
					},
					"usr_lastname": {
						"type": "string"
					},
					"usr_mail": {
						"type": "string"
					}
				}
			},
			"NotifyBatchRequest": {
				"type": "object",
				"properties": {
					"recipients": {
						"type": "array",
						"items": {}
					},
					"usrnot_typesent": {
						"type": "string"
					},
					"usrnot_type": {
						"type": "string"
					},
					"usrnot_title": {
						"type": "string"
					},
					"usrnot_message_it": {
						"type": "string"
					},
					"usrnot_message_en": {
						"type": "string"
					},
					"usrnot_message_html_it": {
						"type": "string"
					},
					"usrnot_message_html_en": {
						"type": "string"
					},
					"usrnot_image": {
						"type": "string"
					}
				}
			},
			"UserNotifyType": {
				"type": "object",
				"properties": {
					"usr_not_tp_id": {
						"type": "integer",
						"format": "int32"
					},
					"usr_not_tp_name": {
						"type": "string"
					},
					"usr_not_tp_view_name": {
						"type": "string"
					},
					"usr_not_tp_default_message": {
						"type": "string"
					}
				}
			},
			"UserPortal": {
				"allOf": [
					{
						"$ref": "#/components/schemas/User"
					},
					{
						"type": "object",
						"properties": {
							"totalrows": {
								"type": "integer",
								"format": "int32"
							},
							"portals": {
								"type": "string"
							},
							"lst_portal": {
								"type": "array",
								"items": {
									"$ref": "#/components/schemas/Portale"
								}
							}
						}
					}
				]
			},
			"Portale": {
				"type": "object",
				"properties": {
					"pt_id": {
						"type": "integer",
						"format": "int32"
					},
					"pt_theme": {
						"type": "string"
					},
					"pt_logo": {
						"type": "string"
					},
					"pt_descrizione": {
						"type": "string"
					},
					"pt_favicon": {
						"type": "string"
					},
					"pt_connection_url": {
						"type": "string"
					},
					"pt_db_username": {
						"type": "string"
					},
					"pt_db_password": {
						"type": "string"
					},
					"logo": {
						"type": "integer",
						"format": "int32"
					},
					"totalrows": {
						"type": "integer",
						"format": "int32"
					},
					"pt_isChecked": {
						"type": "boolean"
					}
				}
			},
			"User": {
				"type": "object",
				"properties": {
					"usr_id": {
						"type": "integer",
						"format": "int32"
					},
					"pt_id": {
						"type": "integer",
						"format": "int32"
					},
					"usr_state": {
						"type": "integer",
						"format": "int32"
					},
					"usr_numbid": {
						"type": "integer",
						"format": "int32"
					},
					"usr_username": {
						"type": "string"
					},
					"usr_password": {
						"type": "string"
					},
					"usr_lastname": {
						"type": "string"
					},
					"usr_firstname": {
						"type": "string"
					},
					"usr_displayname": {
						"type": "string"
					},
					"usr_type": {
						"type": "string"
					},
					"usr_mail": {
						"type": "string"
					},
					"usr_iban": {
						"type": "string"
					},
					"token": {
						"type": "string"
					},
					"refresh_token": {
						"type": "string"
					},
					"authorities": {
						"type": "string"
					},
					"id_device": {
						"type": "string"
					},
					"mode_verifica": {
						"type": "string"
					},
					"guid_notifica": {
						"type": "string"
					},
					"usr_codicefiscale": {
						"type": "string"
					},
					"lang": {
						"type": "string"
					},
					"avatar": {
						"type": "string"
					},
					"device_type": {
						"type": "string"
					},
					"usr_phone": {
						"type": "string"
					},
					"usr_privacy": {
						"type": "boolean"
					},
					"exist": {
						"type": "boolean"
					},
					"usr_email_notifications": {
						"type": "boolean"
					},
					"usr_sms_notifications": {
						"type": "boolean"
					},
					"issuedAt": {
						"type": "string",
						"format": "date-time"
					},
					"expiration": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"PortalePagina": {
				"type": "object",
				"properties": {
					"pg_id": {
						"type": "integer",
						"format": "int32"
					},
					"pg_name": {
						"type": "string"
					},
					"pg_class": {
						"type": "string"
					},
					"pg_url": {
						"type": "string"
					},
					"pg_title": {
						"type": "string"
					},
					"pg_isvisible": {
						"type": "boolean"
					},
					"pg_parentid": {
						"type": "integer",
						"format": "int32"
					},
					"pg_posizione": {
						"type": "integer",
						"format": "int32"
					},
					"totalrows": {
						"type": "integer",
						"format": "int32"
					},
					"is_assigned": {
						"type": "boolean"
					}
				}
			},
			"StringObject": {
				"type": "object",
				"properties": {
					"res": {
						"type": "string"
					}
				}
			},
			"PushRequest": {
				"type": "object",
				"properties": {
					"userId": {
						"type": "integer",
						"format": "int32"
					},
					"title": {
						"type": "string"
					},
					"message": {
						"type": "string"
					},
					"data": {
						"type": "object",
						"additionalProperties": {
							"type": "string"
						}
					}
				}
			},
			"PushSubscription": {
				"type": "object",
				"properties": {
					"ps_id": {
						"type": "integer",
						"format": "int32"
					},
					"ps_usr_id": {
						"type": "integer",
						"format": "int32"
					},
					"ps_token": {
						"type": "string"
					},
					"ps_platform": {
						"type": "string"
					},
					"ps_active": {
						"type": "boolean"
					},
					"ps_model": {
						"type": "string"
					},
					"ps_language": {
						"type": "string"
					},
					"ps_created_at": {
						"type": "string",
						"format": "date-time"
					},
					"ps_updated_at": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"Collaborator": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string"
					},
					"surname": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"phonenr": {
						"type": "string"
					},
					"id": {
						"type": "integer",
						"format": "int32"
					},
					"cmp_id": {
						"type": "integer",
						"format": "int32"
					},
					"sup_id": {
						"type": "integer",
						"format": "int32"
					},
					"cst_id": {
						"type": "integer",
						"format": "int32"
					},
					"userid_pt": {
						"type": "integer",
						"format": "int32"
					}
				}
			},
			"Doctor": {
				"type": "object",
				"properties": {
					"dc_id": {
						"type": "integer",
						"format": "int32"
					},
					"dc_cmp_id": {
						"type": "integer",
						"format": "int32"
					},
					"dc_name": {
						"type": "string"
					},
					"dc_surname": {
						"type": "string"
					},
					"dc_mail": {
						"type": "string"
					},
					"dc_org_id": {
						"type": "integer",
						"format": "int32"
					},
					"dc_usr_id": {
						"type": "integer",
						"format": "int32"
					},
					"totalrows": {
						"type": "integer",
						"format": "int32"
					}
				}
			},
			"Employee": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string"
					},
					"surname": {
						"type": "string"
					},
					"email": {
						"type": "string"
					},
					"phonenr": {
						"type": "string"
					},
					"id": {
						"type": "integer",
						"format": "int32"
					},
					"cmp_id": {
						"type": "integer",
						"format": "int32"
					},
					"userid_pt": {
						"type": "integer",
						"format": "int32"
					},
					"usr_id_ins": {
						"type": "integer",
						"format": "int32"
					},
					"enabled": {
						"type": "boolean"
					},
					"data_ins": {
						"type": "string",
						"format": "date-time"
					},
					"date_update": {
						"type": "string",
						"format": "date-time"
					}
				}
			}
		}
	},
	"security": [
		{
			"bearerAuth": []
		}
	]
}
