Documentation 40

API drift · week of 4 November 2026

The API audit of 4 November 2026

25 providers checked against each vendor's published spec. Done items have shipped; open items have not.

Subscribe to the feed (Atom). Each new report reaches your reader the week it is published.

01 / Summary

What moved upstream this week.

8 providers changed, 0 retirements still served, 20 new endpoints, 7 shape changes, 32 docs-only; 17 sources unknown.

3 Re-pin1 New endpoints1 Not checked3 Docs only17 No change

02 / By provider

Provider by provider.

BitbucketRe-pin

Coverage badge Deep: 182 of 184 read surfaces with a final answer when the audit ran.

Operations in the vendor's spec this week: 1 added.

Re-pinned 0 done, 2 open

The vendor's published spec moved, so we re-pin to the new one and re-run conformance against it.

  • Open Kept the outgoing spec, so hosts pinned before the re-pin keep serving it.
  • Open Re-pin bitbucket/rest from 2f04cc642ea9 to the vendor's current spec.

New upstream, not served yet 0 done, 1 open

Read endpoints the vendor added. Until one is built, calling it returns a coverage error, never invented data.

  • Open POST /workspaces/{workspace}/codesearch

GitLabRe-pin

Coverage badge Deep: 802 of 838 read surfaces with a final answer when the audit ran.

Operations in the vendor's spec this week: 6 changed.

Re-pinned 0 done, 2 open

The vendor's published spec moved, so we re-pin to the new one and re-run conformance against it.

  • Open Kept the outgoing spec, so hosts pinned before the re-pin keep serving it.
  • Open Re-pin gitlab/rest from bdcfa37f to the vendor's current spec.

Docs changes only

The vendor edited its docs. No endpoint we serve changed.

  • gitlab/rest: GET /api/v4/runners/all (tier 3, deferred, refuse) now references APIEntitiesCiRunnerWithUuid
  • gitlab/rest: POST /api/v4/projects/{id}/runners (write, no row) has the same $ref swap
  • gitlab/rest: PUT /api/v4/license/{id}/refresh_billable_users (write, no row) gains a 429 Too many requests response
  • gitlab/rest: Upstream HEAD also carries a description-only edit on GET /api/v4/ai/duo_workflows/workflows/{id}/catalog_items that diff.md does not list

Could not be checked

Sources the audit could not compare this week, and why.

  • gitlab/graphql: Not diffable.
  • gitlab/docs:project-webhooks, gitlab/docs:group-webhooks, gitlab/docs:linked-epics: Not diffable

SlackRe-pin

Coverage badge Full: 17 of 17 read surfaces with a final answer when the audit ran.

Re-pinned 0 done, 4 open

The vendor's published spec moved, so we re-pin to the new one and re-run conformance against it.

  • Open Kept the outgoing spec, so hosts pinned before the re-pin keep serving it.
  • Open Shape change, chat.postMessage (scratch): the "Truncating content" paragraph now says text over 4,000 characters "may be split into multiple messages of up to about 4,000 characters each", and above 40,000 "anything past that limit is cut off and the response includes a message_truncated warning".
  • Open Shape change, team.info: new optional argument include_slackbot_availability (default false) and new response field team.slackbot_availability (available|restricted|unavailable|unknown), present only when the argument is true and the team is the caller's own
  • Open Re-pin conversations.history from 11408176 to the vendor's current spec.

Docs changes only

The vendor edited its docs. No endpoint we serve changed.

  • docs:conversations.history: Removed the non-Marketplace block (1 request per minute, limit max and default 15, otherwise Tier 3)
  • docs:conversations.replies: The same non-Marketplace block removed (8 lines), nothing else
  • docs:users.list: One anchor typo fixed.
  • docs:bookmarks.list: Error not_implemented removed from the error list
  • docs:chat.postMessage, beyond the Bump item: Added error posting_to_channel_denied (files and images)
  • docs:rate-limits: Removed the "App types and rate limits" section (the May 29, 2025 non-Marketplace change) and fixed two Events API anchors
  • client @slack/web-api: 7.19.0 pinned, npm has 8.3.0.
  • rest: Hand-authored from the docs pages above, which are the checked upstream

Could not be checked

Sources the audit could not compare this week, and why.

  • @slack/web-api@8.0.0 release notes: Not on page 1 of the GitHub releases page (it stops at 8.1.0) and no second fetch was made, so whether 8.0.0 changed a default the conformance client tests depend on (retry policy, rejectRateLimitedCalls, minimum Node, transport) is unverified.

SentryNew endpoints

Coverage badge Full: 95 of 95 read surfaces with a final answer when the audit ran.

Operations in the vendor's spec this week: 132 added, 114 changed, 2 deprecated, 27 retired.

New upstream, not served yet 0 done, 19 open

