basePath: /api
definitions:
  api.ApiReturnedUser:
    properties:
      email:
        type: string
      name:
        type: string
      projects:
        items:
          type: string
        type: array
      roles:
        items:
          type: string
        type: array
      username:
        type: string
    type: object
  api.ApiTag:
    properties:
      name:
        description: Tag Name
        example: Testjob
        type: string
      scope:
        description: Tag Scope for Frontend Display
        example: global
        type: string
      type:
        description: Tag Type
        example: Debug
        type: string
    type: object
  api.DefaultJobApiResponse:
    properties:
      msg:
        type: string
    type: object
  api.DeleteJobApiRequest:
    properties:
      cluster:
        description: Cluster of job
        example: fritz
        type: string
      jobId:
        description: Cluster Job ID of job
        example: 123000
        type: integer
      startTime:
        description: Start Time of job as epoch
        example: 1649723812
        type: integer
    required:
    - jobId
    type: object
  api.EditMetaRequest:
    properties:
      key:
        example: jobScript
        type: string
      value:
        example: bash script
        type: string
    type: object
  api.ErrorResponse:
    properties:
      error:
        description: Error Message
        type: string
      status:
        description: Statustext of Errorcode
        type: string
    type: object
  api.GetClustersApiResponse:
    properties:
      clusters:
        description: Array of clusters
        items:
          $ref: '#/definitions/schema.Cluster'
        type: array
    type: object
  api.GetJobApiResponse:
    properties:
      data:
        items:
          $ref: '#/definitions/api.JobMetricWithName'
        type: array
      meta:
        $ref: '#/definitions/schema.Job'
    type: object
  api.GetJobsApiResponse:
    properties:
      items:
        description: Number of jobs returned
        type: integer
      jobs:
        description: Array of jobs
        items:
          $ref: '#/definitions/schema.JobMeta'
        type: array
      page:
        description: Page id returned
        type: integer
    type: object
  api.JobMetricWithName:
    properties:
      metric:
        $ref: '#/definitions/schema.JobMetric'
      name:
        type: string
      scope:
        $ref: '#/definitions/schema.MetricScope'
    type: object
  api.StopJobApiRequest:
    properties:
      cluster:
        example: fritz
        type: string
      jobId:
        example: 123000
        type: integer
      jobState:
        allOf:
        - $ref: '#/definitions/schema.JobState'
        example: completed
      startTime:
        example: 1649723812
        type: integer
      stopTime:
        example: 1649763839
        type: integer
    required:
    - jobState
    - stopTime
    type: object
  schema.Accelerator:
    properties:
      id:
        type: string
      model:
        type: string
      type:
        type: string
    type: object
  schema.Cluster:
    properties:
      metricConfig:
        items:
          $ref: '#/definitions/schema.MetricConfig'
        type: array
      name:
        type: string
      subClusters:
        items:
          $ref: '#/definitions/schema.SubCluster'
        type: array
    type: object
  schema.Job:
    description: Information of a HPC job.
    properties:
      arrayJobId:
        example: 123000
        type: integer
      cluster:
        example: fritz
        type: string
      concurrentJobs:
        $ref: '#/definitions/schema.JobLinkResultList'
      duration:
        example: 43200
        minimum: 1
        type: integer
      energy:
        type: number
      energyFootprint:
        additionalProperties:
          type: number
        type: object
      exclusive:
        example: 1
        maximum: 2
        minimum: 0
        type: integer
      footprint:
        additionalProperties:
          type: number
        type: object
      id:
        type: integer
      jobId:
        example: 123000
        type: integer
      jobState:
        allOf:
        - $ref: '#/definitions/schema.JobState'
        enum:
        - completed
        - failed
        - cancelled
        - stopped
        - timeout
        - out_of_memory
        example: completed
      metaData:
        additionalProperties:
          type: string
        type: object
      monitoringStatus:
        example: 1
        maximum: 3
        minimum: 0
        type: integer
      numAcc:
        example: 2
        minimum: 1
        type: integer
      numHwthreads:
        example: 20
        minimum: 1
        type: integer
      numNodes:
        example: 2
        minimum: 1
        type: integer
      partition:
        example: main
        type: string
      project:
        example: abcd200
        type: string
      resources:
        items:
          $ref: '#/definitions/schema.Resource'
        type: array
      smt:
        example: 4
        type: integer
      startTime:
        type: string
      subCluster:
        example: main
        type: string
      tags:
        items:
          $ref: '#/definitions/schema.Tag'
        type: array
      user:
        example: abcd100h
        type: string
      walltime:
        example: 86400
        minimum: 1
        type: integer
    type: object
  schema.JobLink:
    properties:
      id:
        type: integer
      jobId:
        type: integer
    type: object
  schema.JobLinkResultList:
    properties:
      count:
        type: integer
      items:
        items:
          $ref: '#/definitions/schema.JobLink'
        type: array
    type: object
  schema.JobMeta:
    description: Meta data information of a HPC job.
    properties:
      arrayJobId:
        example: 123000
        type: integer
      cluster:
        example: fritz
        type: string
      concurrentJobs:
        $ref: '#/definitions/schema.JobLinkResultList'
      duration:
        example: 43200
        minimum: 1
        type: integer
      energy:
        type: number
      energyFootprint:
        additionalProperties:
          type: number
        type: object
      exclusive:
        example: 1
        maximum: 2
        minimum: 0
        type: integer
      footprint:
        additionalProperties:
          type: number
        type: object
      id:
        type: integer
      jobId:
        example: 123000
        type: integer
      jobState:
        allOf:
        - $ref: '#/definitions/schema.JobState'
        enum:
        - completed
        - failed
        - cancelled
        - stopped
        - timeout
        - out_of_memory
        example: completed
      metaData:
        additionalProperties:
          type: string
        type: object
      monitoringStatus:
        example: 1
        maximum: 3
        minimum: 0
        type: integer
      numAcc:
        example: 2
        minimum: 1
        type: integer
      numHwthreads:
        example: 20
        minimum: 1
        type: integer
      numNodes:
        example: 2
        minimum: 1
        type: integer
      partition:
        example: main
        type: string
      project:
        example: abcd200
        type: string
      resources:
        items:
          $ref: '#/definitions/schema.Resource'
        type: array
      smt:
        example: 4
        type: integer
      startTime:
        example: 1649723812
        minimum: 1
        type: integer
      statistics:
        additionalProperties:
          $ref: '#/definitions/schema.JobStatistics'
        type: object
      subCluster:
        example: main
        type: string
      tags:
        items:
          $ref: '#/definitions/schema.Tag'
        type: array
      user:
        example: abcd100h
        type: string
      walltime:
        example: 86400
        minimum: 1
        type: integer
    type: object
  schema.JobMetric:
    properties:
      series:
        items:
          $ref: '#/definitions/schema.Series'
        type: array
      statisticsSeries:
        $ref: '#/definitions/schema.StatsSeries'
      timestep:
        type: integer
      unit:
        $ref: '#/definitions/schema.Unit'
    type: object
  schema.JobState:
    enum:
    - running
    - completed
    - failed
    - cancelled
    - stopped
    - timeout
    - preempted
    - out_of_memory
    - node_fail
    type: string
    x-enum-varnames:
    - JobStateRunning
    - JobStateCompleted
    - JobStateFailed
    - JobStateCancelled
    - JobStateStopped
    - JobStateTimeout
    - JobStatePreempted
    - JobStateOutOfMemory
    - JobStateNodeFail
  schema.JobStatistics:
    description: Specification for job metric statistics.
    properties:
      avg:
        description: Job metric average
        example: 2500
        minimum: 0
        type: number
      max:
        description: Job metric maximum
        example: 3000
        minimum: 0
        type: number
      min:
        description: Job metric minimum
        example: 2000
        minimum: 0
        type: number
      unit:
        $ref: '#/definitions/schema.Unit'
    type: object
  schema.MetricConfig:
    properties:
      aggregation:
        type: string
      alert:
        type: number
      caution:
        type: number
      energy:
        type: string
      footprint:
        type: string
      lowerIsBetter:
        type: boolean
      name:
        type: string
      normal:
        type: number
      peak:
        type: number
      scope:
        $ref: '#/definitions/schema.MetricScope'
      subClusters:
        items:
          $ref: '#/definitions/schema.SubClusterConfig'
        type: array
      timestep:
        type: integer
      unit:
        $ref: '#/definitions/schema.Unit'
    type: object
  schema.MetricScope:
    enum:
    - invalid_scope
    - node
    - socket
    - memoryDomain
    - core
    - hwthread
    - accelerator
    type: string
    x-enum-varnames:
    - MetricScopeInvalid
    - MetricScopeNode
    - MetricScopeSocket
    - MetricScopeMemoryDomain
    - MetricScopeCore
    - MetricScopeHWThread
    - MetricScopeAccelerator
  schema.MetricStatistics:
    properties:
      avg:
        type: number
      max:
        type: number
      min:
        type: number
    type: object
  schema.MetricValue:
    properties:
      unit:
        $ref: '#/definitions/schema.Unit'
      value:
        type: number
    type: object
  schema.Resource:
    description: A resource used by a job
    properties:
      accelerators:
        items:
          type: string
        type: array
      configuration:
        type: string
      hostname:
        type: string
      hwthreads:
        items:
          type: integer
        type: array
    type: object
  schema.Series:
    properties:
      data:
        items:
          type: number
        type: array
      hostname:
        type: string
      id:
        type: string
      statistics:
        $ref: '#/definitions/schema.MetricStatistics'
    type: object
  schema.StatsSeries:
    properties:
      max:
        items:
          type: number
        type: array
      mean:
        items:
          type: number
        type: array
      median:
        items:
          type: number
        type: array
      min:
        items:
          type: number
        type: array
      percentiles:
        additionalProperties:
          items:
            type: number
          type: array
        type: object
    type: object
  schema.SubCluster:
    properties:
      coresPerSocket:
        type: integer
      energyFootprint:
        items:
          type: string
        type: array
      flopRateScalar:
        $ref: '#/definitions/schema.MetricValue'
      flopRateSimd:
        $ref: '#/definitions/schema.MetricValue'
      footprint:
        items:
          type: string
        type: array
      memoryBandwidth:
        $ref: '#/definitions/schema.MetricValue'
      metricConfig:
        items:
          $ref: '#/definitions/schema.MetricConfig'
        type: array
      name:
        type: string
      nodes:
        type: string
      processorType:
        type: string
      socketsPerNode:
        type: integer
      threadsPerCore:
        type: integer
      topology:
        $ref: '#/definitions/schema.Topology'
    type: object
  schema.SubClusterConfig:
    properties:
      alert:
        type: number
      caution:
        type: number
      energy:
        type: string
      footprint:
        type: string
      lowerIsBetter:
        type: boolean
      name:
        type: string
      normal:
        type: number
      peak:
        type: number
      remove:
        type: boolean
    type: object
  schema.Tag:
    description: Defines a tag using name and type.
    properties:
      id:
        type: integer
      name:
        example: Testjob
        type: string
      scope:
        example: global
        type: string
      type:
        example: Debug
        type: string
    type: object
  schema.Topology:
    properties:
      accelerators:
        items:
          $ref: '#/definitions/schema.Accelerator'
        type: array
      core:
        items:
          items:
            type: integer
          type: array
        type: array
      die:
        items:
          items:
            type: integer
          type: array
        type: array
      memoryDomain:
        items:
          items:
            type: integer
          type: array
        type: array
      node:
        items:
          type: integer
        type: array
      socket:
        items:
          items:
            type: integer
          type: array
        type: array
    type: object
  schema.Unit:
    properties:
      base:
        type: string
      prefix:
        type: string
    type: object
