{
  "openapi": "3.0.0",
  "info": {
    "title": "fast-erp",
    "version": "0.0.1",
    "description": "fast_erp_base",
    "contact": {}
  },
  "paths": {
    "/attendance/day": {
      "get": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "dayBoard",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Asistencias del día"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "day",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "AttendanceController.dayBoard"
      }
    },
    "/attendance/history": {
      "get": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "history",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Historial de asistencia"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "incidentsOnly",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "operationId": "AttendanceController.history"
      }
    },
    "/attendance/incident": {
      "post": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "saveIncident",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Incidencia del día"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "incident"
                ],
                "properties": {
                  "incident": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "operationId": "AttendanceController.saveIncident"
      }
    },
    "/attendance/mark": {
      "post": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "mark",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Marca de turno"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "action",
                  "lat",
                  "lng"
                ],
                "properties": {
                  "action": {
                    "type": "string"
                  },
                  "lat": {
                    "type": "number"
                  },
                  "lng": {
                    "type": "number"
                  },
                  "accuracy": {
                    "type": "number"
                  },
                  "incident": {
                    "type": "string"
                  },
                  "photo": {
                    "type": "string"
                  },
                  "projectId": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "operationId": "AttendanceController.mark"
      }
    },
    "/attendance/today/debug": {
      "patch": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "debugToday",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Tiempo de pruebas actualizado"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "elapsedSeconds"
                ],
                "properties": {
                  "elapsedSeconds": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "operationId": "AttendanceController.debugToday"
      }
    },
    "/attendance/today": {
      "get": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "today",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Turno del día"
                }
              }
            }
          }
        },
        "operationId": "AttendanceController.today"
      },
      "delete": {
        "x-controller-name": "AttendanceController",
        "x-operation-name": "resetToday",
        "tags": [
          "AttendanceController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Día de pruebas borrado"
                }
              }
            }
          }
        },
        "operationId": "AttendanceController.resetToday"
      }
    },
    "/geo/search": {
      "get": {
        "x-controller-name": "GeoController",
        "x-operation-name": "search",
        "tags": [
          "GeoController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Lugares encontrados"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "GeoController.search"
      }
    },
    "/notices/{id}": {
      "patch": {
        "x-controller-name": "NoticeController",
        "x-operation-name": "updateById",
        "tags": [
          "NoticeController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Aviso actualizado"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title",
                  "body"
                ],
                "properties": {
                  "title": {
                    "type": "string"
                  },
                  "body": {
                    "type": "string"
                  },
                  "projectId": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "NoticeController.updateById"
      },
      "delete": {
        "x-controller-name": "NoticeController",
        "x-operation-name": "deleteById",
        "tags": [
          "NoticeController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Aviso borrado"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "operationId": "NoticeController.deleteById"
      }
    },
    "/notices": {
      "post": {
        "x-controller-name": "NoticeController",
        "x-operation-name": "create",
        "tags": [
          "NoticeController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Aviso publicado"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title",
                  "body"
                ],
                "properties": {
                  "title": {
                    "type": "string"
                  },
                  "body": {
                    "type": "string"
                  },
                  "projectId": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "operationId": "NoticeController.create"
      },
      "get": {
        "x-controller-name": "NoticeController",
        "x-operation-name": "find",
        "tags": [
          "NoticeController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Avisos visibles"
                }
              }
            }
          }
        },
        "operationId": "NoticeController.find"
      }
    },
    "/ping": {
      "get": {
        "x-controller-name": "PingController",
        "x-operation-name": "ping",
        "tags": [
          "PingController"
        ],
        "responses": {
          "200": {
            "description": "Ping Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PingResponse"
                }
              }
            }
          }
        },
        "operationId": "PingController.ping"
      }
    },
    "/projects/{id}": {
      "patch": {
        "x-controller-name": "ProjectController",
        "x-operation-name": "updateById",
        "tags": [
          "ProjectController"
        ],
        "responses": {
          "200": {
            "description": "Proyecto actualizado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "areaType"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "areaType": {
                    "type": "string"
                  },
                  "centerLat": {
                    "type": "number"
                  },
                  "centerLng": {
                    "type": "number"
                  },
                  "radiusMeters": {
                    "type": "number"
                  },
                  "polygon": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "lat": {
                          "type": "number"
                        },
                        "lng": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  "workStart": {
                    "type": "string"
                  },
                  "workEnd": {
                    "type": "string"
                  },
                  "active": {
                    "type": "boolean"
                  }
                }
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "ProjectController.updateById"
      },
      "delete": {
        "x-controller-name": "ProjectController",
        "x-operation-name": "deleteById",
        "tags": [
          "ProjectController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Proyecto dado de baja"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "operationId": "ProjectController.deleteById"
      }
    },
    "/projects": {
      "post": {
        "x-controller-name": "ProjectController",
        "x-operation-name": "create",
        "tags": [
          "ProjectController"
        ],
        "responses": {
          "200": {
            "description": "Proyecto creado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Project"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "areaType"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "areaType": {
                    "type": "string"
                  },
                  "centerLat": {
                    "type": "number"
                  },
                  "centerLng": {
                    "type": "number"
                  },
                  "radiusMeters": {
                    "type": "number"
                  },
                  "polygon": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "lat": {
                          "type": "number"
                        },
                        "lng": {
                          "type": "number"
                        }
                      }
                    }
                  },
                  "workStart": {
                    "type": "string"
                  },
                  "workEnd": {
                    "type": "string"
                  },
                  "active": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "operationId": "ProjectController.create"
      },
      "get": {
        "x-controller-name": "ProjectController",
        "x-operation-name": "find",
        "tags": [
          "ProjectController"
        ],
        "responses": {
          "200": {
            "description": "Listado de proyectos",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Project"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "operationId": "ProjectController.find"
      }
    },
    "/roles": {
      "get": {
        "x-controller-name": "RoleController",
        "x-operation-name": "find",
        "tags": [
          "RoleController"
        ],
        "responses": {
          "200": {
            "description": "Listado de roles disponibles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Role"
                  }
                }
              }
            }
          }
        },
        "operationId": "RoleController.find"
      }
    },
    "/settings/public": {
      "get": {
        "x-controller-name": "SettingController",
        "x-operation-name": "findPublic",
        "tags": [
          "SettingController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Ajustes públicos para la pantalla de acceso"
                }
              }
            }
          }
        },
        "operationId": "SettingController.findPublic"
      }
    },
    "/settings": {
      "patch": {
        "x-controller-name": "SettingController",
        "x-operation-name": "updateById",
        "tags": [
          "SettingController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Configuración actualizada"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "portalUrl": {
                    "type": "string"
                  },
                  "loginMode": {
                    "type": "string"
                  },
                  "smtpHost": {
                    "type": "string"
                  },
                  "smtpPort": {
                    "type": "number"
                  },
                  "smtpUser": {
                    "type": "string"
                  },
                  "smtpPassword": {
                    "type": "string"
                  },
                  "smtpSecure": {
                    "type": "boolean"
                  },
                  "testMode": {
                    "type": "boolean"
                  },
                  "testModeMail": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "operationId": "SettingController.updateById"
      },
      "get": {
        "x-controller-name": "SettingController",
        "x-operation-name": "find",
        "tags": [
          "SettingController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Configuración del sistema"
                }
              }
            }
          }
        },
        "operationId": "SettingController.find"
      }
    },
    "/users/forgot-password": {
      "post": {
        "x-controller-name": "UserController",
        "x-operation-name": "forgotPassword",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Solicitud de restablecimiento recibida"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "mail"
                ],
                "properties": {
                  "mail": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "operationId": "UserController.forgotPassword"
      }
    },
    "/users/login": {
      "post": {
        "x-controller-name": "UserController",
        "x-operation-name": "login",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Token de acceso y datos del usuario autenticado",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "token": {
                      "type": "string"
                    },
                    "expiresIn": {
                      "type": "number"
                    },
                    "user": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "password"
                ],
                "properties": {
                  "login": {
                    "type": "string"
                  },
                  "mail": {
                    "type": "string"
                  },
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "operationId": "UserController.login"
      }
    },
    "/users/me/password": {
      "post": {
        "x-controller-name": "UserController",
        "x-operation-name": "changeOwnPassword",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contraseña actualizada"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "currentPassword",
                  "newPassword"
                ],
                "properties": {
                  "currentPassword": {
                    "type": "string"
                  },
                  "newPassword": {
                    "type": "string",
                    "minLength": 6
                  }
                }
              }
            }
          }
        },
        "operationId": "UserController.changeOwnPassword"
      }
    },
    "/users/me": {
      "patch": {
        "x-controller-name": "UserController",
        "x-operation-name": "updateProfile",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Perfil actualizado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "lastname": {
                    "type": "string"
                  },
                  "birthday": {
                    "type": "string"
                  },
                  "photo": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "operationId": "UserController.updateProfile"
      },
      "get": {
        "x-controller-name": "UserController",
        "x-operation-name": "readProfile",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Perfil del usuario autenticado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileResponse"
                }
              }
            }
          }
        },
        "operationId": "UserController.readProfile"
      }
    },
    "/users/register": {
      "post": {
        "x-controller-name": "UserController",
        "x-operation-name": "register",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Usuario registrado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "mail",
                  "password",
                  "roleId",
                  "username"
                ],
                "properties": {
                  "mail": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 6
                  },
                  "roleId": {
                    "type": "number"
                  },
                  "username": {
                    "type": "string",
                    "minLength": 1
                  },
                  "name": {
                    "type": "string"
                  },
                  "lastname": {
                    "type": "string"
                  },
                  "projectId": {
                    "type": "number"
                  },
                  "projectIds": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "operationId": "UserController.register"
      }
    },
    "/users/reset-password": {
      "post": {
        "x-controller-name": "UserController",
        "x-operation-name": "resetPassword",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Contraseña restablecida"
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "token",
                  "password"
                ],
                "properties": {
                  "token": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 6
                  }
                }
              }
            }
          }
        },
        "operationId": "UserController.resetPassword"
      }
    },
    "/users/{id}/role": {
      "get": {
        "x-controller-name": "UserRoleController",
        "x-operation-name": "getRole",
        "tags": [
          "UserRoleController"
        ],
        "responses": {
          "200": {
            "description": "Role belonging to User",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Role"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "operationId": "UserRoleController.getRole"
      }
    },
    "/users/{id}": {
      "patch": {
        "x-controller-name": "UserController",
        "x-operation-name": "updateById",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Usuario actualizado",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponse"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mail": {
                    "type": "string",
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "minLength": 6
                  },
                  "username": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "lastname": {
                    "type": "string"
                  },
                  "roleId": {
                    "type": "number"
                  },
                  "active": {
                    "type": "boolean"
                  },
                  "projectId": {
                    "type": "number"
                  },
                  "projectIds": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          },
          "x-parameter-index": 1
        },
        "operationId": "UserController.updateById"
      },
      "delete": {
        "x-controller-name": "UserController",
        "x-operation-name": "deleteById",
        "tags": [
          "UserController"
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Usuario dado de baja"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "schema": {
              "type": "number"
            },
            "required": true
          }
        ],
        "operationId": "UserController.deleteById"
      }
    },
    "/users": {
      "get": {
        "x-controller-name": "UserController",
        "x-operation-name": "find",
        "tags": [
          "UserController"
        ],
        "responses": {
          "200": {
            "description": "Listado paginado de usuarios",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "number"
                    },
                    "skip": {
                      "type": "number"
                    },
                    "limit": {
                      "type": "number"
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserListItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "roleId",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "active",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "number"
            }
          }
        ],
        "operationId": "UserController.find"
      }
    }
  },
  "servers": [
    {
      "url": "https://www.sae-api.acceso.sv"
    }
  ],
  "components": {
    "schemas": {
      "UserResponse": {
        "title": "UserResponse",
        "type": "object",
        "description": "(tsType: Omit<User, 'password'>, schemaOptions: { title: 'UserResponse', exclude: [ 'password' ] })",
        "properties": {
          "id": {
            "type": "number"
          },
          "username": {
            "type": "string"
          },
          "initialPassword": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastname": {
            "type": "string"
          },
          "mail": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "birthday": {
            "type": "string"
          },
          "photo": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "active": {
            "type": "boolean"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "roleId": {
            "type": "object"
          },
          "projectId": {
            "type": "object"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<User, 'password'>"
      },
      "UserListItem": {
        "title": "UserListItem",
        "type": "object",
        "description": "(tsType: Omit<User, 'password'>, schemaOptions: { title: 'UserListItem', exclude: [ 'password' ] })",
        "properties": {
          "id": {
            "type": "number"
          },
          "username": {
            "type": "string"
          },
          "initialPassword": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastname": {
            "type": "string"
          },
          "mail": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "birthday": {
            "type": "string"
          },
          "photo": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "active": {
            "type": "boolean"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "roleId": {
            "type": "object"
          },
          "projectId": {
            "type": "object"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<User, 'password'>"
      },
      "ProfileResponse": {
        "title": "ProfileResponse",
        "type": "object",
        "description": "(tsType: Omit<User, 'password'>, schemaOptions: { title: 'ProfileResponse', exclude: [ 'password' ] })",
        "properties": {
          "id": {
            "type": "number"
          },
          "username": {
            "type": "string"
          },
          "initialPassword": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lastname": {
            "type": "string"
          },
          "mail": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "birthday": {
            "type": "string"
          },
          "photo": {
            "type": "string"
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "active": {
            "type": "boolean"
          },
          "isDeleted": {
            "type": "boolean"
          },
          "roleId": {
            "type": "object"
          },
          "projectId": {
            "type": "object"
          }
        },
        "additionalProperties": false,
        "x-typescript-type": "Omit<User, 'password'>"
      },
      "Role": {
        "title": "Role",
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "nickname": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Project": {
        "title": "Project",
        "type": "object",
        "properties": {
          "id": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "areaType": {
            "type": "string"
          },
          "centerLat": {
            "type": "number"
          },
          "centerLng": {
            "type": "number"
          },
          "radiusMeters": {
            "type": "number"
          },
          "polygonJson": {
            "type": "string"
          },
          "workStart": {
            "type": "string"
          },
          "workEnd": {
            "type": "string"
          },
          "active": {
            "type": "boolean"
          },
          "isDeleted": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "areaType"
        ],
        "additionalProperties": false
      },
      "PingResponse": {
        "type": "object",
        "title": "PingResponse",
        "properties": {
          "greeting": {
            "type": "string"
          },
          "date": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "properties": {
              "Content-Type": {
                "type": "string"
              }
            },
            "additionalProperties": true
          }
        }
      }
    }
  }
}