openapi: 3.0.3
info:
  title: Repzo API - Workorder Agenda
  version: 1.0.0
  description: OpenAPI specification for Repzo Workorder Agenda endpoints.
servers:
  - url: https://sv.api.repzo.me
paths:
  /workorder-agenda:
    get:
      summary: Find workorder agenda
      operationId: findWorkorderAgenda
      parameters:
        - in: query
          name: from_due_date
          required: true
          schema:
            type: integer
          description: Start timestamp for filtering workorders
        - in: query
          name: to_due_date
          required: true
          schema:
            type: integer
          description: End timestamp for filtering workorders
        - in: query
          name: client
          schema:
            type: array
            items:
              type: string
          description: Filter by client IDs
        - in: query
          name: disabled
          required: true
          schema:
            type: boolean
          description: Include disabled workorders
        - in: query
          name: day_per_page
          schema:
            type: integer
          description: Number of days per page
        - in: query
          name: day_page
          schema:
            type: integer
          description: Day page number
        - in: query
          name: day
          schema:
            type: string
          description: Filter by specific day (YYYY-MM-DD format)
        - in: query
          name: client_location
          schema:
            type: array
            items:
              type: string
          description: Filter by client location IDs
        - in: query
          name: workorder_categories
          schema:
            type: array
            items:
              type: string
          description: Filter by workorder category IDs
        - in: query
          name: status
          schema:
            oneOf:
              - type: string
              - type: array
                items:
                  type: string
          description: Filter by workorder status
        - in: query
          name: priority_human
          schema:
            oneOf:
              - type: string
              - type: array
                items:
                  type: string
          description: Filter by workorder priority
        - in: query
          name: assets
          schema:
            type: array
            items:
              type: string
          description: Filter by asset IDs
        - in: query
          name: asset_units
          schema:
            type: array
            items:
              type: string
          description: Filter by asset unit IDs
        - in: query
          name: contract
          schema:
            type: array
            items:
              type: string
          description: Filter by contract IDs
        - in: query
          name: assigned_to
          schema:
            type: array
            items:
              type: string
          description: Filter by assigned user IDs
        - in: query
          name: from_createdAt
          schema:
            type: integer
          description: Filter from creation timestamp
        - in: query
          name: to_createdAt
          schema:
            type: integer
          description: Filter to creation timestamp
        - in: query
          name: _id
          required: true
          schema:
            oneOf:
              - type: string
              - type: array
                items:
                  type: string
          description: Workorder ID(s)
        - in: query
          name: page
          schema:
            type: integer
            default: 1
          description: Page number
        - in: query
          name: per_page
          schema:
            type: integer
            default: 50
          description: Items per page
      responses:
        "200":
          description: Workorder agenda data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WorkorderAgendaFindResult"
components:
  schemas:
    WorkorderAgendaFindResult:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: "#/components/schemas/WorkorderAgendaData"
        meta:
          type: object
          properties:
            day_current_page:
              type: integer
            day_per_page:
              type: integer
            total_result:
              type: integer
            current_count:
              type: integer
            total_pages:
              type: integer
    WorkorderAgendaData:
      type: object
      properties:
        day:
          type: string
          description: Date in YYYY-MM-DD format
        day_total_result:
          type: integer
          description: Total number of workorders for this day
        day_current_count:
          type: integer
          description: Current count of workorders shown for this day
        day_total_pages:
          type: integer
          description: Total number of pages for this day
        workorders:
          type: array
          items:
            oneOf:
              - $ref: "#/components/schemas/OriginWorkorder"
              - $ref: "#/components/schemas/PlanedWorkorder"
    BaseWorkorder:
      type: object
      properties:
        name:
          type: string
          description: Workorder name
        client:
          type: string
          description: Client ID
        client_populated:
          type: object
          properties:
            _id:
              type: string
            name:
              type: string
            local_name:
              type: string
            client_code:
              type: string
        createdAt:
          type: string
          format: date-time
          description: Creation timestamp
    OriginWorkorder:
      allOf:
        - $ref: "#/components/schemas/BaseWorkorder"
        - type: object
          properties:
            _id:
              type: string
              description: Workorder ID
            status:
              type: string
              description: Workorder status
            is_planed:
              type: boolean
              enum: [false]
            due_date:
              type: integer
              description: Due date timestamp
            start_date:
              type: integer
              description: Start date timestamp
            parent_workorder:
              type: "null"
    PlanedWorkorder:
      allOf:
        - $ref: "#/components/schemas/BaseWorkorder"
        - type: object
          properties:
            _id:
              type: "null"
            status:
              type: "null"
            is_planed:
              type: boolean
              enum: [true]
            due_date:
              type: "null"
            start_date:
              type: "null"
            parent_workorder:
              type: string
              description: Parent workorder ID
