openapi: 3.0.0
info:
  title: Perl5::CoreSmokeDB::API::Web - openapi 3.0
  description: |-
    This is the API for the [Perl5-CoreSmokeDB-Web](https://perl5-dev.test-smoke.org)
      Vue.js application.
  contact:
    email: abeltje@test-smoke.org
  license:
    name: Artistic License 2.0
    url: https://www.perlfoundation.org/artistic-license-20.html
  version: "1.00"
servers:
  - url: https://perl5-preview.test-smoke.org
tags:
  -
    name: misc
    description: Nothing todo with the smoke reports
  -
    name: report
    description: Single smoke report
  -
    name: reportlist
    description: List of smoke report
  -
    name: search
    description: Data to do with searching
  -
    name: system
    description: Information about the service
paths:
  /system/status:
    get:
      tags:
        - system
      summary: Current service status
      description: Get the current status of the Service
      responses:
        '200':
          description: Status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/statusRecord'
        '400':
          description: Not a valid request
  /api/version:
    get:
      tags:
        - misc
      summary: Get some versions
      description: app_version, db_version, schema_version
      operationId: rpc_version
      responses:
        '200':
          description: we have versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/version'
        '400':
          description: Not a valid request
  /api/latest:
    get:
      tags:
        - reportlist
      summary: List of latest smoke reports
      description: List of latest smoke reports per host
      operationId: rpc_latest
      responses:
        '200':
          description: A object with information of the smoke report list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reportList'
        '400':
          description: Not a valid request
  "/api/full_report_data/{reportId}":
    get:
      tags:
        - report
      summary: Get the full expanded smoke report
      description: Get the full expanded smoke report for :id
      operationId: rpc_full_report_data
      parameters:
        -
          name: reportId
          in: path
          description: the id of the report
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: We have a report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/fullReport'
        '400':
          description: Not a valid request
  /api/searchparameters:
    get:
      tags:
        - search
      summary: Get the values to fill the search form
      description: Get the values for the search form from the database
      operationId: rpc_get_search_parameters
      responses:
        '200':
          description: We have data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/searchFormValues'
        '400':
          description: Not a valid request
  /api/searchresults:
    get:
      tags:
        - search
        - reportlist
      summary: Do an actual search
      description: Get the results for the given search form values
      operationId: rpc_get_search_results
      parameters:
        -
          name: selected_arch
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: selected_osnm
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: selected_osvs
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: selected_host
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: selected_comp
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: selected_cver
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: selected_perl
          in: query
          required: false
          schema:
            type: string
            default: "latest"
        -
          name: selected_branch
          in: query
          required: false
          schema:
            type: string
            default: ""
        -
          name: andnotsel_arch
          in: query
          required: true
          schema:
            type: string
            enum:
             - "0"
             - "1"
        -
          name: andnotsel_osnm
          in: query
          required: true
          schema:
            type: string
            enum:
             - "0"
             - "1"
        -
          name: andnotsel_osvs
          in: query
          required: true
          schema:
            type: string
            enum:
             - "0"
             - "1"
        -
          name: andnotsel_host
          in: query
          required: true
          schema:
            type: string
            enum:
             - "0"
             - "1"
        -
          name: andnotsel_comp
          in: query
          required: true
          schema:
            type: string
            enum:
             - "0"
             - "1"
        -
          name: andnotsel_cver
          in: query
          required: true
          schema:
            type: string
            enum:
             - "0"
             - "1"
        -
          name: page
          in: query
          required: true
          schema:
            type: integer
            format: int64
            default: 1
        -
          name: reports_per_page
          in: query
          required: false
          schema:
            type: integer
            format: int64
            default: 25
      responses:
        '200':
          description: We have results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reportList'
        '400':
          description: Not a valid request
  "/api/reports_from_id/{reportId}":
    get:
      tags:
        - report
      summary: Get report-ids from reportId
      description: Get a list of ids, starting with reportId
      operationId: rpc_reports_from_id
      parameters:
        -
          name: reportId
          in: path
          required: true
          schema:
            type: integer
            format: int64
        -
          name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: We have a list (even empty)
          content:
            application/json:
              schema:
                type: array
                items:
                  type: integer
                  format: int64
        '400':
          description: Not a valid request
  "/api/reports_from_date/{epoch}":
    get:
      tags:
        - report
      summary: Get report-ids from epoch
      description: Get a list of ids, starting with epoch
      operationId: rpc_reports_from_epoch
      parameters:
        -
          name: epoch
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: We have a list (even empty)
          content:
            application/json:
              schema:
                type: array
                items:
                  type: integer
                  format: int64
        '400':
          description: Not a valid request
  "/api/report_data/{reportId}":
    get:
      tags:
        - report
      summary: Get the full expanded smoke report
      description: Get the full expanded smoke report for :id
      operationId: rpc_report_data
      parameters:
        -
          name: reportId
          in: path
          description: the id of the report
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: We have a report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/flatReport'
        '400':
          description: Not a valid request
components:
  schemas:
    statusRecord:
      type: object
      properties:
        dancer2:
          type: string
          example: v1.3513
        rpc_plugin:
          type: string
          example: v1.05
        active_since:
          type: string
          format: date-time
          example: 2022-09-25T20:19:29+02:00
        app_name:
          type: string
          example: Perl5::CoreSmokeDB
        hostname:
          type: string
          example: idefix
        running_pid:
          type: integer
          format: int64
          example: 74020
    version:
      type: object
      properties:
        version:
          type: string
          description: backend app version
          example: 1.00
        db_version:
          type: string
          description: (schema)version stored in the database
          example: 3
        schema_version:
          type: string
          description: schema version stored in the database handler
          example: 3
    shortReport:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 42
        architecture:
          type: string
          example: x86_64
        cpu_count:
          type: string
          example: 2[8 cores]
        cpu_description:
          type: string
          example: "AMD Ryzen 7 5700G with Radeon Graphics (3792 MHz)"
        git_describe:
          type: string
          example: v5.37.2-535-g5e0c3e4a3b
        git_id:
          type: string
          example: "58b390f21b8cbcf54ebe4dfb3786c00da473edd5"
        perl_id:
          type: string
          example: "5.31.10"
        plevel:
          type: string
          example: "5.037002zzz535"
        hostname:
          type: string
          example: lx09
        osname:
          type: string
          example: Linux
        osversion:
          type: string
          example: "5.15.0-48-generic [Ubuntu 22.04.1 LTS (jammy)]"
        smoke_branch:
          type: string
          example: blead
        smoke_date:
          type: string
          format: date-time
          example: 2022-09-16T23:25:02+02:00
        summary:
          type: string
          example: PASS
        username:
          type: string
          example: smoker
    reportList:
      type: object
      properties:
        reports:
          type: array
          items:
            $ref: '#/components/schemas/shortReport'
        report_count:
          type: integer
          format: int64
          example: 1
        latest_plevel:
          type: string
          example: "5.037002zzz535"
        rpp:
          type: integer
          format: int64
          example: 25
        page:
          type: integer
          format: int64
          example: 2
    testFailure:
      type: object
      properties:
        failure_id:
          type: integer
          format: int64
          example: 6
        result_id:
          type: integer
          format: int64
          example: 968
    testResult:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 968
        config_id:
          type: integer
          format: int64
          example: 356
        io_env:
          type: string
          example: stdio
        locale:
          type: string
          example: en_US.UTF-8
        summay:
          type: string
          example: F
        statistics:
          type: string
          example: "u=4.42  s=1.73  cu=302.89  cs=31.80  scripts=2494  tests=1174882"
        stat_cpu_time:
          type: string
          example: "333.31"
        stat_tests:
          type: integer
          format: int64
          example: 1174882
        failures:
          type: array
          items:
            $ref: '#/components/schemas/testFailure'
    cCompiler:
      type: object
      properties:
        cc:
          type: string
          example: cc
        ccversion:
          type: string
          example: "11.2.0"
        index:
          type: integer
          format: int64
          example: 1
        key:
          type: string
          example: cc##11.2.0
    testConfig:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 968
        arguments:
          type: string
          example: "-Duseithreads"
        cc:
          type: string
          example: cc
        ccversion:
          type: string
          example: "11.2.0"
        debugging:
          type: string
          enum:
            - D
            - N
        duration:
          type: integer
          format: int64
          example: 1850
        report_id:
          type: integer
          format: int64
          example: 165
        results:
          type: array
          items:
            $ref: '#/components/schemas/testResult'
    fullReport:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 42
        architecture:
          type: string
          example: x86_64
        cpu_count:
          type: string
          example: 2[8 cores]
        cpu_description:
          type: string
          example: "AMD Ryzen 7 5700G with Radeon Graphics (3792 MHz)"
        git_describe:
          type: string
          example: v5.37.2-535-g5e0c3e4a3b
        git_id:
          type: string
          example: "58b390f21b8cbcf54ebe4dfb3786c00da473edd5"
        perl_id:
          type: string
          example: "5.31.10"
        plevel:
          type: string
          example: "5.037002zzz535"
        hostname:
          type: string
          example: lx09
        osname:
          type: string
          example: Linux
        osversion:
          type: string
          example: "5.15.0-48-generic [Ubuntu 22.04.1 LTS (jammy)]"
        smoke_branch:
          type: string
          example: blead
        smoke_date:
          type: string
          format: date-time
          example: 2022-09-16T23:25:02+02:00
        summary:
          type: string
          example: PASS
        username:
          type: string
          example: smoker
        applied_patches:
          type: string
          example: SMOKE5e0c3e4a3b85ccc05e1127d901a87d55a48e5b98
        duration:
          type: integer
          format: int64
          example: 3833
        duration_in_hhmm:
          type: string
          example: "1 hour 3 minutes"
        average_in_hhmm:
          type: string
          example: "31 minutes 56 seconds"
        harness3opts:
          type: string
          example: null
        harness_only:
          type: string
          example: "0"
        lc_all:
          type: string
          example: null
        log_file:
          type: string
          example: ""
        out_file:
          type: string
          example: ""
        compiler_messages:
          type: string
          example: ""
        c_compilers:
          type: array
          items:
            $ref: '#/components/schemas/cCompiler'
        config_count:
          type: integer
          format: int64
          example: 2
        configs:
          type: array
          items:
            $ref: '#/components/schemas/testConfig'
    flatReport:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 42
        architecture:
          type: string
          example: x86_64
        cpu_count:
          type: string
          example: 2[8 cores]
        cpu_description:
          type: string
          example: "AMD Ryzen 7 5700G with Radeon Graphics (3792 MHz)"
        git_describe:
          type: string
          example: v5.37.2-535-g5e0c3e4a3b
        git_id:
          type: string
          example: "58b390f21b8cbcf54ebe4dfb3786c00da473edd5"
        perl_id:
          type: string
          example: "5.31.10"
        plevel:
          type: string
          example: "5.037002zzz535"
        hostname:
          type: string
          example: lx09
        osname:
          type: string
          example: Linux
        osversion:
          type: string
          example: "5.15.0-48-generic [Ubuntu 22.04.1 LTS (jammy)]"
        smoke_branch:
          type: string
          example: blead
        smoke_date:
          type: string
          format: date-time
          example: 2022-09-16T23:25:02+02:00
        summary:
          type: string
          example: PASS
        username:
          type: string
          example: smoker
        applied_patches:
          type: string
          example: SMOKE5e0c3e4a3b85ccc05e1127d901a87d55a48e5b98
        duration:
          type: integer
          format: int64
          example: 3833
        harness3opts:
          type: string
          example: null
        harness_only:
          type: string
          example: "0"
        lc_all:
          type: string
          example: null
        log_file:
          type: string
          example: ""
        out_file:
          type: string
          example: ""
        compiler_messages:
          type: string
          example: ""
        config_count:
          type: integer
          format: int64
          example: 2
        configs:
          type: array
          items:
            $ref: '#/components/schemas/testConfig'
    archHostOs:
      type: object
      properties:
        architecture:
          type: string
          example: amd64
        hostname:
          type: string
          example: idefix
        os:
          type: string
          example: Linux
        osversion:
          type: string
          example: "5.15.0-48-generic [Ubuntu 22.04.1 LTS (jammy)]"
    compilerVersion:
      type: object
      properties:
        comp:
          type: string
          example: cc
        compversion:
          type: string
          example: "11.2.0"
    perlVersion:
      type: object
      properties:
        label:
          type: string
        value:
          type: string
    searchFormValues:
      type: object
      properties:
        sel_arch_os_ver:
          type: array
          items:
            $ref: '#/components/schemas/archHostOs'
        sel_comp_ver:
          type: array
          items:
            $ref: '#/components/schemas/compilerVersion'
        branches:
         type: array
         items:
           type: string
           example: blead
        perl_versions:
          type: array
          items:
            $ref: '#/components/schemas/perlVersion'