host: localhost:8080
info:
  contact:
    email: support@clustercockpit.org
    name: ClusterCockpit Project
    url: https://github.com/ClusterCockpit
  description: API for batch job control.
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
  title: ClusterCockpit REST API
  version: 1.0.0
paths:
  /clusters/:
    get:
      description: Get a list of all cluster configs. Specific cluster can be requested
        using query parameter.
      parameters:
      - description: Job Cluster
        in: query
        name: cluster
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Array of clusters
          schema:
            $ref: '#/definitions/api.GetClustersApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Lists all cluster configs
      tags:
      - Cluster query
  /jobs/:
    get:
      description: |-
        Get a list of all jobs. Filters can be applied using query parameters.
        Number of results can be limited by page. Results are sorted by descending startTime.
      parameters:
      - description: Job State
        enum:
        - running
        - completed
        - failed
        - cancelled
        - stopped
        - timeout
        in: query
        name: state
        type: string
      - description: Job Cluster
        in: query
        name: cluster
        type: string
      - description: 'Syntax: ''$from-$to'', as unix epoch timestamps in seconds'
        in: query
        name: start-time
        type: string
      - description: 'Items per page (Default: 25)'
        in: query
        name: items-per-page
        type: integer
      - description: 'Page Number (Default: 1)'
        in: query
        name: page
        type: integer
      - description: Include metadata (e.g. jobScript) in response
        in: query
        name: with-metadata
        type: boolean
      produces:
      - application/json
      responses:
        "200":
          description: Job array and page info
          schema:
            $ref: '#/definitions/api.GetJobsApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Lists all jobs
      tags:
      - Job query
  /jobs/{id}:
    get:
      description: |-
        Job to get is specified by database ID
        Returns full job resource information according to 'JobMeta' scheme and all metrics according to 'JobData'.
      parameters:
      - description: Database ID of Job
        in: path
        name: id
        required: true
        type: integer
      - description: Include all available metrics
        in: query
        name: all-metrics
        type: boolean
      produces:
      - application/json
      responses:
        "200":
          description: Job resource
          schema:
            $ref: '#/definitions/api.GetJobApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Resource not found
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: finding job failed: sql: no rows in
            result set'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Get job meta and optional all metric data
      tags:
      - Job query
    post:
      consumes:
      - application/json
      description: |-
        Job to get is specified by database ID
        Returns full job resource information according to 'JobMeta' scheme and all metrics according to 'JobData'.
      parameters:
      - description: Database ID of Job
        in: path
        name: id
        required: true
        type: integer
      - description: Array of metric names
        in: body
        name: request
        required: true
        schema:
          items:
            type: string
          type: array
      produces:
      - application/json
      responses:
        "200":
          description: Job resource
          schema:
            $ref: '#/definitions/api.GetJobApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Resource not found
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: finding job failed: sql: no rows in
            result set'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Get job meta and configurable metric data
      tags:
      - Job query
  /jobs/delete_job/:
    delete:
      consumes:
      - application/json
      description: Job to delete is specified by request body. All fields are required
        in this case.
      parameters:
      - description: All fields required
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/api.DeleteJobApiRequest'
      produces:
      - application/json
      responses:
        "200":
          description: Success message
          schema:
            $ref: '#/definitions/api.DefaultJobApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Resource not found
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: finding job failed: sql: no rows in
            result set'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Remove a job from the sql database
      tags:
      - Job remove
  /jobs/delete_job/{id}:
    delete:
      description: Job to remove is specified by database ID. This will not remove
        the job from the job archive.
      parameters:
      - description: Database ID of Job
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Success message
          schema:
            $ref: '#/definitions/api.DefaultJobApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Resource not found
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: finding job failed: sql: no rows in
            result set'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Remove a job from the sql database
      tags:
      - Job remove
  /jobs/delete_job_before/{ts}:
    delete:
      description: Remove all jobs with start time before timestamp. The jobs will
        not be removed from the job archive.
      parameters:
      - description: Unix epoch timestamp
        in: path
        name: ts
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Success message
          schema:
            $ref: '#/definitions/api.DefaultJobApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Resource not found
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: finding job failed: sql: no rows in
            result set'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Remove a job from the sql database
      tags:
      - Job remove
  /jobs/edit_meta/{id}:
    post:
      consumes:
      - application/json
      description: |-
        Edit key value pairs in job metadata json
        If a key already exists its content will be overwritten
      parameters:
      - description: Job Database ID
        in: path
        name: id
        required: true
        type: integer
      - description: Kay value pair to add
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/api.EditMetaRequest'
      produces:
      - application/json
      responses:
        "200":
          description: Updated job resource
          schema:
            $ref: '#/definitions/schema.Job'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Job does not exist
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Edit meta-data json
      tags:
      - Job add and modify
  /jobs/start_job/:
    post:
      consumes:
      - application/json
      description: |-
        Job specified in request body will be saved to database as "running" with new DB ID.
        Job specifications follow the 'JobMeta' scheme, API will fail to execute if requirements are not met.
      parameters:
      - description: Job to add
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/schema.JobMeta'
      produces:
      - application/json
      responses:
        "201":
          description: Job added successfully
          schema:
            $ref: '#/definitions/api.DefaultJobApiResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: The combination of jobId, clusterId
            and startTime does already exist'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Adds a new job as "running"
      tags:
      - Job add and modify
  /jobs/stop_job/:
    post:
      description: |-
        Job to stop is specified by request body. All fields are required in this case.
        Returns full job resource information according to 'JobMeta' scheme.
      parameters:
      - description: All fields required
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/api.StopJobApiRequest'
      produces:
      - application/json
      responses:
        "200":
          description: Success message
          schema:
            $ref: '#/definitions/schema.JobMeta'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Resource not found
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "422":
          description: 'Unprocessable Entity: job has already been stopped'
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Marks job as completed and triggers archiving
      tags:
      - Job add and modify
  /jobs/tag_job/{id}:
    post:
      consumes:
      - application/json
      description: |-
        Adds tag(s) to a job specified by DB ID. Name and Type of Tag(s) can be chosen freely.
        Tag Scope for frontend visibility will default to "global" if none entered, other options: "admin" or specific username.
        If tagged job is already finished: Tag will be written directly to respective archive files.
      parameters:
      - description: Job Database ID
        in: path
        name: id
        required: true
        type: integer
      - description: Array of tag-objects to add
        in: body
        name: request
        required: true
        schema:
          items:
            $ref: '#/definitions/api.ApiTag'
          type: array
      produces:
      - application/json
      responses:
        "200":
          description: Updated job resource
          schema:
            $ref: '#/definitions/schema.Job'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "404":
          description: Job or tag does not exist
          schema:
            $ref: '#/definitions/api.ErrorResponse'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/api.ErrorResponse'
      security:
      - ApiKeyAuth: []
      summary: Adds one or more tags to a job
      tags:
      - Job add and modify
  /notice/:
    post:
      consumes:
      - multipart/form-data
      description: |-
        Modifies the content of notice.txt, shown as notice box on the homepage.
        If more than one formValue is set then only the highest priority field is used.
        Only accessible from IPs registered with apiAllowedIPs configuration option.
      parameters:
      - description: 'Priority 1: New content to display'
        in: formData
        name: new-content
        type: string
      produces:
      - text/plain
      responses:
        "200":
          description: Success Response Message
          schema:
            type: string
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: Unauthorized
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "422":
          description: 'Unprocessable Entity: The user could not be updated'
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - ApiKeyAuth: []
      summary: Updates or empties the notice box content
      tags:
      - User
  /user/{id}:
    post:
      consumes:
      - multipart/form-data
      description: |-
        Modifies user defined by username (id) in one of four possible ways.
        If more than one formValue is set then only the highest priority field is used.
        Only accessible from IPs registered with apiAllowedIPs configuration option.
      parameters:
      - description: Database ID of User
        in: path
        name: id
        required: true
        type: string
      - description: 'Priority 1: Role to add'
        enum:
        - admin
        - support
        - manager
        - user
        - api
        in: formData
        name: add-role
        type: string
      - description: 'Priority 2: Role to remove'
        enum:
        - admin
        - support
        - manager
        - user
        - api
        in: formData
        name: remove-role
        type: string
      - description: 'Priority 3: Project to add'
        in: formData
        name: add-project
        type: string
      - description: 'Priority 4: Project to remove'
        in: formData
        name: remove-project
        type: string
      produces:
      - text/plain
      responses:
        "200":
          description: Success Response Message
          schema:
            type: string
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: Unauthorized
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "422":
          description: 'Unprocessable Entity: The user could not be updated'
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - ApiKeyAuth: []
      summary: Updates an existing user
      tags:
      - User
  /users/:
    delete:
      consumes:
      - multipart/form-data
      description: |-
        User defined by username in form data will be deleted from database.
        Only accessible from IPs registered with apiAllowedIPs configuration option.
      parameters:
      - description: User ID to delete
        in: formData
        name: username
        required: true
        type: string
      produces:
      - text/plain
      responses:
        "200":
          description: User deleted successfully
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: Unauthorized
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "422":
          description: 'Unprocessable Entity: deleting user failed'
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - ApiKeyAuth: []
      summary: Deletes a user
      tags:
      - User
    get:
      description: |-
        Returns a JSON-encoded list of users.
        Required query-parameter defines if all users or only users with additional special roles are returned.
        Only accessible from IPs registered with apiAllowedIPs configuration option.
      parameters:
      - description: If returned list should contain all users or only users with
          additional special roles
        in: query
        name: not-just-user
        required: true
        type: boolean
      produces:
      - application/json
      responses:
        "200":
          description: List of users returned successfully
          schema:
            items:
              $ref: '#/definitions/api.ApiReturnedUser'
            type: array
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: Unauthorized
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - ApiKeyAuth: []
      summary: Returns a list of users
      tags:
      - User
    post:
      consumes:
      - multipart/form-data
      description: |-
        User specified in form data will be saved to database.
        Only accessible from IPs registered with apiAllowedIPs configuration option.
      parameters:
      - description: Unique user ID
        in: formData
        name: username
        required: true
        type: string
      - description: User password
        in: formData
        name: password
        required: true
        type: string
      - description: User role
        enum:
        - admin
        - support
        - manager
        - user
        - api
        in: formData
        name: role
        required: true
        type: string
      - description: Managed project, required for new manager role user
        in: formData
        name: project
        type: string
      - description: Users name
        in: formData
        name: name
        type: string
      - description: Users email
        in: formData
        name: email
        type: string
      produces:
      - text/plain
      responses:
        "200":
          description: Success Response
          schema:
            type: string
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: Unauthorized
          schema:
            type: string
        "403":
          description: Forbidden
          schema:
            type: string
        "422":
          description: 'Unprocessable Entity: creating user failed'
          schema:
            type: string
        "500":
          description: Internal Server Error
          schema:
            type: string
      security:
      - ApiKeyAuth: []
      summary: Adds a new user
      tags:
      - User
securityDefinitions:
  ApiKeyAuth:
    in: header
    name: X-Auth-Token
    type: apiKey
swagger: "2.0"