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
  github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest:
    properties:
      documents:
        additionalProperties: true
        type: object
      email:
        type: string
      jobId:
        type: integer
      lineId:
        type: string
      message:
        type: string
      name:
        type: string
      phone:
        type: string
      resumeUrl:
        type: string
      userId:
        type: integer
      whatsapp:
        type: string
    required:
    - jobId
    type: object
  github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest:
    properties:
      benefits:
        additionalProperties: true
        type: object
      cityId:
        type: integer
      companyId:
        type: integer
      description:
        minLength: 20
        type: string
      employmentType:
        enum:
        - full-time
        - part-time
        - dispatch
        - contract
        type: string
      languageLevel:
        type: string
      location:
        type: string
      regionId:
        type: integer
      requirements:
        additionalProperties: true
        type: object
      salaryMax:
        type: number
      salaryMin:
        type: number
      salaryType:
        enum:
        - hourly
        - monthly
        - yearly
        type: string
      status:
        enum:
        - draft
        - open
        - closed
        type: string
      title:
        maxLength: 255
        minLength: 5
        type: string
      visaSupport:
        type: boolean
      workingHours:
        type: string
    required:
    - companyId
    - description
    - title
    type: object
  github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse:
    properties:
      data: {}
      pagination:
        $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.Pagination'
    type: object
  github_com_rede5_gohorsejobs_backend_internal_dto.Pagination:
    properties:
      limit:
        type: integer
      page:
        type: integer
      total:
        type: integer
    type: object
  github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest:
    properties:
      notes:
        type: string
      status:
        enum:
        - pending
        - reviewed
        - shortlisted
        - rejected
        - hired
        type: string
    required:
    - status
    type: object
  github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest:
    properties:
      benefits:
        additionalProperties: true
        type: object
      cityId:
        type: integer
      description:
        minLength: 20
        type: string
      employmentType:
        enum:
        - full-time
        - part-time
        - dispatch
        - contract
        type: string
      languageLevel:
        type: string
      location:
        type: string
      regionId:
        type: integer
      requirements:
        additionalProperties: true
        type: object
      salaryMax:
        type: number
      salaryMin:
        type: number
      salaryType:
        enum:
        - hourly
        - monthly
        - yearly
        type: string
      status:
        enum:
        - draft
        - open
        - closed
        type: string
      title:
        maxLength: 255
        minLength: 5
        type: string
      visaSupport:
        type: boolean
      workingHours:
        type: string
    type: object
  github_com_rede5_gohorsejobs_backend_internal_models.Application:
    properties:
      createdAt:
        description: Metadata
        type: string
      documents:
        allOf:
        - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap'
        description: Array of {type, url}
      email:
        type: string
      id:
        type: integer
      jobId:
        type: integer
      lineId:
        type: string
      message:
        description: Application Content
        type: string
      name:
        description: Applicant Info (for guest applications)
        type: string
      notes:
        type: string
      phone:
        type: string
      resumeUrl:
        type: string
      status:
        description: Status & Notes
        type: string
      updatedAt:
        type: string
      userId:
        description: NULL for guest applications
        type: integer
      whatsapp:
        type: string
    type: object
  github_com_rede5_gohorsejobs_backend_internal_models.JSONMap:
    additionalProperties: true
    type: object
  github_com_rede5_gohorsejobs_backend_internal_models.Job:
    properties:
      benefits:
        $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap'
      cityId:
        type: integer
      companyId:
        type: integer
      createdAt:
        description: Metadata
        type: string
      createdBy:
        type: integer
      description:
        type: string
      employmentType:
        description: Employment
        type: string
      id:
        type: integer
      isFeatured:
        description: Featured job flag
        type: boolean
      languageLevel:
        description: N5-N1, beginner, none
        type: string
      location:
        description: Location
        type: string
      regionId:
        type: integer
      requirements:
        allOf:
        - $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.JSONMap'
        description: Requirements & Benefits (JSONB arrays)
      salaryMax:
        type: number
      salaryMin:
        description: Salary
        type: number
      salaryType:
        description: hourly, monthly, yearly
        type: string
      status:
        description: Status
        type: string
      title:
        description: Job Details
        type: string
      updatedAt:
        type: string
      visaSupport:
        description: Visa & Language
        type: boolean
      workingHours:
        type: string
    type: object
  internal_admin_cloudflare.Error:
    properties:
      code:
        type: integer
      message:
        type: string
    type: object
  internal_admin_cloudflare.PurgeHostsRequest:
    properties:
      hosts:
        items:
          type: string
        type: array
    type: object
  internal_admin_cloudflare.PurgeResponse:
    properties:
      errors:
        items:
          $ref: '#/definitions/internal_admin_cloudflare.Error'
        type: array
      messages:
        items:
          type: string
        type: array
      result:
        properties:
          id:
            type: string
        type: object
      success:
        type: boolean
    type: object
  internal_admin_cloudflare.PurgeTagsRequest:
    properties:
      tags:
        items:
          type: string
        type: array
    type: object
  internal_admin_cloudflare.PurgeURLsRequest:
    properties:
      urls:
        items:
          type: string
        type: array
    type: object
  internal_admin_cloudflare.Zone:
    properties:
      id:
        type: string
      name:
        type: string
      status:
        type: string
    type: object
  internal_admin_cpanel.ChangePasswordRequest:
    properties:
      password:
        type: string
    type: object
  internal_admin_cpanel.CreateEmailRequest:
    properties:
      email:
        type: string
      password:
        type: string
      quota:
        description: MB, 0 = unlimited
        type: integer
    type: object
  internal_admin_cpanel.EmailAccount:
    properties:
      diskquota:
        type: string
      diskused:
        type: string
      domain:
        type: string
      email:
        type: string
      humandiskquota:
        type: string
      humandiskused:
        type: string
      login:
        type: string
    type: object
  internal_admin_cpanel.UpdateQuotaRequest:
    properties:
      quota:
        description: MB
        type: integer
    type: object
  internal_handlers.DownloadURLRequest:
    properties:
      key:
        type: string
    type: object
  internal_handlers.DownloadURLResponse:
    properties:
      downloadUrl:
        type: string
      expiresIn:
        description: seconds
        type: integer
    type: object
  internal_handlers.UploadURLRequest:
    properties:
      contentType:
        type: string
      filename:
        type: string
      folder:
        description: 'Optional: logos, resumes, documents'
        type: string
    type: object
  internal_handlers.UploadURLResponse:
    properties:
      expiresIn:
        description: seconds
        type: integer
      key:
        type: string
      publicUrl:
        type: string
      uploadUrl:
        type: string
    type: object
