{
  "openapi": "3.0.0",
  "info": {
    "title": "ptg-back",
    "version": "0.0.1",
    "description": "PTG_Back",
    "contact": {}
  },
  "paths": {
    "/document-excel/{userId}": {
      "get": {
        "x-controller-name": "DocumentsController",
        "x-operation-name": "generateExcelFile",
        "tags": [
          "DocumentsController"
        ],
        "responses": {
          "200": {
            "description": "Array of WorkSession model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkSessionWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "dateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "DocumentsController.generateExcelFile"
      }
    },
    "/document-pdf/{userId}": {
      "get": {
        "x-controller-name": "DocumentsController",
        "x-operation-name": "generatePDFFile",
        "tags": [
          "DocumentsController"
        ],
        "responses": {
          "200": {
            "description": "Array of WorkSession model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkSessionWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "dateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "DocumentsController.generatePDFFile"
      }
    },
    "/global/user/me": {
      "delete": {
        "x-controller-name": "GlobalUserController",
        "x-operation-name": "deleteLoggedUser",
        "tags": [
          "GlobalUserController"
        ],
        "responses": {
          "204": {
            "description": "User DELETE success"
          }
        },
        "operationId": "GlobalUserController.deleteLoggedUser"
      }
    },
    "/global/user/{id}": {
      "delete": {
        "x-controller-name": "GlobalUserController",
        "x-operation-name": "deleteById",
        "tags": [
          "GlobalUserController"
        ],
        "responses": {
          "204": {
            "description": "User DELETE success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "GlobalUserController.deleteById"
      }
    },
    "/iam/change-password": {
      "post": {
        "x-controller-name": "IamController",
        "x-operation-name": "changePassword",
        "tags": [
          "IamController"
        ],
        "responses": {
          "200": {
            "description": "Change user password"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "newPassword": {
                    "type": "string"
                  },
                  "oldPassword": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "required": true
        },
        "operationId": "IamController.changePassword"
      }
    },
    "/iam/login": {
      "post": {
        "x-controller-name": "IamController",
        "x-operation-name": "login",
        "tags": [
          "IamController"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Token",
            "content": {}
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "email",
                  "password"
                ],
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 8
                  }
                }
              }
            }
          },
          "description": "The input of login function",
          "required": true
        },
        "operationId": "IamController.login"
      }
    },
    "/iam/me": {
      "get": {
        "x-controller-name": "IamController",
        "x-operation-name": "printCurrentUser",
        "tags": [
          "IamController"
        ],
        "responses": {
          "200": {
            "description": "The current user profile"
          }
        },
        "operationId": "IamController.printCurrentUser"
      }
    },
    "/iam/register": {
      "post": {
        "x-controller-name": "IamController",
        "x-operation-name": "create",
        "tags": [
          "IamController"
        ],
        "responses": {
          "200": {
            "description": "Token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserIAM"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "email",
                  "password"
                ],
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 8
                  },
                  "name": {
                    "type": "string"
                  },
                  "lastName": {
                    "type": "string"
                  },
                  "nickname": {
                    "type": "string"
                  },
                  "imgUser": {
                    "type": "string"
                  },
                  "telephone": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "description": "The input of registration function",
          "required": true
        },
        "operationId": "IamController.create"
      }
    },
    "/iam/reset-password/finish": {
      "put": {
        "x-controller-name": "IamController",
        "x-operation-name": "resetPasswordFinish",
        "tags": [
          "IamController"
        ],
        "responses": {
          "200": {
            "description": "Return value of IamController.resetPasswordFinish"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KeyAndPassword"
              }
            }
          }
        },
        "operationId": "IamController.resetPasswordFinish"
      }
    },
    "/iam/reset-password/init": {
      "post": {
        "x-controller-name": "IamController",
        "x-operation-name": "resetPasswordInit",
        "tags": [
          "IamController"
        ],
        "responses": {
          "200": {
            "description": "Return value of IamController.resetPasswordInit"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordInit"
              }
            }
          }
        },
        "operationId": "IamController.resetPasswordInit"
      }
    },
    "/iam/validate": {
      "patch": {
        "x-controller-name": "IamController",
        "x-operation-name": "activateAccount",
        "tags": [
          "IamController"
        ],
        "responses": {
          "200": {
            "description": "Activate users account"
          }
        },
        "operationId": "IamController.activateAccount"
      }
    },
    "/infraestucture-settings": {
      "get": {
        "x-controller-name": "InfraestructureSettingsController",
        "x-operation-name": "find",
        "tags": [
          "InfraestructureSettingsController"
        ],
        "responses": {
          "200": {
            "description": "Information of the diferents elements that are part of the hole application like the app version or the api version",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InfraestuctureSettings"
                  }
                }
              }
            }
          }
        },
        "operationId": "InfraestructureSettingsController.find"
      }
    },
    "/installations/me": {
      "get": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "getInstallationsByCurrentUser",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "200": {
            "description": "Instalaciones para un socorrista",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InstallationWithRelations"
                  }
                }
              }
            }
          }
        },
        "operationId": "InstallationController.getInstallationsByCurrentUser"
      }
    },
    "/installations/{idInstallation}": {
      "patch": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "updateById",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "204": {
            "description": "Installations PATCH success"
          }
        },
        "parameters": [
          {
            "name": "idInstallation",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InstallationPartial"
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "InstallationController.updateById"
      }
    },
    "/installations/{id}": {
      "get": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "getInstallationById",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "200": {
            "description": "Instalaciones pºara un socorrista",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InstallationWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "InstallationController.getInstallationById"
      },
      "delete": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "deleteById",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Installation DELETE success"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "InstallationController.deleteById"
      }
    },
    "/installations/{idUser}": {
      "get": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "getInstallationsByUser",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "200": {
            "description": "Instalaciones para un socorrista",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InstallationWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "idUser",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "InstallationController.getInstallationsByUser"
      }
    },
    "/installations": {
      "post": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "createInstallation",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "200": {
            "description": "Create a new installation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Installation"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Installation"
              }
            }
          }
        },
        "operationId": "InstallationController.createInstallation"
      },
      "get": {
        "x-controller-name": "InstallationController",
        "x-operation-name": "find",
        "tags": [
          "InstallationController"
        ],
        "responses": {
          "200": {
            "description": "Array of Installation model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InstallationWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Installation.Filter"
                }
              }
            }
          }
        ],
        "operationId": "InstallationController.find"
      }
    },
    "/legal-texts": {
      "patch": {
        "x-controller-name": "LegalTextsController",
        "x-operation-name": "updateById",
        "tags": [
          "LegalTextsController"
        ],
        "responses": {
          "204": {
            "description": "Legal Texts PATCH success"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LegalTextsPartialExcluding_idLegalText_"
              }
            }
          }
        },
        "operationId": "LegalTextsController.updateById"
      },
      "get": {
        "x-controller-name": "LegalTextsController",
        "x-operation-name": "find",
        "tags": [
          "LegalTextsController"
        ],
        "responses": {
          "200": {
            "description": "Array of Legal Texts model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LegalTextsWithRelations"
                  }
                }
              }
            }
          }
        },
        "operationId": "LegalTextsController.find"
      }
    },
    "/payroll/me": {
      "get": {
        "x-controller-name": "PayrollController",
        "x-operation-name": "getPayrollByCurrentUser",
        "tags": [
          "PayrollController"
        ],
        "responses": {
          "200": {
            "description": "Payroll para un socorrista",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayrollWithRelations"
                  }
                }
              }
            }
          }
        },
        "operationId": "PayrollController.getPayrollByCurrentUser"
      }
    },
    "/payroll/{idPayroll}": {
      "patch": {
        "x-controller-name": "PayrollController",
        "x-operation-name": "updateById",
        "tags": [
          "PayrollController"
        ],
        "responses": {
          "204": {
            "description": "Payroll PATCH success"
          }
        },
        "parameters": [
          {
            "name": "idPayroll",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayrollPartial"
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "PayrollController.updateById"
      },
      "delete": {
        "x-controller-name": "PayrollController",
        "x-operation-name": "deleteById",
        "tags": [
          "PayrollController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Payroll DELETE success"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "idPayroll",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "PayrollController.deleteById"
      }
    },
    "/payroll/{idUser}": {
      "get": {
        "x-controller-name": "PayrollController",
        "x-operation-name": "getPayrollByUser",
        "tags": [
          "PayrollController"
        ],
        "responses": {
          "200": {
            "description": "Payroll para un socorrista",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayrollWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "idUser",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "PayrollController.getPayrollByUser"
      }
    },
    "/payroll": {
      "post": {
        "x-controller-name": "PayrollController",
        "x-operation-name": "createPayroll",
        "tags": [
          "PayrollController"
        ],
        "responses": {
          "200": {
            "description": "Create a new payroll",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payroll"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Payroll"
              }
            }
          }
        },
        "operationId": "PayrollController.createPayroll"
      },
      "get": {
        "x-controller-name": "PayrollController",
        "x-operation-name": "find",
        "tags": [
          "PayrollController"
        ],
        "responses": {
          "200": {
            "description": "Array of Payroll model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PayrollWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payroll.Filter"
                }
              }
            }
          }
        ],
        "operationId": "PayrollController.find"
      }
    },
    "/uploadFilesMultiPart": {
      "post": {
        "x-controller-name": "MediaController",
        "x-operation-name": "uploadFile",
        "tags": [
          "MediaController"
        ],
        "responses": {
          "200": {
            "description": "Post model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Attachment"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "x-parser": "stream",
              "schema": {
                "type": "object"
              }
            }
          },
          "description": "multipart/form-data",
          "required": true
        },
        "operationId": "MediaController.uploadFile"
      }
    },
    "/user/enabled/migrate": {
      "post": {
        "x-controller-name": "UserController",
        "x-operation-name": "migrateUsers",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "User DELETE success"
          }
        },
        "operationId": "UserController.migrateUsers"
      }
    },
    "/user/enabled/{id}": {
      "patch": {
        "x-controller-name": "UserController",
        "x-operation-name": "updateActiveById",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "User DELETE success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  }
                }
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "UserController.updateActiveById"
      }
    },
    "/user/me": {
      "patch": {
        "x-controller-name": "UserController",
        "x-operation-name": "updateLoggedUser",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "Update all the information related with the logged user"
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "userIAM": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "format": "email"
                      }
                    }
                  },
                  "userFeatures": {
                    "$ref": "#/components/schemas/UserFeaturesPartialExcluding_idUser_"
                  },
                  "userSettings": {
                    "$ref": "#/components/schemas/UserSettingsPartialExcluding_idUser_"
                  }
                }
              }
            }
          },
          "description": "The input of registration function",
          "required": true
        },
        "operationId": "UserController.updateLoggedUser"
      },
      "get": {
        "x-controller-name": "UserController",
        "x-operation-name": "printCurrentUser",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "The current user profile",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserFeaturesWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserFeatures.Filter"
                }
              }
            }
          }
        ],
        "operationId": "UserController.printCurrentUser"
      },
      "delete": {
        "x-controller-name": "UserController",
        "x-operation-name": "deleteLoggedUser",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "User DELETE success"
          }
        },
        "operationId": "UserController.deleteLoggedUser"
      }
    },
    "/user/{id}": {
      "patch": {
        "x-controller-name": "UserController",
        "x-operation-name": "updateById",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "Update all the information related with the user"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "userIAM": {
                    "type": "object",
                    "properties": {
                      "email": {
                        "type": "string",
                        "format": "email"
                      }
                    }
                  },
                  "userFeatures": {
                    "$ref": "#/components/schemas/UserFeaturesPartialExcluding_idUser_"
                  },
                  "userSettings": {
                    "$ref": "#/components/schemas/UserSettingsPartialExcluding_idUser_"
                  }
                }
              }
            }
          },
          "description": "The input of registration function",
          "required": true,
          "x-parameter-index": 1
        },
        "operationId": "UserController.updateById"
      },
      "get": {
        "x-controller-name": "UserController",
        "x-operation-name": "findById",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "All the information related with the user (filter --> relation with userSettings & userIAM)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserFeaturesWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserFeatures.Filter"
                }
              }
            }
          }
        ],
        "operationId": "UserController.findById"
      },
      "delete": {
        "x-controller-name": "UserController",
        "x-operation-name": "deleteById",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "User DELETE success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "UserController.deleteById"
      }
    },
    "/user-settings/{id}": {
      "patch": {
        "x-controller-name": "UserSettingsController",
        "x-operation-name": "updateById",
        "tags": [
          "UserSettingsController"
        ],
        "responses": {
          "204": {
            "description": "UserSettings PATCH success"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserSettingsPartial"
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "UserSettingsController.updateById"
      },
      "get": {
        "x-controller-name": "UserSettingsController",
        "x-operation-name": "findById",
        "tags": [
          "UserSettingsController"
        ],
        "responses": {
          "200": {
            "description": "UserSettings model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserSettings"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "UserSettingsController.findById"
      }
    },
    "/users": {
      "get": {
        "x-controller-name": "UserController",
        "x-operation-name": "find",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Array with all the users information (filter --> relation with userSettings & userIAM)"
          }
        },
        "operationId": "UserController.find"
      }
    },
    "/work-sessions/day-summary/all": {
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "getWorkdaySummaryAll",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Resumen de jornada laboral por usuario para una fecha específica",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "userId": {
                        "type": "string"
                      },
                      "date": {
                        "type": "string",
                        "format": "date"
                      },
                      "workedMinutes": {
                        "type": "number"
                      },
                      "remainingMinutes": {
                        "type": "number"
                      },
                      "workdayDurationHours": {
                        "type": "number"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "WorkSessionController.getWorkdaySummaryAll"
      }
    },
    "/work-sessions/event-calendar/substitute": {
      "patch": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "createOrUpdateEventCalendar",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "WorkSession PATCH success"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "oldUserId": {
                    "type": "string"
                  },
                  "typeEventCalendarOldUser": {
                    "type": "string",
                    "enum": [
                      "Jornada Completa",
                      "Media Jornada Mañana",
                      "Media Jornada Tarde"
                    ],
                    "default": "work"
                  },
                  "oldInstallationId": {
                    "type": "string"
                  },
                  "newUserId": {
                    "type": "string"
                  },
                  "typeEventCalendarNewUser": {
                    "type": "string",
                    "enum": [
                      "Día asuntos propios",
                      "Falta",
                      "Día Libre",
                      "Baja",
                      "Vacaciones",
                      "Jornada Completa",
                      "Media Jornada Mañana",
                      "Media Jornada Tarde"
                    ],
                    "default": "work"
                  },
                  "newInstallationId": {
                    "type": "string"
                  }
                },
                "required": [
                  "date",
                  "oldUserId",
                  "newUserId",
                  "typeEventCalendarOldUser",
                  "typeEventCalendarNewUser",
                  "oldInstallationId"
                ]
              }
            }
          }
        },
        "operationId": "WorkSessionController.createOrUpdateEventCalendar"
      }
    },
    "/work-sessions/event-calendar/{date}": {
      "patch": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "updateEventCalendar",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "WorkSession PATCH success"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkSessionPartialExcluding_idWorkSession-isRunning-lastStartTime-periods-lastStartTime-date_"
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "WorkSessionController.updateEventCalendar"
      }
    },
    "/work-sessions/event-calendar/{userId}": {
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "findBet",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Array of WorkSession model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkSessionWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "dateFrom",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dateTo",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "WorkSessionController.findBet"
      }
    },
    "/work-sessions/time-summary/all": {
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "getTimeSummaryForAll",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Resumen de tiempo trabajado por socorrista y día",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "userId": {
                        "type": "string"
                      },
                      "date": {
                        "type": "string",
                        "format": "date"
                      },
                      "workTimeInMinutes": {
                        "type": "number"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "operationId": "WorkSessionController.getTimeSummaryForAll"
      }
    },
    "/work-sessions/{userId}/day-summary": {
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "getWorkdaySummary",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Resumen de jornada laboral por fecha",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "date": {
                      "type": "string",
                      "format": "date"
                    },
                    "workedMinutes": {
                      "type": "number"
                    },
                    "remainingMinutes": {
                      "type": "number"
                    },
                    "workdayDurationHours": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "WorkSessionController.getWorkdaySummary"
      }
    },
    "/work-sessions/{userId}/time-summary": {
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "getTimeSummaryByUser",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Resumen de tiempo trabajado por día para un socorrista",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "date": {
                        "type": "string",
                        "format": "date"
                      },
                      "workTimeInMinutes": {
                        "type": "number"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "WorkSessionController.getTimeSummaryByUser"
      }
    },
    "/work-sessions/{id}": {
      "patch": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "updateById",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "WorkSession PATCH success"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkSessionPartial"
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "WorkSessionController.updateById"
      },
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "findById",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "WorkSession model instance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkSessionWithRelations"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkSession.Filter"
                }
              }
            }
          }
        ],
        "operationId": "WorkSessionController.findById"
      },
      "delete": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "deleteById",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "WorkSession DELETE success"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "operationId": "WorkSessionController.deleteById"
      }
    },
    "/work-sessions": {
      "post": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "startOrSwitch",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Start or switch session period",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkPeriod"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "userId": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "work",
                      "break"
                    ],
                    "default": "work"
                  },
                  "longitude": {
                    "type": "number"
                  },
                  "latitude": {
                    "type": "number"
                  },
                  "isLastPeriod": {
                    "type": "boolean",
                    "default": false
                  },
                  "installationId": {
                    "type": "string"
                  }
                },
                "required": [
                  "userId"
                ]
              }
            }
          }
        },
        "operationId": "WorkSessionController.startOrSwitch"
      },
      "patch": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "updateAll",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "WorkSession PATCH success count",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/loopback.Count"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "where",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "WorkSession.WhereFilter",
                  "additionalProperties": true,
                  "x-typescript-type": "@loopback/repository#Where<WorkSession>"
                }
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkSessionPartial"
              }
            }
          }
        },
        "operationId": "WorkSessionController.updateAll"
      },
      "get": {
        "x-controller-name": "WorkSessionController",
        "x-operation-name": "find",
        "tags": [
          "WorkSessionController"
        ],
        "responses": {
          "200": {
            "description": "Array of WorkSession model instances",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkSessionWithRelations"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkSession.Filter1"
                }
              }
            }
          }
        ],
        "operationId": "WorkSessionController.find"
      }
    }
  },
  "servers": [
    {
      "url": "https://fysiogroup.aemeyo.com"
    }
  ],
  "components": {
    "schemas": {
      "UserIAM": {
        "title": "UserIAM",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "realm": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "emailVerified": {
            "type": "boolean"
          },
          "verificationToken": {
            "type": "string"
          },
          "idUser": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          }
        },
        "required": [
          "email",
          "idUser"
        ],
        "additionalProperties": false
      },
      "ResetPasswordInit": {
        "title": "ResetPasswordInit",
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "additionalProperties": false
      },
      "KeyAndPassword": {
        "title": "KeyAndPassword",
        "type": "object",
        "properties": {
          "resetKey": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "confirmPassword": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Attachment": {
        "title": "Attachment",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "path"
        ],
        "additionalProperties": false
      },
      "UserSettings": {
        "title": "UserSettings",
        "type": "object",
        "properties": {
          "idUser": {
            "type": "string"
          },
          "pushToken": {
            "type": "string"
          },
          "notificationsEnabled": {
            "type": "boolean"
          },
          "notifyBeforeStart": {
            "type": "boolean"
          },
          "notifyBeforeEnd": {
            "type": "boolean"
          },
          "locationChangesEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "idUser"
        ],
        "additionalProperties": false
      },
      "UserSettingsPartial": {
        "title": "UserSettingsPartial",
        "type": "object",
        "description": "(tsType: Partial<UserSettings>, schemaOptions: { partial: true })",
        "properties": {
          "idUser": {
            "type": "string"
          },
          "pushToken": {
            "type": "string"
          },
          "notificationsEnabled": {
            "type": "boolean"
          },
          "notifyBeforeStart": {
            "type": "boolean"
          },
          "notifyBeforeEnd": {
            "type": "boolean"
          },
          "locationChangesEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Partial<UserSettings>"
      },
      "UserSettingsWithRelations": {
        "title": "UserSettingsWithRelations",
        "type": "object",
        "description": "(tsType: UserSettingsWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "idUser": {
            "type": "string"
          },
          "pushToken": {
            "type": "string"
          },
          "notificationsEnabled": {
            "type": "boolean"
          },
          "notifyBeforeStart": {
            "type": "boolean"
          },
          "notifyBeforeEnd": {
            "type": "boolean"
          },
          "locationChangesEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "idUser"
        ],
        "additionalProperties": false,
        "x-typescript-type": "UserSettingsWithRelations"
      },
      "UserCredentialsWithRelations": {
        "title": "UserCredentialsWithRelations",
        "type": "object",
        "description": "(tsType: UserCredentialsWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "id": {
            "type": "string"
          },
          "password": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          }
        },
        "required": [
          "password",
          "userId"
        ],
        "additionalProperties": true,
        "x-typescript-type": "UserCredentialsWithRelations"
      },
      "UserIAMWithRelations": {
        "title": "UserIAMWithRelations",
        "type": "object",
        "description": "(tsType: UserIAMWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "id": {
            "type": "string"
          },
          "realm": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "emailVerified": {
            "type": "boolean"
          },
          "verificationToken": {
            "type": "string"
          },
          "idUser": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "userCredentials": {
            "$ref": "#/components/schemas/UserCredentialsWithRelations"
          }
        },
        "required": [
          "email",
          "idUser"
        ],
        "additionalProperties": false,
        "x-typescript-type": "UserIAMWithRelations"
      },
      "InstallationWithRelations": {
        "title": "InstallationWithRelations",
        "type": "object",
        "description": "(tsType: InstallationWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "idInstallation": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "street": {
            "type": "string"
          },
          "province": {
            "type": "string"
          },
          "municipality": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "fulltimeStartTime": {
            "type": "string"
          },
          "fulltimeEndTime": {
            "type": "string"
          },
          "fulltimeBreakTime": {
            "type": "string"
          },
          "parttimeStartTime": {
            "type": "string"
          },
          "parttimeEndTime": {
            "type": "string"
          },
          "parttimeAfternoonStartTime": {
            "type": "string"
          },
          "parttimeAfternoonEndTime": {
            "type": "string"
          },
          "startSeasonDate": {
            "type": "string",
            "format": "date-time"
          },
          "endSeasonDate": {
            "type": "string",
            "format": "date-time"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserFeaturesWithRelations"
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "InstallationWithRelations"
      },
      "PayrollWithRelations": {
        "title": "PayrollWithRelations",
        "type": "object",
        "description": "(tsType: PayrollWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "idPayroll": {
            "type": "string"
          },
          "idUser": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "documentUrl": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "PayrollWithRelations"
      },
      "UserFeaturesWithRelations": {
        "title": "UserFeaturesWithRelations",
        "type": "object",
        "description": "(tsType: UserFeaturesWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "idUser": {
            "type": "string"
          },
          "imgUser": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "nickname": {
            "type": "string"
          },
          "telephone": {
            "type": "number"
          },
          "dni": {
            "type": "string"
          },
          "birthDate": {
            "type": "string",
            "format": "date-time"
          },
          "legalGenre": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "province": {
            "type": "string"
          },
          "municipality": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "jobTitle": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "contractType": {
            "type": "string"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "iban": {
            "type": "string"
          },
          "socialSecurityNumber": {
            "type": "string"
          },
          "workdayDurationHours": {
            "type": "number",
            "minimum": 1,
            "maximum": 24
          },
          "workShift": {
            "type": "string"
          },
          "imgDNIFront": {
            "type": "string"
          },
          "imgDNIBack": {
            "type": "string"
          },
          "contractUrl": {
            "type": "string"
          },
          "lifeguardLicenseUrl": {
            "type": "string"
          },
          "medicalCertificateUrl": {
            "type": "string"
          },
          "riskPreventionCourseUrl": {
            "type": "string"
          },
          "authorizationMinorUrl": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "userSettings": {
            "$ref": "#/components/schemas/UserSettingsWithRelations"
          },
          "user": {
            "$ref": "#/components/schemas/UserIAMWithRelations"
          },
          "installations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallationWithRelations"
            }
          },
          "payrolls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PayrollWithRelations"
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "UserFeaturesWithRelations"
      },
      "UserFeaturesPartialExcluding_idUser_": {
        "title": "UserFeaturesPartialExcluding_idUser_",
        "type": "object",
        "description": "(tsType: Omit<Partial<UserFeatures>, 'idUser'>, schemaOptions: { exclude: [ 'idUser' ], partial: true })",
        "properties": {
          "imgUser": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "nickname": {
            "type": "string"
          },
          "telephone": {
            "type": "number"
          },
          "dni": {
            "type": "string"
          },
          "birthDate": {
            "type": "string",
            "format": "date-time"
          },
          "legalGenre": {
            "type": "string"
          },
          "address": {
            "type": "string"
          },
          "province": {
            "type": "string"
          },
          "municipality": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "jobTitle": {
            "type": "string"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "contractType": {
            "type": "string"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "iban": {
            "type": "string"
          },
          "socialSecurityNumber": {
            "type": "string"
          },
          "workdayDurationHours": {
            "type": "number",
            "minimum": 1,
            "maximum": 24
          },
          "workShift": {
            "type": "string"
          },
          "imgDNIFront": {
            "type": "string"
          },
          "imgDNIBack": {
            "type": "string"
          },
          "contractUrl": {
            "type": "string"
          },
          "lifeguardLicenseUrl": {
            "type": "string"
          },
          "medicalCertificateUrl": {
            "type": "string"
          },
          "riskPreventionCourseUrl": {
            "type": "string"
          },
          "authorizationMinorUrl": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<Partial<UserFeatures>, 'idUser'>"
      },
      "UserSettingsPartialExcluding_idUser_": {
        "title": "UserSettingsPartialExcluding_idUser_",
        "type": "object",
        "description": "(tsType: Omit<Partial<UserSettings>, 'idUser'>, schemaOptions: { exclude: [ 'idUser' ], partial: true })",
        "properties": {
          "pushToken": {
            "type": "string"
          },
          "notificationsEnabled": {
            "type": "boolean"
          },
          "notifyBeforeStart": {
            "type": "boolean"
          },
          "notifyBeforeEnd": {
            "type": "boolean"
          },
          "locationChangesEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<Partial<UserSettings>, 'idUser'>"
      },
      "InfraestuctureSettings": {
        "title": "InfraestuctureSettings",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "appVersion": {
            "type": "string"
          },
          "apiVersion": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "WorkPeriod": {
        "title": "WorkPeriod",
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "start": {
            "type": "string",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "format": "date-time"
          },
          "type": {
            "type": "string",
            "enum": [
              "work",
              "break"
            ]
          },
          "longitude": {
            "type": "number"
          },
          "latitude": {
            "type": "number"
          }
        },
        "required": [
          "start"
        ],
        "additionalProperties": false
      },
      "WorkSessionWithRelations": {
        "title": "WorkSessionWithRelations",
        "type": "object",
        "description": "(tsType: WorkSessionWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "idWorkSession": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkPeriod"
            }
          },
          "isRunning": {
            "type": "boolean"
          },
          "lastStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "installationId": {
            "type": "string"
          },
          "typeEventCalendar": {
            "type": "string"
          }
        },
        "required": [
          "userId",
          "date",
          "periods"
        ],
        "additionalProperties": false,
        "x-typescript-type": "WorkSessionWithRelations"
      },
      "WorkSessionPartialExcluding_idWorkSession-isRunning-lastStartTime-periods-lastStartTime-date_": {
        "title": "WorkSessionPartialExcluding_idWorkSession-isRunning-lastStartTime-periods-lastStartTime-date_",
        "type": "object",
        "description": "(tsType: Omit<Partial<WorkSession>, 'idWorkSession' | 'isRunning' | 'lastStartTime' | 'periods' | 'lastStartTime' | 'date'>, schemaOptions: { partial: true, exclude: [ 'idWorkSession', 'isRunning', 'lastStartTime', 'periods', 'lastStartTime', 'date' ] })",
        "properties": {
          "userId": {
            "type": "string"
          },
          "installationId": {
            "type": "string"
          },
          "typeEventCalendar": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<Partial<WorkSession>, 'idWorkSession' | 'isRunning' | 'lastStartTime' | 'periods' | 'lastStartTime' | 'date'>"
      },
      "WorkSession": {
        "title": "WorkSession",
        "type": "object",
        "properties": {
          "idWorkSession": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkPeriod"
            }
          },
          "isRunning": {
            "type": "boolean"
          },
          "lastStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "installationId": {
            "type": "string"
          },
          "typeEventCalendar": {
            "type": "string"
          }
        },
        "required": [
          "userId",
          "date",
          "periods"
        ],
        "additionalProperties": false
      },
      "WorkSessionPartial": {
        "title": "WorkSessionPartial",
        "type": "object",
        "description": "(tsType: Partial<WorkSession>, schemaOptions: { partial: true })",
        "properties": {
          "idWorkSession": {
            "type": "string"
          },
          "userId": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkPeriod"
            }
          },
          "isRunning": {
            "type": "boolean"
          },
          "lastStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "installationId": {
            "type": "string"
          },
          "typeEventCalendar": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Partial<WorkSession>"
      },
      "Installation": {
        "title": "Installation",
        "type": "object",
        "properties": {
          "idInstallation": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "street": {
            "type": "string"
          },
          "province": {
            "type": "string"
          },
          "municipality": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "fulltimeStartTime": {
            "type": "string"
          },
          "fulltimeEndTime": {
            "type": "string"
          },
          "fulltimeBreakTime": {
            "type": "string"
          },
          "parttimeStartTime": {
            "type": "string"
          },
          "parttimeEndTime": {
            "type": "string"
          },
          "parttimeAfternoonStartTime": {
            "type": "string"
          },
          "parttimeAfternoonEndTime": {
            "type": "string"
          },
          "startSeasonDate": {
            "type": "string",
            "format": "date-time"
          },
          "endSeasonDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "InstallationPartial": {
        "title": "InstallationPartial",
        "type": "object",
        "description": "(tsType: Partial<Installation>, schemaOptions: { partial: true })",
        "properties": {
          "idInstallation": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "street": {
            "type": "string"
          },
          "province": {
            "type": "string"
          },
          "municipality": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          },
          "fulltimeStartTime": {
            "type": "string"
          },
          "fulltimeEndTime": {
            "type": "string"
          },
          "fulltimeBreakTime": {
            "type": "string"
          },
          "parttimeStartTime": {
            "type": "string"
          },
          "parttimeEndTime": {
            "type": "string"
          },
          "parttimeAfternoonStartTime": {
            "type": "string"
          },
          "parttimeAfternoonEndTime": {
            "type": "string"
          },
          "startSeasonDate": {
            "type": "string",
            "format": "date-time"
          },
          "endSeasonDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Partial<Installation>"
      },
      "Payroll": {
        "title": "Payroll",
        "type": "object",
        "properties": {
          "idPayroll": {
            "type": "string"
          },
          "idUser": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "documentUrl": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "PayrollPartial": {
        "title": "PayrollPartial",
        "type": "object",
        "description": "(tsType: Partial<Payroll>, schemaOptions: { partial: true })",
        "properties": {
          "idPayroll": {
            "type": "string"
          },
          "idUser": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "documentUrl": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Partial<Payroll>"
      },
      "LegalTextsPartialExcluding_idLegalText_": {
        "title": "LegalTextsPartialExcluding_idLegalText_",
        "type": "object",
        "description": "(tsType: Omit<Partial<LegalTexts>, 'idLegalText'>, schemaOptions: { partial: true, exclude: [ 'idLegalText' ] })",
        "properties": {
          "privacyPolicy": {
            "type": "string"
          },
          "dataProtectionPolicy": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<Partial<LegalTexts>, 'idLegalText'>"
      },
      "LegalTextsWithRelations": {
        "title": "LegalTextsWithRelations",
        "type": "object",
        "description": "(tsType: LegalTextsWithRelations, schemaOptions: { includeRelations: true })",
        "properties": {
          "idLegalText": {
            "type": "string"
          },
          "privacyPolicy": {
            "type": "string"
          },
          "dataProtectionPolicy": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "LegalTextsWithRelations"
      },
      "Installation.ScopeFilter": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            ]
          },
          "include": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false,
        "title": "Installation.ScopeFilter"
      },
      "Installation.IncludeFilter.Items": {
        "title": "Installation.IncludeFilter.Items",
        "type": "object",
        "properties": {
          "relation": {
            "type": "string",
            "enum": [
              "users"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/Installation.ScopeFilter"
          }
        }
      },
      "Installation.Filter": {
        "type": "object",
        "title": "Installation.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "title": "Installation.WhereFilter",
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "idInstallation": {
                    "type": "boolean"
                  },
                  "type": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "boolean"
                  },
                  "street": {
                    "type": "boolean"
                  },
                  "province": {
                    "type": "boolean"
                  },
                  "municipality": {
                    "type": "boolean"
                  },
                  "postalCode": {
                    "type": "boolean"
                  },
                  "country": {
                    "type": "boolean"
                  },
                  "latitude": {
                    "type": "boolean"
                  },
                  "longitude": {
                    "type": "boolean"
                  },
                  "fulltimeStartTime": {
                    "type": "boolean"
                  },
                  "fulltimeEndTime": {
                    "type": "boolean"
                  },
                  "fulltimeBreakTime": {
                    "type": "boolean"
                  },
                  "parttimeStartTime": {
                    "type": "boolean"
                  },
                  "parttimeEndTime": {
                    "type": "boolean"
                  },
                  "parttimeAfternoonStartTime": {
                    "type": "boolean"
                  },
                  "parttimeAfternoonEndTime": {
                    "type": "boolean"
                  },
                  "startSeasonDate": {
                    "type": "boolean"
                  },
                  "endSeasonDate": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "idInstallation",
                    "type",
                    "name",
                    "street",
                    "province",
                    "municipality",
                    "postalCode",
                    "country",
                    "latitude",
                    "longitude",
                    "fulltimeStartTime",
                    "fulltimeEndTime",
                    "fulltimeBreakTime",
                    "parttimeStartTime",
                    "parttimeEndTime",
                    "parttimeAfternoonStartTime",
                    "parttimeAfternoonEndTime",
                    "startSeasonDate",
                    "endSeasonDate"
                  ],
                  "example": "idInstallation"
                },
                "uniqueItems": true
              }
            ],
            "title": "Installation.Fields"
          },
          "include": {
            "title": "Installation.IncludeFilter",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Installation.IncludeFilter.Items"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<Installation>"
      },
      "Payroll.Filter": {
        "type": "object",
        "title": "Payroll.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "title": "Payroll.WhereFilter",
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "idPayroll": {
                    "type": "boolean"
                  },
                  "idUser": {
                    "type": "boolean"
                  },
                  "date": {
                    "type": "boolean"
                  },
                  "documentUrl": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "idPayroll",
                    "idUser",
                    "date",
                    "documentUrl"
                  ],
                  "example": "idPayroll"
                },
                "uniqueItems": true
              }
            ],
            "title": "Payroll.Fields"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<Payroll>"
      },
      "UserFeatures.ScopeFilter": {
        "type": "object",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "uniqueItems": true
              }
            ]
          },
          "include": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": false,
        "title": "UserFeatures.ScopeFilter"
      },
      "UserFeatures.IncludeFilter.Items": {
        "title": "UserFeatures.IncludeFilter.Items",
        "type": "object",
        "properties": {
          "relation": {
            "type": "string",
            "enum": [
              "userSettings",
              "user",
              "installations",
              "payrolls"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/UserFeatures.ScopeFilter"
          }
        }
      },
      "UserFeatures.Filter": {
        "type": "object",
        "title": "UserFeatures.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "title": "UserFeatures.WhereFilter",
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "idUser": {
                    "type": "boolean"
                  },
                  "imgUser": {
                    "type": "boolean"
                  },
                  "name": {
                    "type": "boolean"
                  },
                  "lastName": {
                    "type": "boolean"
                  },
                  "nickname": {
                    "type": "boolean"
                  },
                  "telephone": {
                    "type": "boolean"
                  },
                  "dni": {
                    "type": "boolean"
                  },
                  "birthDate": {
                    "type": "boolean"
                  },
                  "legalGenre": {
                    "type": "boolean"
                  },
                  "address": {
                    "type": "boolean"
                  },
                  "province": {
                    "type": "boolean"
                  },
                  "municipality": {
                    "type": "boolean"
                  },
                  "postalCode": {
                    "type": "boolean"
                  },
                  "jobTitle": {
                    "type": "boolean"
                  },
                  "startDate": {
                    "type": "boolean"
                  },
                  "contractType": {
                    "type": "boolean"
                  },
                  "endDate": {
                    "type": "boolean"
                  },
                  "iban": {
                    "type": "boolean"
                  },
                  "socialSecurityNumber": {
                    "type": "boolean"
                  },
                  "workdayDurationHours": {
                    "type": "boolean"
                  },
                  "workShift": {
                    "type": "boolean"
                  },
                  "imgDNIFront": {
                    "type": "boolean"
                  },
                  "imgDNIBack": {
                    "type": "boolean"
                  },
                  "contractUrl": {
                    "type": "boolean"
                  },
                  "lifeguardLicenseUrl": {
                    "type": "boolean"
                  },
                  "medicalCertificateUrl": {
                    "type": "boolean"
                  },
                  "riskPreventionCourseUrl": {
                    "type": "boolean"
                  },
                  "authorizationMinorUrl": {
                    "type": "boolean"
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "idUser",
                    "imgUser",
                    "name",
                    "lastName",
                    "nickname",
                    "telephone",
                    "dni",
                    "birthDate",
                    "legalGenre",
                    "address",
                    "province",
                    "municipality",
                    "postalCode",
                    "jobTitle",
                    "startDate",
                    "contractType",
                    "endDate",
                    "iban",
                    "socialSecurityNumber",
                    "workdayDurationHours",
                    "workShift",
                    "imgDNIFront",
                    "imgDNIBack",
                    "contractUrl",
                    "lifeguardLicenseUrl",
                    "medicalCertificateUrl",
                    "riskPreventionCourseUrl",
                    "authorizationMinorUrl",
                    "enabled"
                  ],
                  "example": "idUser"
                },
                "uniqueItems": true
              }
            ],
            "title": "UserFeatures.Fields"
          },
          "include": {
            "title": "UserFeatures.IncludeFilter",
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/UserFeatures.IncludeFilter.Items"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<UserFeatures>"
      },
      "WorkSession.Filter": {
        "type": "object",
        "title": "WorkSession.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "idWorkSession": {
                    "type": "boolean"
                  },
                  "userId": {
                    "type": "boolean"
                  },
                  "date": {
                    "type": "boolean"
                  },
                  "periods": {
                    "type": "boolean"
                  },
                  "isRunning": {
                    "type": "boolean"
                  },
                  "lastStartTime": {
                    "type": "boolean"
                  },
                  "installationId": {
                    "type": "boolean"
                  },
                  "typeEventCalendar": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "idWorkSession",
                    "userId",
                    "date",
                    "periods",
                    "isRunning",
                    "lastStartTime",
                    "installationId",
                    "typeEventCalendar"
                  ],
                  "example": "idWorkSession"
                },
                "uniqueItems": true
              }
            ],
            "title": "WorkSession.Fields"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<WorkSession>"
      },
      "loopback.Count": {
        "type": "object",
        "title": "loopback.Count",
        "x-typescript-type": "@loopback/repository#Count",
        "properties": {
          "count": {
            "type": "number"
          }
        }
      },
      "WorkSession.Filter1": {
        "type": "object",
        "title": "WorkSession.Filter",
        "properties": {
          "offset": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "example": 100
          },
          "skip": {
            "type": "integer",
            "minimum": 0
          },
          "order": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          },
          "where": {
            "title": "WorkSession.WhereFilter",
            "type": "object",
            "additionalProperties": true
          },
          "fields": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "idWorkSession": {
                    "type": "boolean"
                  },
                  "userId": {
                    "type": "boolean"
                  },
                  "date": {
                    "type": "boolean"
                  },
                  "periods": {
                    "type": "boolean"
                  },
                  "isRunning": {
                    "type": "boolean"
                  },
                  "lastStartTime": {
                    "type": "boolean"
                  },
                  "installationId": {
                    "type": "boolean"
                  },
                  "typeEventCalendar": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "idWorkSession",
                    "userId",
                    "date",
                    "periods",
                    "isRunning",
                    "lastStartTime",
                    "installationId",
                    "typeEventCalendar"
                  ],
                  "example": "idWorkSession"
                },
                "uniqueItems": true
              }
            ],
            "title": "WorkSession.Fields"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "@loopback/repository#Filter<WorkSession>"
      }
    },
    "securitySchemes": {
      "jwt": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "jwt": []
    }
  ]
}