basePath: /
definitions:
  domain.JobAnalysisResult:
    properties:
      analysisResult:
        type: string
      analyzedAt:
        type: string
      id:
        format: int64
        type: integer
      jobID:
        format: int64
        type: integer
      keySkills:
        items:
          type: string
        type: array
      matchScore:
        type: integer
      missingSkills:
        items:
          type: string
        type: array
      recommendations:
        type: string
    type: object
  domain.JobProvider:
    enum:
    - 0
    - 1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    type: integer
    x-enum-varnames:
    - LinkedIn
    - Indeed
    - Glassdoor
    - Bayt
    - TokyoDev
    - JapanDev
    - Google
    - HiringCafe
  ports.CreateJobCommand:
    properties:
      fwt:
        type: string
      keywords:
        type: string
      location:
        type: string
      numPages:
        type: integer
      provider:
        $ref: '#/definitions/domain.JobProvider'
    type: object
info:
  contact: {}
  description: API for managing job scraping operations
  title: Jobs Scraper API
  version: "1.0"
paths:
  /jobs:
    get:
      consumes:
      - application/json
      description: Gets all jobs with the provided specifications
      parameters:
      - description: Location filter
        in: query
        name: location
        type: string
      - description: Keywords filter (searches title and company)
        in: query
        name: keywords
        type: string
      - description: Full/Part time filter
        in: query
        name: fwt
        type: string
      - description: Job provider (LinkedIn=0, Indeed=1, Glassdoor=2, Bayt=3, TokyoDev=4,
          JapanDev=5, Google=6, HiringCafe=7)
        enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        in: query
        name: provider
        type: integer
      - description: Page number
        in: query
        name: pageNumber
        type: integer
      - description: Number of elements
        in: query
        name: pageSize
        type: integer
      produces:
      - application/json
      responses:
        "201":
          description: Successfully retrieved jobs
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Invalid request data
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal server error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Gets all jobs
      tags:
      - jobs
    post:
      consumes:
      - application/json
      description: Creates a new job with the provided specifications
      parameters:
      - description: Job creation data
        in: body
        name: job
        required: true
        schema:
          $ref: '#/definitions/ports.CreateJobCommand'
      produces:
      - application/json
      responses:
        "201":
          description: Successfully created job
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Invalid request data
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal server error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Create a new job
      tags:
      - jobs
  /jobs/{id}/analysis:
    get:
      description: Retrieves the analysis result for a specific job
      parameters:
      - description: Job ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Job analysis result
          schema:
            $ref: '#/definitions/domain.JobAnalysisResult'
        "400":
          description: Invalid job ID
          schema:
            additionalProperties:
              type: string
            type: object
        "404":
          description: Analysis result not found
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal server error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Get job analysis result by job ID
      tags:
      - jobs
  /jobs/analysis:
    get:
      description: Retrieves all job analysis results from the database
      produces:
      - application/json
      responses:
        "200":
          description: List of job analysis results
          schema:
            items:
              $ref: '#/definitions/domain.JobAnalysisResult'
            type: array
        "500":
          description: Internal server error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Get all job analysis results
      tags:
      - jobs
  /jobs/analysis/top-matches:
    get:
      description: Retrieves jobs with high analysis match scores
      parameters:
      - description: 'Minimum match score (default: 70)'
        in: query
        name: min_score
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: List of top matching job analysis results
          schema:
            items:
              $ref: '#/definitions/domain.JobAnalysisResult'
            type: array
        "400":
          description: Invalid minimum score
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Internal server error
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Get top matching jobs
      tags:
      - jobs
swagger: "2.0"