host: localhost:8080
info:
  contact: {}
  description: API for GoHorseJobs recruitment platform.
  title: GoHorseJobs API
  version: "1.0"
paths:
  /api/v1/admin/cloudflare/cache/purge-all:
    post:
      consumes:
      - application/json
      description: Purges all cached content for the configured zone
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse'
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Purge All Cache
      tags:
      - Admin - Cloudflare
  /api/v1/admin/cloudflare/cache/purge-hosts:
    post:
      consumes:
      - application/json
      description: Purges content by hostnames
      parameters:
      - description: Hosts to purge
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/internal_admin_cloudflare.PurgeHostsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Purge Cache by Hosts
      tags:
      - Admin - Cloudflare
  /api/v1/admin/cloudflare/cache/purge-tags:
    post:
      consumes:
      - application/json
      description: Purges content by cache tags (Enterprise only)
      parameters:
      - description: Tags to purge
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/internal_admin_cloudflare.PurgeTagsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Purge Cache by Tags
      tags:
      - Admin - Cloudflare
  /api/v1/admin/cloudflare/cache/purge-urls:
    post:
      consumes:
      - application/json
      description: Purges specific URLs from cache
      parameters:
      - description: URLs to purge
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/internal_admin_cloudflare.PurgeURLsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/internal_admin_cloudflare.PurgeResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Purge Cache by URLs
      tags:
      - Admin - Cloudflare
  /api/v1/admin/cloudflare/zones:
    get:
      consumes:
      - application/json
      description: Returns all zones associated with the Cloudflare account
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/internal_admin_cloudflare.Zone'
            type: array
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: List Cloudflare Zones
      tags:
      - Admin - Cloudflare
  /api/v1/admin/cpanel/emails:
    get:
      consumes:
      - application/json
      description: Returns all email accounts for the cPanel account
      parameters:
      - description: Filter by domain
        in: query
        name: domain
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/internal_admin_cpanel.EmailAccount'
            type: array
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: List Email Accounts
      tags:
      - Admin - cPanel
    post:
      consumes:
      - application/json
      description: Creates a new email account
      parameters:
      - description: Email details
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/internal_admin_cpanel.CreateEmailRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Create Email Account
      tags:
      - Admin - cPanel
  /api/v1/admin/cpanel/emails/{email}:
    delete:
      consumes:
      - application/json
      description: Deletes an email account
      parameters:
      - description: Email address
        in: path
        name: email
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Delete Email Account
      tags:
      - Admin - cPanel
  /api/v1/admin/cpanel/emails/{email}/password:
    put:
      consumes:
      - application/json
      description: Changes the password for an email account
      parameters:
      - description: Email address
        in: path
        name: email
        required: true
        type: string
      - description: New password
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/internal_admin_cpanel.ChangePasswordRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Change Email Password
      tags:
      - Admin - cPanel
  /api/v1/admin/cpanel/emails/{email}/quota:
    put:
      consumes:
      - application/json
      description: Updates the disk quota for an email account
      parameters:
      - description: Email address
        in: path
        name: email
        required: true
        type: string
      - description: New quota in MB
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/internal_admin_cpanel.UpdateQuotaRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Update Email Quota
      tags:
      - Admin - cPanel
  /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/storage/download-url:
    post:
      consumes:
      - application/json
      description: Generate a pre-signed URL to download a private file from S3
      parameters:
      - description: Download request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/internal_handlers.DownloadURLRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/internal_handlers.DownloadURLResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Generate download URL
      tags:
      - Storage
  /api/v1/storage/files:
    delete:
      consumes:
      - application/json
      description: Delete a stored file by key
      parameters:
      - description: File key
        in: query
        name: key
        required: true
        type: string
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Delete file
      tags:
      - Storage
  /api/v1/storage/upload-url:
    post:
      consumes:
      - application/json
      description: Generate a pre-signed URL to upload a file to S3
      parameters:
      - description: Upload request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/internal_handlers.UploadURLRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/internal_handlers.UploadURLResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - BearerAuth: []
      summary: Generate upload URL
      tags:
      - Storage
  /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
  /applications:
    get:
      consumes:
      - application/json
      description: List all applications for a job
      parameters:
      - description: Filter applications by job ID
        in: query
        name: jobId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            items:
              $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application'
            type: array
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: List Applications
      tags:
      - Applications
    post:
      consumes:
      - application/json
      description: Submit a new job application for a posting
      parameters:
      - description: Application data
        in: body
        name: application
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateApplicationRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: Create Application
      tags:
      - Applications
  /applications/{id}:
    get:
      consumes:
      - application/json
      description: Retrieve a job application by its ID
      parameters:
      - description: Application ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application'
        "400":
          description: Bad Request
          schema:
            type: string
        "404":
          description: Not Found
          schema:
            type: string
      summary: Get Application
      tags:
      - Applications
  /applications/{id}/status:
    put:
      consumes:
      - application/json
      description: Update the status of a job application
      parameters:
      - description: Application ID
        in: path
        name: id
        required: true
        type: integer
      - description: Status update
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateApplicationStatusRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Application'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: Update Application Status
      tags:
      - Applications
  /jobs:
    get:
      consumes:
      - application/json
      description: Get a paginated list of job postings with optional filters
      parameters:
      - description: 'Page number (default: 1)'
        in: query
        name: page
        type: integer
      - description: 'Items per page (default: 10, max: 100)'
        in: query
        name: limit
        type: integer
      - description: Filter by company ID
        in: query
        name: companyId
        type: integer
      - description: Filter by featured status
        in: query
        name: featured
        type: boolean
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.PaginatedResponse'
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: List all jobs
      tags:
      - Jobs
    post:
      consumes:
      - application/json
      description: Create a new job posting
      parameters:
      - description: Job data
        in: body
        name: job
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.CreateJobRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: Create a new job
      tags:
      - Jobs
  /jobs/{id}:
    delete:
      consumes:
      - application/json
      description: Delete a job posting
      parameters:
      - description: Job ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: Delete a job
      tags:
      - Jobs
    get:
      consumes:
      - application/json
      description: Get a single job posting by its ID
      parameters:
      - description: Job ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job'
        "400":
          description: Bad Request
          schema:
            type: string
        "404":
          description: Not Found
          schema:
            type: string
      summary: Get job by ID
      tags:
      - Jobs
    put:
      consumes:
      - application/json
      description: Update an existing job posting
      parameters:
      - description: Job ID
        in: path
        name: id
        required: true
        type: integer
      - description: Updated job data
        in: body
        name: job
        required: true
        schema:
          $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_dto.UpdateJobRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/github_com_rede5_gohorsejobs_backend_internal_models.Job'
        "400":
          description: Bad Request
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      summary: Update a job
      tags:
      - Jobs
swagger: "2.0"
