basePath: /
definitions:
  github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse:
    properties:
      token:
        type: string
      user:
        $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse'
    type: object
  github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse:
    properties:
      created_at:
        type: string
      id:
        type: string
      name:
        type: string
      status:
        type: string
    type: object
  github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest:
    properties:
      admin_email:
        type: string
      contact:
        type: string
      document:
        type: string
      name:
        type: string
    type: object
  github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest:
    properties:
      email:
        type: string
      name:
        type: string
      password:
        type: string
      roles:
        description: e.g. ["RECRUITER"]
        items:
          type: string
        type: array
    type: object
  github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest:
    properties:
      email:
        type: string
      password:
        type: string
    type: object
  github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse:
    properties:
      created_at:
        type: string
      email:
        type: string
      id:
        type: string
      name:
        type: string
      roles:
        items:
          type: string
        type: array
      status:
        type: string
    type: object
host: localhost:8080
info:
  contact: {}
  description: API for GoHorseJobs recruitment platform.
  title: GoHorseJobs API
  version: "1.0"
paths:
  /api/v1/auth/login:
    post:
      consumes:
      - application/json
      description: Authenticates a user by email and password. Returns JWT and user
        info.
      parameters:
      - description: Login Credentials
        in: body
        name: login
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.AuthResponse'
        "400":
          description: Invalid Request
          schema:
            type: string
        "401":
          description: Unauthorized
          schema:
            type: string
      summary: User Login
      tags:
      - Auth
  /api/v1/companies:
    get:
      consumes:
      - application/json
      description: Returns a list of all companies.
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse'
            type: array
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: List Companies
      tags:
      - Companies
    post:
      consumes:
      - application/json
      description: Registers a new company and creates an initial admin user.
      parameters:
      - description: Company Details
        in: body
        name: company
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateCompanyRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CompanyResponse'
        "400":
          description: Invalid Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: Create Company (Tenant)
      tags:
      - Companies
  /api/v1/users:
    get:
      consumes:
      - application/json
      description: Returns a list of users belonging to the authenticated tenant.
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse'
            type: array
        "403":
          description: Forbidden
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: List Users
      tags:
      - Users
    post:
      consumes:
      - application/json
      description: Creates a new user under the current tenant. Requires Admin role.
      parameters:
      - description: User Details
        in: body
        name: user
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.CreateUserRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_core_dto.UserResponse'
        "400":
          description: Invalid Request
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Create User
      tags:
      - Users
  /api/v1/users/{id}:
    delete:
      consumes:
      - application/json
      description: Deletes a user by ID. Must belong to the same tenant.
      parameters:
      - description: User ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: User deleted
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Delete User
      tags:
      - Users
swagger: "2.0"
