Skip to content

Rewrite batch-compliance docs for the api.x.com byte-path flow - #410

Merged
tcaldwell-x merged 2 commits into
mainfrom
taylor/batch-compliance-rewrite
Sep 17, 2026
Merged

tcaldwell-x merged 2 commits into
mainfrom
taylor/batch-compliance-rewrite

Conversation

@tcaldwell-x

Copy link
Copy Markdown
Collaborator

Do not merge until the prod cutover — merging deploys to docs.x.com. Draft PR for review only.

Rewrites the three batch-compliance narrative pages, which still document the legacy GCS flow (storage.googleapis.com URLs, resumable uploads, stale event vocabulary):

  • introduction: completes the endpoint table (upload/download byte-paths + new cancel endpoint) and replaces the event tables with the real action/reason contract, including rehydrate/tweet_edited and scrub_geo/geo_scrubbed (verified against staging1 finale results, 21/21 graded events).
  • quickstart: api.x.com signed URLs with upload_expires_at/download_expires_at and lifetimes (~15 min / ~7 d), one-active-job-per-type 409 note, single-PUT upload semantics, real NDJSON result examples (error records, deleted_at alias, nullable redacted_at), event-priority rule, cancel section.
  • integrate: full replacement of the GCS resumable-upload guide with signed-URL lifecycle, job lifecycle, 1 GiB single-PUT limits, result-interpretation rules, problem+json error catalog, and best practices.

Two decision-dependent spots (checklist #1, byte-path auth): quickstart and integrate say the signed token is the sole credential on byte-paths. If the decision keeps Bearer required, those two sentences flip and two curl examples gain an auth header — everything else stands either way.

Note: the OpenAPI-generated reference stubs are current except two lingering resumable schema properties, which must be removed in the spec's source repo (this repo's openapi.json is overwritten by the sync Action), gated on checklist decision #3.

The three narrative pages still documented the legacy GCS flow:
storage.googleapis.com upload/download URLs, resumable uploads, and an
event vocabulary that no longer matches results.

- introduction: complete the endpoint table (upload/download byte paths,
  cancel), replace the event tables with the real action/reason contract
  including rehydrate/tweet_edited and scrub_geo/geo_scrubbed.
- quickstart: api.x.com signed URLs with expiry fields and lifetimes,
  one-active-job-per-type note, upload semantics (single PUT, 200, 403 on
  expired token), NDJSON results with real examples incl. error records
  and the deleted_at alias, event-priority rule, cancel section.
- integrate: full replacement of the GCS resumable-upload guide with an
  integration guide covering signed-URL lifecycle, job lifecycle, upload
  limits (1 GiB single PUT, no resumable mode), result-interpretation
  rules, the problem+json error catalog, and operational best practices.
@mintlify

mintlify Bot commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
x-corp 🟢 Ready View Preview Sep 16, 2026, 12:01 AM

Decision: upload/download URLs require the App's Authorization header in
addition to the signed URL token, replacing the legacy GCS model where
pre-signed URLs were self-authorizing. Migrating integrations must add
the header; a migration note now flags this in both the quickstart and
the integration guide.
@tcaldwell-x
tcaldwell-x marked this pull request as ready for review September 17, 2026 23:26
@tcaldwell-x
tcaldwell-x merged commit eef2e1c into main Sep 17, 2026
2 checks passed

This branch was successfully deployed

1 active deployment
staging — 6319b29d Deployed Sep 16, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant