swagger: "2.0" info: { version: "", title: "" } paths: /jobs: get: tags: [ "jobs" ] summary: "List jobs" operationId: "listJobs" responses: "200": description: "successful operation" schema: { type: array, items: { $ref: "#/definitions/JobResponse" } } examples: test: - id: "99cd67131b48" automation: "hash.sha1" payload: "test" status: "created" security: [ { roles: [ "job:read" ] } ] post: tags: [ "jobs" ] summary: "Start a new job" operationId: "runJob" parameters: - { name: "job", in: "body", description: "New job", required: true, schema: { $ref: "#/definitions/JobForm" }, x-example: { automation: "hash.sha1", message: { payload: "test" } } } responses: "204": { description: "successful operation" } security: [ { roles: [ "job:write" ] } ] /jobs/{id}: get: tags: [ "jobs" ] summary: "Get a single job" operationId: "getJob" parameters: - { name: "id", in: "path", description: "Job ID", required: true, type: string, x-example: "99cd67131b48" } responses: "200": description: "successful operation" schema: { $ref: "#/definitions/JobResponse" } examples: test: { id: "99cd67131b48", automation: "hash.sha1", payload: "test", status: "created" } security: [ { roles: [ "job:read" ] } ] put: tags: [ "jobs" ] summary: "Update an existing job" operationId: "updateJob" parameters: - { name: "id", in: "path", description: "Job ID", required: true, type: string, x-example: "99cd67131b48" } - { name: "job", in: "body", description: "Job object that needs to be added", required: true, schema: { $ref: "#/definitions/Job" }, x-example: { id: "99cd67131b48", automation: "hash.sha1", payload: "test", status: "failed" } } responses: "200": description: "successful operation" schema: { $ref: "#/definitions/JobResponse" } examples: test: { id: "99cd67131b48", automation: "hash.sha1", payload: "test", status: "failed" } security: [ { roles: [ "job:write" ] } ] definitions: Message: type: object properties: payload: { type: object } secrets: { type: object, additionalProperties: { type: string } } context: { $ref: "#/definitions/Context" } Context: type: object properties: artifact: { $ref: "#/definitions/Artifact" } playbook: { $ref: "#/definitions/PlaybookResponse" } task: { $ref: "#/definitions/TaskResponse" } ticket: { $ref: "#/definitions/TicketResponse" } Origin: type: object properties: task_origin: { $ref: "#/definitions/TaskOrigin" } artifact_origin: { $ref: "#/definitions/ArtifactOrigin" } TaskOrigin: type: object required: [ ticket_id, playbook_id, task_id ] properties: ticket_id: { type: integer, format: int64 } playbook_id: { type: string } task_id: { type: string } ArtifactOrigin: type: object required: [ ticket_id, artifact ] properties: ticket_id: { type: integer, format: int64 } artifact: { type: string } JobForm: type: object required: [ automation ] properties: automation: { type: string } payload: { } origin: { $ref: "#/definitions/Origin" } Job: type: object required: [ automation, running, status ] properties: automation: { type: string } container: { type: string } payload: { } running: { type: boolean } status: { type: string } log: { type: string } output: { type: object } origin: { $ref: "#/definitions/Origin" } JobResponse: type: object required: [ id, automation, status ] properties: id: { type: string } automation: { type: string } container: { type: string } status: { type: string } payload: { } log: { type: string } output: { type: object } origin: { $ref: "#/definitions/Origin" }