{
  "openapi": "3.0.4",
  "info": {
    "title": "NAWD.API",
    "version": "1.0"
  },
  "paths": {
    "/api/admin/code-tables": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/job-categories": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Administration"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCategoryCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/job-categories/{id}": {
      "put": {
        "tags": [
          "Administration"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCategoryUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/job-sub-categories": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Administration"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobSubCategoryCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/job-sub-categories/{id}": {
      "put": {
        "tags": [
          "Administration"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobSubCategoryUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/employer-types": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Administration"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerTypeCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/employer-types/{id}": {
      "put": {
        "tags": [
          "Administration"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerTypeUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/skill-levels": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Administration"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkillLevelCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/skill-levels/{id}": {
      "put": {
        "tags": [
          "Administration"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SkillLevelUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/transport-availabilities": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Administration"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CodeTransportAvailabilityCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/transport-availabilities/{id}": {
      "put": {
        "tags": [
          "Administration"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CodeTransportAvailabilityUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/work-radii": {
      "get": {
        "tags": [
          "Administration"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Administration"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkRadiusCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/admin/work-radii/{id}": {
      "put": {
        "tags": [
          "Administration"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkRadiusUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/login": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/register": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/users": {
      "get": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/roles": {
      "get": {
        "tags": [
          "Auth"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/assign-roles": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRolesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/auth/change-password": {
      "post": {
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ChangePasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/dashboard": {
      "get": {
        "tags": [
          "Dashboard"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/password-reset/request": {
      "post": {
        "tags": [
          "Employer Portal"
        ],
        "operationId": "RequestEmployerPortalPasswordReset",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/password-reset/complete": {
      "post": {
        "tags": [
          "Employer Portal"
        ],
        "operationId": "CompleteEmployerPortalPasswordReset",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetCompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/register": {
      "post": {
        "tags": [
          "Employer Portal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerPortalRegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/login": {
      "post": {
        "tags": [
          "Employer Portal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerPortalLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/options": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/profile": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/jobs": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Employer Portal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerPortalJobRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/jobs/{jobId}": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "Employer Portal"
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerPortalJobRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/jobs/{jobId}/close": {
      "post": {
        "tags": [
          "Employer Portal"
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/workers": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categoryId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "parishId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "experienceRangeId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 12
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/workers/{workerId}": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "parameters": [
          {
            "name": "workerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employer-portal/workers/{workerId}/photo": {
      "get": {
        "tags": [
          "Employer Portal"
        ],
        "parameters": [
          {
            "name": "workerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employers": {
      "get": {
        "tags": [
          "Employers"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Employers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employers/{id}": {
      "get": {
        "tags": [
          "Employers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "Employers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Employers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employers/{id}/photo": {
      "post": {
        "tags": [
          "Employers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerPhotoUploadDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employers/verification/pending": {
      "get": {
        "tags": [
          "Employers"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/employers/{id}/verification": {
      "post": {
        "tags": [
          "Employers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmployerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/inclusion": {
      "get": {
        "tags": [
          "Inclusion"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/jobs": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "employerId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "statusId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/jobs/{id}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/jobs/{id}/poster": {
      "post": {
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobPosterUploadDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/matching/job/{jobId}": {
      "get": {
        "tags": [
          "Matching"
        ],
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/": {
      "get": {
        "tags": [
          "NAWD.API"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/ratings/workers": {
      "get": {
        "tags": [
          "Ratings"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Ratings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerRatingCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/ratings/employers": {
      "get": {
        "tags": [
          "Ratings"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Ratings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmployerRatingCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reports/workers-by-parish": {
      "get": {
        "tags": [
          "Reports"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reports/workers-by-skill-category": {
      "get": {
        "tags": [
          "Reports"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reports/verified-vs-unverified": {
      "get": {
        "tags": [
          "Reports"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/reports/inclusion-summary": {
      "get": {
        "tags": [
          "Reports"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/analytics/events": {
      "post": {
        "tags": [
          "User Analytics"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserAnalyticsCaptureRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/analytics/admin/events": {
      "get": {
        "tags": [
          "User Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "sourceApplication",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "route",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/analytics/admin/summary": {
      "get": {
        "tags": [
          "User Analytics"
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "sourceApplication",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "route",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/password-reset/request": {
      "post": {
        "tags": [
          "Worker Portal"
        ],
        "operationId": "RequestWorkerPortalPasswordReset",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/password-reset/complete": {
      "post": {
        "tags": [
          "Worker Portal"
        ],
        "operationId": "CompleteWorkerPortalPasswordReset",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PortalPasswordResetCompletionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/register": {
      "post": {
        "tags": [
          "Worker Portal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerPortalRegisterRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/login": {
      "post": {
        "tags": [
          "Worker Portal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerPortalLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/options": {
      "get": {
        "tags": [
          "Worker Portal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/profile": {
      "get": {
        "tags": [
          "Worker Portal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Worker Portal"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerPortalProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/worker-portal/profile/photo": {
      "post": {
        "tags": [
          "Worker Portal"
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "photo"
                ],
                "type": "object",
                "properties": {
                  "photo": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "photo": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Worker Portal"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers": {
      "get": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "post": {
        "tags": [
          "Workers"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/{id}": {
      "get": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/{id}/photo": {
      "post": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "photo"
                ],
                "type": "object",
                "properties": {
                  "photo": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              },
              "encoding": {
                "photo": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/{id}/skills": {
      "post": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkerSkillCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/{id}/skills/{skillId}": {
      "delete": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "skillId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/verification/pending": {
      "get": {
        "tags": [
          "Workers"
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/{id}/review": {
      "post": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/workers/{id}/verification": {
      "post": {
        "tags": [
          "Workers"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyWorkerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AssignRolesRequest": {
        "required": [
          "email",
          "fullName",
          "roles"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "fullName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "ChangePasswordRequest": {
        "required": [
          "email",
          "newPassword"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "newPassword": {
            "minLength": 8,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CodeTransportAvailabilityCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CodeTransportAvailabilityUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CreateRoleRequest": {
        "required": [
          "roleName"
        ],
        "type": "object",
        "properties": {
          "roleName": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EmployerCreateDto": {
        "required": [
          "businessName",
          "contactPerson",
          "emailAddress",
          "extensionIdx",
          "parishIdx",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "updatedDate": {
            "type": "integer",
            "format": "int32"
          },
          "businessName": {
            "minLength": 1,
            "type": "string"
          },
          "contactPerson": {
            "minLength": 1,
            "type": "string"
          },
          "phoneNumber": {
            "minLength": 1,
            "type": "string"
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "parishIdx": {
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "type": "integer",
            "format": "int32"
          },
          "employerTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "radaNo": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployerPhotoUploadDto": {
        "required": [
          "contentType",
          "photoBase64"
        ],
        "type": "object",
        "properties": {
          "contentType": {
            "minLength": 1,
            "type": "string"
          },
          "photoBase64": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EmployerPortalJobRequest": {
        "required": [
          "description",
          "jobTitle"
        ],
        "type": "object",
        "properties": {
          "jobTitle": {
            "maxLength": 150,
            "minLength": 3,
            "type": "string"
          },
          "jobCategoryId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "jobSubCategoryId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "maxLength": 4000,
            "minLength": 20,
            "type": "string"
          },
          "numberOfWorkersNeeded": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "startTime": {
            "type": "string",
            "format": "time"
          },
          "endTime": {
            "type": "string",
            "format": "time"
          },
          "parishIdx": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "requiredExperienceYears": {
            "maximum": 70,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "accessibilityFriendlyYN": {
            "type": "boolean"
          },
          "youthOpportunityYN": {
            "type": "boolean"
          },
          "femaleYouthOpportunityYN": {
            "type": "boolean"
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EmployerPortalLoginRequest": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "password": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EmployerPortalRegisterRequest": {
        "required": [
          "address",
          "businessName",
          "confirmPassword",
          "contactPerson",
          "email",
          "password",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "businessName": {
            "maxLength": 200,
            "minLength": 2,
            "type": "string"
          },
          "contactPerson": {
            "maxLength": 200,
            "minLength": 2,
            "type": "string"
          },
          "email": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "phoneNumber": {
            "minLength": 1,
            "pattern": "^[0-9+() -]{7,20}$",
            "type": "string"
          },
          "address": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "parishIdx": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "employerTypeId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "radaNo": {
            "maxLength": 60,
            "type": "string",
            "nullable": true
          },
          "password": {
            "maxLength": 128,
            "minLength": 10,
            "type": "string"
          },
          "confirmPassword": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "acceptTerms": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "EmployerRatingCreateDto": {
        "type": "object",
        "properties": {
          "employerId": {
            "type": "integer",
            "format": "int32"
          },
          "workerId": {
            "type": "integer",
            "format": "int32"
          },
          "rating": {
            "type": "integer",
            "format": "int32"
          },
          "comments": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmployerTypeCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EmployerTypeUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EmployerUpdateDto": {
        "required": [
          "businessName",
          "contactPerson",
          "emailAddress",
          "extensionIdx",
          "parishIdx",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "updatedDate": {
            "type": "integer",
            "format": "int32"
          },
          "businessName": {
            "minLength": 1,
            "type": "string"
          },
          "contactPerson": {
            "minLength": 1,
            "type": "string"
          },
          "phoneNumber": {
            "minLength": 1,
            "type": "string"
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "parishIdx": {
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "type": "integer",
            "format": "int32"
          },
          "employerTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "radaNo": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "JobCategoryCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "JobCategoryUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "JobCreateDto": {
        "required": [
          "description",
          "employerId",
          "endDate",
          "endTime",
          "extensionIdx",
          "jobCategoryId",
          "jobSubCategoryId",
          "jobTitle",
          "numberOfWorkersNeeded",
          "parishIdx",
          "startDate",
          "startTime"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "updatedDate": {
            "type": "integer",
            "format": "int32"
          },
          "employerId": {
            "type": "integer",
            "format": "int32"
          },
          "jobTitle": {
            "minLength": 1,
            "type": "string"
          },
          "jobCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "jobSubCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "minLength": 1,
            "type": "string"
          },
          "numberOfWorkersNeeded": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "startTime": {
            "type": "string",
            "format": "time"
          },
          "endTime": {
            "type": "string",
            "format": "time"
          },
          "parishIdx": {
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "type": "integer",
            "format": "int32"
          },
          "requiredExperienceYears": {
            "type": "integer",
            "format": "int32"
          },
          "accessibilityFriendlyYN": {
            "type": "boolean"
          },
          "youthOpportunityYN": {
            "type": "boolean"
          },
          "femaleYouthOpportunityYN": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "JobPosterUploadDto": {
        "required": [
          "contentType",
          "photoBase64"
        ],
        "type": "object",
        "properties": {
          "contentType": {
            "minLength": 1,
            "type": "string"
          },
          "photoBase64": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "JobSubCategoryCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "jobCategoryId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "JobSubCategoryUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "jobCategoryId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "JobUpdateDto": {
        "required": [
          "description",
          "employerId",
          "endDate",
          "endTime",
          "extensionIdx",
          "jobCategoryId",
          "jobSubCategoryId",
          "jobTitle",
          "numberOfWorkersNeeded",
          "parishIdx",
          "startDate",
          "startTime"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "updatedDate": {
            "type": "integer",
            "format": "int32"
          },
          "employerId": {
            "type": "integer",
            "format": "int32"
          },
          "jobTitle": {
            "minLength": 1,
            "type": "string"
          },
          "jobCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "jobSubCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "minLength": 1,
            "type": "string"
          },
          "numberOfWorkersNeeded": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          },
          "startTime": {
            "type": "string",
            "format": "time"
          },
          "endTime": {
            "type": "string",
            "format": "time"
          },
          "parishIdx": {
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "type": "integer",
            "format": "int32"
          },
          "requiredExperienceYears": {
            "type": "integer",
            "format": "int32"
          },
          "accessibilityFriendlyYN": {
            "type": "boolean"
          },
          "youthOpportunityYN": {
            "type": "boolean"
          },
          "femaleYouthOpportunityYN": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "LoginRequest": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "password": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "PortalPasswordResetCompletionRequest": {
        "required": [
          "confirmPassword",
          "email",
          "password",
          "token"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "token": {
            "maxLength": 4096,
            "minLength": 1,
            "type": "string"
          },
          "password": {
            "maxLength": 128,
            "minLength": 10,
            "type": "string"
          },
          "confirmPassword": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "PortalPasswordResetRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "format": "email"
          }
        },
        "additionalProperties": false
      },
      "RegisterUserRequest": {
        "required": [
          "email",
          "fullName",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "password": {
            "minLength": 8,
            "type": "string"
          },
          "fullName": {
            "minLength": 1,
            "type": "string"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SkillLevelCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "SkillLevelUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "UserAnalyticsCaptureRequest": {
        "required": [
          "eventType"
        ],
        "type": "object",
        "properties": {
          "eventType": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string"
          },
          "route": {
            "maxLength": 1024,
            "type": "string",
            "nullable": true
          },
          "clientAddress": {
            "maxLength": 64,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VerifyEmployerRequest": {
        "required": [
          "approve"
        ],
        "type": "object",
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "VerifyWorkerRequest": {
        "required": [
          "approve"
        ],
        "type": "object",
        "properties": {
          "approve": {
            "type": "boolean"
          },
          "reason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkRadiusCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "distanceKM": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WorkRadiusUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "distanceKM": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WorkerCreateDto": {
        "required": [
          "emailAddress",
          "extensionIdx",
          "firstName",
          "lastName",
          "parishIdx",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "updatedDate": {
            "type": "integer",
            "format": "int32"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "middleName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "genderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parishIdx": {
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "type": "integer",
            "format": "int32"
          },
          "phoneNumber": {
            "minLength": 1,
            "type": "string"
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "transportAvailabilityId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredWorkRadiusId": {
            "type": "integer",
            "format": "int32"
          },
          "isYouth": {
            "type": "boolean"
          },
          "isFemaleYouth": {
            "type": "boolean"
          },
          "isPersonWithDisability": {
            "type": "boolean"
          },
          "disabilitySupportNeeds": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkerPortalLoginRequest": {
        "required": [
          "email",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "password": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "WorkerPortalProfileRequest": {
        "required": [
          "address",
          "dateOfBirth",
          "firstName",
          "lastName",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "middleName": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time"
          },
          "genderId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "parishIdx": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "maxLength": 300,
            "minLength": 1,
            "type": "string"
          },
          "phoneNumber": {
            "minLength": 1,
            "pattern": "^[0-9+() -]{7,20}$",
            "type": "string"
          },
          "trnOrNationalId": {
            "maxLength": 30,
            "type": "string",
            "nullable": true
          },
          "transportAvailabilityId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "preferredWorkRadiusId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "format": "int32"
          },
          "isPersonWithDisability": {
            "type": "boolean"
          },
          "disabilitySupportNeeds": {
            "maxLength": 500,
            "type": "string",
            "nullable": true
          },
          "consentToReview": {
            "type": "boolean"
          },
          "skills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkerPortalSkillRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkerPortalRegisterRequest": {
        "required": [
          "confirmPassword",
          "email",
          "firstName",
          "lastName",
          "password"
        ],
        "type": "object",
        "properties": {
          "email": {
            "maxLength": 256,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "password": {
            "maxLength": 128,
            "minLength": 10,
            "type": "string"
          },
          "confirmPassword": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "firstName": {
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "lastName": {
            "maxLength": 100,
            "minLength": 2,
            "type": "string"
          },
          "acceptTerms": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "WorkerPortalSkillRequest": {
        "type": "object",
        "properties": {
          "jobCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "jobSubCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "skillLevelId": {
            "type": "integer",
            "format": "int32"
          },
          "experienceRangeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "WorkerRatingCreateDto": {
        "type": "object",
        "properties": {
          "workerId": {
            "type": "integer",
            "format": "int32"
          },
          "employerId": {
            "type": "integer",
            "format": "int32"
          },
          "punctuality": {
            "type": "integer",
            "format": "int32"
          },
          "qualityOfWork": {
            "type": "integer",
            "format": "int32"
          },
          "reliability": {
            "type": "integer",
            "format": "int32"
          },
          "conduct": {
            "type": "integer",
            "format": "int32"
          },
          "comments": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkerSkillCreateDto": {
        "required": [
          "jobCategoryId",
          "jobSubCategoryId",
          "skillLevelId"
        ],
        "type": "object",
        "properties": {
          "jobCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "jobSubCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "skillLevelId": {
            "type": "integer",
            "format": "int32"
          },
          "experienceRangeId": {
            "type": "integer",
            "format": "int32"
          },
          "yearsExperience": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "certifiedYN": {
            "type": "boolean"
          },
          "certificationName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WorkerUpdateDto": {
        "required": [
          "emailAddress",
          "extensionIdx",
          "firstName",
          "lastName",
          "parishIdx",
          "phoneNumber"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "updatedDate": {
            "type": "integer",
            "format": "int32"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "middleName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "genderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parishIdx": {
            "type": "integer",
            "format": "int32"
          },
          "extensionIdx": {
            "type": "integer",
            "format": "int32"
          },
          "phoneNumber": {
            "minLength": 1,
            "type": "string"
          },
          "emailAddress": {
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "transportAvailabilityId": {
            "type": "integer",
            "format": "int32"
          },
          "preferredWorkRadiusId": {
            "type": "integer",
            "format": "int32"
          },
          "isYouth": {
            "type": "boolean"
          },
          "isFemaleYouth": {
            "type": "boolean"
          },
          "isPersonWithDisability": {
            "type": "boolean"
          },
          "disabilitySupportNeeds": {
            "type": "string",
            "nullable": true
          },
          "workerStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "trnOrNationalId": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    }
  },
  "tags": [
    {
      "name": "Administration"
    },
    {
      "name": "Auth"
    },
    {
      "name": "Dashboard"
    },
    {
      "name": "Employer Portal"
    },
    {
      "name": "Employers"
    },
    {
      "name": "Inclusion"
    },
    {
      "name": "Jobs"
    },
    {
      "name": "Matching"
    },
    {
      "name": "NAWD.API"
    },
    {
      "name": "Ratings"
    },
    {
      "name": "Reports"
    },
    {
      "name": "User Analytics"
    },
    {
      "name": "Worker Portal"
    },
    {
      "name": "Workers"
    }
  ]
}