Read endpoints the vendor added. Until one is built, calling it returns a coverage error, never invented data.

  • Open GET /api/0/organizations/{organization_id_or_slug}/issues/
  • Open GET /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/events/{event_id}/
  • Open GET /api/0/organizations/{organization_id_or_slug}/shortids/{issue_id}/, GET …/scim/v2/Groups/{team_id_or_slug}
  • Open GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/environments/{environment}/
  • Open GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/
  • Open GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/completion/
  • Open GET /api/0/organizations/{organization_id_or_slug}/tags/
  • Open GET /api/0/organizations/{organization_id_or_slug}/project-keys/
  • Open GET /api/0/organizations/{organization_id_or_slug}/trace/{trace_id}/, GET …/trace-meta/{trace_id}/
  • Open GET /api/0/organizations/{organization_id_or_slug}/scim/v2/ResourceTypes, ResourceTypes/{resource_type_name}, Schemas/{schema_uri}, ServiceProviderConfig
  • Open GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/code-mapping-prefixes/stack/
  • Open GET …/projects/{o}/{p}/repo/, codeowners/, codeowners/{codeowners_id}/, stacktrace-link/, GET …/organizations/{o}/code-mappings/, codeowners-associations/
  • Open GET …/organizations/{o}/workflows/, workflows/{workflow_id}/, detectors/, detectors/{detector_id}/
  • Open Integrations family (12): GET …/organizations/{o}/integrations/{integration_id}/, …/channels/, …/channel-validate/, …/repos/, …/issues/{issue_id}/integrations/, …/issues/{issue_id}/integrations/{integration_id}/, …/issues/{issue_id}/external-issues/, …/sentry-apps/, …/sentry-app-components/, …/forwarding/, GET /api/0/sentry-apps/{sentry_app_id_or_slug}/, GET /api/0/sentry-app-installations/{uuid}/external-requests/, tier 3, empty for lists (the org installs none, matching the served-empty integrations/ and sentry-app-installations/), refuse (DRF 404 {"detail": …}) for ids, S
  • Open GET /api/0/organizations/{organization_id_or_slug}/config/integrations/
  • Open Telemetry (10): GET …/organizations/{o}/trace-items/attributes/, trace-items/metrics/, trace-items/stats/, events-timeseries/, events-dropped/, profiling/chunks/, profiling/flamegraph/, …/projects/{o}/{p}/profiling/profiles/{profile_id}/, …/events/{event_id}/attachments/, …/attachments/{attachment_id}/, tier 2/3, uncovered: profiles, attachments and outcome stats
  • Open Product families (20): …/agents/conversations/ (2), …/flags/logs/ (2), …/group-search-views/, …/issues/{issue_id}/autofix/, /api/0/seer/models/, …/organizations/{o}/preprodartifacts/… (5), …/projects/{o}/{p}/preprod/… and preprodartifacts/build-distribution/latest/ (3), …/replays/jobs/delete/ (2), …/custom-inbound-filters/ (2), …/filters/, tier 3, empty for lists where no such act happened (flag logs, saved issue views, replay deletion jobs, inbound filters
  • Open GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/seer/repos/
  • Open GET /api/0/organizations/{organization_id_or_slug}/chunk-upload/

Docs changes only

The vendor edited its docs. No endpoint we serve changed.

  • What the differ compares: The vendored bytes (123023fc…) match the pin getsentry/sentry-api-schema@5ce97c1b (#722, 2026-11-04)
  • Genuine retirements, all already handled: The legacy alerts family (organizations/{o}/alert-rules/ list and detail, projects/{o}/{p}/rules/ list and detail, deleted 2026-09-24 in getsentry/sentry@abae28c3) and alert-rules/{id}/activations/ (deleted 2025-01-06, 0fc7f6f5) still answer 404 text/html with Allow: OPTIONS, unchanged since 2026-10-17
  • No bump this week: The next qualifying builds, 12bd311c (qualifies 2026-11-04T15:26:10Z) and 25e528ff (23:14:27Z), change no served row (a tag on GET /api/0/organizations/, an edit to POST …/sentry-app-installations/{uuid}/external-issues/, four users-emails operations that neither HEAD nor diff.md carries).
  • Forecast for a later re-pin (68 covered GET rows HEAD lists as Changed, 54 green, 12 deferred refuse, 2 planned refuse; 63 changed components): New required properties on organizations (allowMemberInvite, allowMemberProjectCreation, allowSuperuserAccess, carried through teams/, user-teams/, project detail), projects (hasFlags, hasLogs, hasTraceMetrics, hasInsightsMCP, hasInsightsAgentMonitoring, sessionStats.*), members (user, isSuspended, authenticators[]), releases list (id, status, versionInfo, lastDeploy.*, projects[].*), release and repo commits (pullRequest, suspectCommitType, releases), event detail and eventids (location, occurrence, projectID, sdk.name/version, errors[], tags[]), keys (dsn.integration, otlp_logs, otlp_traces, playstation), ownership (schema.$version, rules), source-map-debug (11 fields)
  • rest Added, already served: GET …/organizations/{o}/issues/{issue_id}/, events/, hashes/, tags/{key}/, tags/{key}/values/ are green derive through the x-sandboxapis-relocated transcriptions in retired.json.
  • rest writes with no manifest row: 56 Added and 46 Changed write operations
  • docs:auth, docs:pagination, docs:ratelimits (pinned 2026-09-01 at be711da8, a247309a, 31ef9063): Titles gain " | Sentry Docs" and auth adds one sentence linking Token and Credential Formats

Could not be checked

Sources the audit could not compare this week, and why.

  • captures: No url+sha256 and no source_repo+commit recorded in provider-pins.yaml (live curl transcripts sit in a comment block), so neither versions:check nor specs:diff can compare it.

Azure DevOpsNot checked

Coverage badge Deep: 227 of 232 read surfaces with a final answer when the audit ran.

Could not be checked

Sources the audit could not compare this week, and why.

  • rest:build, rest:core, rest:git, rest:graph, rest:ims, rest:pipelines, rest:wit, rest:work: The pinned upstream MicrosoftDocs/vsts-rest-api-specs still answers HTTP 404 on api.github.com as of 2026-11-04 (gh api repos/MicrosoftDocs/vsts-rest-api-specs
  • captures, captures-file:build-badge, captures-file:build-badge-label-metrics: Not checkable by design (first-party captures, no upstream url).

StatuspageDocs only

Coverage badge Deep: 37 of 38 read surfaces with a final answer when the audit ran.

Operations in the vendor's spec this week: 3 changed.

Docs changes only

The vendor edited its docs. No endpoint we serve changed.

  • rest: Check.md flagged "upstream bytes changed" because versions:check compares the RAW sha256.
  • rest: Leaf-by-leaf diff, pinned against upstream: 54 paths and 112 operations, identical sets
  • capture-pending, captures, spec-available: Not diffable (no url+sha256 recorded)

Microsoft TeamsDocs only

Coverage badge Full: 13 of 13 read surfaces with a final answer when the audit ran.

Docs changes only

The vendor edited its docs. No endpoint we serve changed.

  • rest: microsoftgraph/msgraph-metadata moved past the pinned commit 29d027ab (pinned 2026-11-04 by #722), but specs:diff fetched the pinned file at HEAD and found it byte-identical (coarse: repo moved, file identical).

ZendeskDocs only

Coverage badge Deep: 350 of 355 read surfaces with a final answer when the audit ran.

Operations in the vendor's spec this week: 12 changed.

Docs changes only

The vendor edited its docs. No endpoint we serve changed.

  • Upstream rolled again at 2026-11-04T05:39:31Z (etag "6aeac513-264218", 2,507,288 B, sha256 c0365970…, 68,382 lines) over the 5ff8bb45 pin that #711 set about four hours earlier: The seventh roll since 2026-09-04 and the second in two days.
  • GET /api/v2/ticket_fields (served, tier 1, derive): Adds the optional include_anonymous_availability query parameter and an oauth2 account_settings:read security entry.
  • TicketFieldObject (reached by the served ticket_fields, ticket_fields/show_many, ticket_fields/{ticket_field_id}): Adds optional relationship_target_publicly_listable, lookup fields only
  • SecuritySettingsObject (reached by the served GET /api/v2/security_settings): password_history_length gains only a description ("Supports 3-8 ...
  • The nine custom-object record reads (/custom_objects/{custom_object_key}/records, /records/autocomplete, /records/count, /records/search, /records/show_by_unique_identifier, /records/{custom_object_record_id}, /records/{record_id}/attachments, /records/{record_id}/attachments/{id}/download, and POST …/records/search
  • GET /api/v2/custom_objects/{custom_object_key}/permission_policies/{id} (tier 3, refuse) and PermissionPolicy.id: The id description now also names anonymous
  • CustomObjectRecordAttachment: Four descriptions gain "Omitted from responses to anonymous requests"
  • ApprovalRequestCreateRequest: Optional approval_attachment_tokens, request body of the write POST /api/v2/approval_requests only
  • CheckIdentityUsedResponse: status enum gains RESERVED_SUPPORT_ADDRESS

No change: Anthropic, Google Antigravity, Buildkite, Codex Analytics, CircleCI, Cursor, Datadog, Devin, GitHub, Grafana, HubSpot, Jira, Linear, OpenAI, PagerDuty, Prometheus, Salesforce.

03 / More

Other weeks, and what is served today.

Every report is on the API drift index. What each replica serves right now is on the coverage page, and every endpoint row is on its provider's page.