driftwatch

GitHub

20 spec versions tracked, back to 2026-09-10. 9 published breaking changes. Provider docs.

GitHub · rest2026-09-28 · f68459281 additive
  • Additivepath.added

    /repos/{owner}/{repo}/actions/jobs/{job_id}/steps/{step_number}/logs added

    No action needed.

    /repos/{owner}/{repo}/actions/jobs/{job_id}/steps/{step_number}/logs
GitHub · rest2026-09-28 · 8de506896 additive
  • Additivepath.added

    /orgs/{org}/properties/installations/schema added

    No action needed.

    /orgs/{org}/properties/installations/schema
  • Additivepath.added

    /orgs/{org}/properties/installations/values added

    No action needed.

    /orgs/{org}/properties/installations/values
  • Additivepath.added

    /orgs/{org}/properties/installations added

    No action needed.

    /orgs/{org}/properties/installations
  • Additivepath.added

    /orgs/{org}/properties/installations/values/{property_name} added

    No action needed.

    /orgs/{org}/properties/installations/values/{property_name}
  • Additiveresponse.property.added

    Response field organization_external_properties_for_repos added

    No action needed unless you validate responses against a closed schema.

    app-permissions.organization_external_properties_for_repos · reachable from 11 operations
  • Additiverequest.property.added

    Request property organization_external_properties_for_repos added

    No action needed unless it is required.

    app-permissions.organization_external_properties_for_repos · reachable from 11 operations
GitHub · rest2026-09-24 · 4fc0ed662 additive
  • Additivepath.added

    /repos/{owner}/{repo}/issues/{issue_number}/relates_to added

    No action needed.

    /repos/{owner}/{repo}/issues/{issue_number}/relates_to
  • Additivepath.added

    /repos/{owner}/{repo}/issues/{issue_number}/relates_to/{issue_id} added

    No action needed.

    /repos/{owner}/{repo}/issues/{issue_number}/relates_to/{issue_id}
GitHub · rest2026-09-24 · f4f0708f1 behavioral
  • Behavioralresponse.status-code.added

    503 is now documented on /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers

    An unhandled branch in your error handling.

    POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
GitHub · rest2026-09-23 · 677c1b8f5 breaking
  • Breakingdirection fliprequest.property.removed

    budget_entity_name is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{org}/settings/billing/budgets/{budget_id} · budget_entity_name
    await client.post("/organizations/{org}/settings/billing/budgets/{budget_id}", {
      // budget_entity_name is now ignored, not rejected
      budget_entity_name: value,
    });
  • Breakingdirection fliprequest.property.removed

    budget_product_sku is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{org}/settings/billing/budgets/{budget_id} · budget_product_sku
    await client.post("/organizations/{org}/settings/billing/budgets/{budget_id}", {
      // budget_product_sku is now ignored, not rejected
      budget_product_sku: value,
    });
  • Breakingdirection fliprequest.property.removed

    budget_scope is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{org}/settings/billing/budgets/{budget_id} · budget_scope
    await client.post("/organizations/{org}/settings/billing/budgets/{budget_id}", {
      // budget_scope is now ignored, not rejected
      budget_scope: value,
    });
  • Breakingdirection fliprequest.property.removed

    budget_type is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{org}/settings/billing/budgets/{budget_id} · budget_type
    await client.post("/organizations/{org}/settings/billing/budgets/{budget_id}", {
      // budget_type is now ignored, not rejected
      budget_type: value,
    });
  • Breakingdirection fliprequest.property.removed

    user is no longer accepted

    Usually ignored rather than rejected, so the call succeeds and does something subtly different.

    PATCH /organizations/{org}/settings/billing/budgets/{budget_id} · user
    await client.post("/organizations/{org}/settings/billing/budgets/{budget_id}", {
      // user is now ignored, not rejected
      user: value,
    });
GitHub · rest2026-09-18 · 814de7ac2 additive
  • Additiveresponse.property.added

    Response field include_drafts added

    No action needed unless you validate responses against a closed schema.

    GET /orgs/{org}/interaction-limits/pulls/creation-cap · include_drafts · 4 call sites
  • Additiverequest.property.added

    Request property include_drafts added

    No action needed unless it is required.

    PATCH /orgs/{org}/interaction-limits/pulls/creation-cap · include_drafts · 2 call sites
GitHub · rest2026-09-17 · 649b8c491 breaking
  • Breakingdirection flipresponse.enum.value-added

    permissions can now return "triage_plus"

    Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.

    repository-invitation.permissions · reachable from 4 operations
    switch (response.permissions) {
      // existing branches …
      // no branch for "triage_plus"
      default:
        throw new Error("unexpected permissions");
    }
GitHub · rest2026-09-16 · 29bcb5562 behavioral
  • Behavioralresponse.status-code.added

    422 is now documented on /repos/{owner}/{repo}/commits

    An unhandled branch in your error handling.

    GET /repos/{owner}/{repo}/commits · 3 call sites
  • Behavioralresponse.status-code.added

    429 is now documented on /repos/{owner}/{repo}/commits

    An unhandled branch in your error handling.

    GET /repos/{owner}/{repo}/commits · 2 call sites
GitHub · rest2026-09-16 · 6b1cc8631 breaking1 behavioral4 additive
  • Breakingdirection flipresponse.enum.value-added

    status can now return "enterprise_enforced"

    Producer-side tools call this additive. It breaks exhaustive switches, strict parsers and generated client enums.

    can now return "enterprise_enforced"

    3 places: code-security-configuration-repositories.status, code-security-configuration.enforcement, code-security-configuration-for-repository.status
    switch (response.status) {
      // existing branches …
      // no branch for "enterprise_enforced"
      default:
        throw new Error("unexpected status");
    }
  • Behavioralresponse.status-code.added

    403 is now documented on /orgs/{org}/code-security/configurations/{configuration_id}/attach

    An unhandled branch in your error handling.

    POST /orgs/{org}/code-security/configurations/{configuration_id}/attach
  • Additivepath.added

    /orgs/{org}/actions/policies added

    No action needed.

    /orgs/{org}/actions/policies
  • Additivepath.added

    /orgs/{org}/actions/policies/{policy_id} added

    No action needed.

    /orgs/{org}/actions/policies/{policy_id}
  • Additivepath.added

    /repos/{owner}/{repo}/actions/policies added

    No action needed.

    /repos/{owner}/{repo}/actions/policies
  • Additivepath.added

    /repos/{owner}/{repo}/actions/policies/{policy_id} added

    No action needed.

    /repos/{owner}/{repo}/actions/policies/{policy_id}
GitHub · rest2026-09-12 · e16cc25811 additive

Additive11 new response fieldsissue.labels[].archived_by, label.archived_at, label.archived_by, pull-request-simple.labels[].archived_by, pull-request.labels[].archived_by, nullable-issue.labels[].archived_by, issue-search-result-item.labels[].archived_at, issue-search-result-item.labels[].archived_by +3 more

GitHub · rest2026-09-11 · f5d6d10f1 behavioral
  • Behavioralresponse.status-code.added

    410 is now documented on /repos/{owner}/{repo}/dependabot/alerts/{alert_number}

    An unhandled branch in your error handling.

    GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number} · 2 call sites