GitHub · Schema

Job

Information of a job execution in a workflow run

CodeDeveloper ToolsPipelinesPlatformSoftware DevelopmentVersion ControlT1GitHubGit

Properties

Name Type Description
id integer The id of the job.
run_id integer The id of the associated workflow run.
run_url string
run_attempt integer Attempt number of the associated workflow run, 1 for first attempt and higher if the workflow was re-run.
node_id string
head_sha string The SHA of the commit that is being run.
url string
html_url stringnull
status string The phase of the lifecycle that the job is currently in.
conclusion stringnull The outcome of the job.
created_at string The time that the job created, in ISO 8601 format.
started_at string The time that the job started, in ISO 8601 format.
completed_at stringnull The time that the job finished, in ISO 8601 format.
name string The name of the job.
steps array Steps in this job.
check_run_url string
labels array Labels for the workflow job. Specified by the "runs_on" attribute in the action's workflow file.
runner_id integernull The ID of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
runner_name stringnull The name of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
runner_group_id integernull The ID of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
runner_group_name stringnull The name of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)
workflow_name stringnull The name of the workflow.
head_branch stringnull The name of the current branch.
View JSON Schema on GitHub

JSON Schema

github-job-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/github/main/json-schema/github-job-schema.json",
  "title": "Job",
  "description": "Information of a job execution in a workflow run",
  "x-generated": "2026-10-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/github-actions-api-openapi.yml#/components/schemas/job",
  "type": "object",
  "properties": {
    "id": {
      "description": "The id of the job.",
      "type": "integer"
    },
    "run_id": {
      "description": "The id of the associated workflow run.",
      "type": "integer"
    },
    "run_url": {
      "type": "string"
    },
    "run_attempt": {
      "type": "integer",
      "description": "Attempt number of the associated workflow run, 1 for first attempt and higher if the workflow was re-run."
    },
    "node_id": {
      "type": "string"
    },
    "head_sha": {
      "description": "The SHA of the commit that is being run.",
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "html_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "description": "The phase of the lifecycle that the job is currently in.",
      "type": "string",
      "enum": [
        "queued",
        "in_progress",
        "completed",
        "waiting"
      ]
    },
    "conclusion": {
      "description": "The outcome of the job.",
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "success",
        "failure",
        "neutral",
        "cancelled",
        "skipped",
        "timed_out",
        "action_required"
      ]
    },
    "created_at": {
      "description": "The time that the job created, in ISO 8601 format.",
      "format": "date-time",
      "type": "string"
    },
    "started_at": {
      "description": "The time that the job started, in ISO 8601 format.",
      "format": "date-time",
      "type": "string"
    },
    "completed_at": {
      "description": "The time that the job finished, in ISO 8601 format.",
      "format": "date-time",
      "type": [
        "string",
        "null"
      ]
    },
    "name": {
      "description": "The name of the job.",
      "type": "string"
    },
    "steps": {
      "description": "Steps in this job.",
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "status",
          "conclusion",
          "number"
        ],
        "properties": {
          "status": {
            "description": "The phase of the lifecycle that the job is currently in.",
            "type": "string",
            "enum": [
              "queued",
              "in_progress",
              "completed"
            ]
          },
          "conclusion": {
            "description": "The outcome of the job.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "The name of the job.",
            "type": "string"
          },
          "number": {
            "type": "integer"
          },
          "started_at": {
            "description": "The time that the step started, in ISO 8601 format.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "completed_at": {
            "description": "The time that the job finished, in ISO 8601 format.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "check_run_url": {
      "type": "string"
    },
    "labels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Labels for the workflow job. Specified by the \"runs_on\" attribute in the action's workflow file."
    },
    "runner_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The ID of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)"
    },
    "runner_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the runner to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)"
    },
    "runner_group_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The ID of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)"
    },
    "runner_group_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the runner group to which this job has been assigned. (If a runner hasn't yet been assigned, this will be null.)"
    },
    "workflow_name": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the workflow."
    },
    "head_branch": {
      "type": [
        "string",
        "null"
      ],
      "description": "The name of the current branch."
    }
  },
  "required": [
    "id",
    "node_id",
    "run_id",
    "run_url",
    "head_sha",
    "workflow_name",
    "head_branch",
    "name",
    "url",
    "html_url",
    "status",
    "conclusion",
    "started_at",
    "completed_at",
    "check_run_url",
    "labels",
    "runner_id",
    "runner_name",
    "runner_group_id",
    "runner_group_name",
    "created_at"
  ]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/github-job"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.