feat and fix(docs): mgmt api pipeline and postman collection#7888
Conversation
- Rewrite generate-docs.ts as async main() that collects existing endpoint URLs before generating, then diffs old vs new to prepend redirects to vercel.json for removed endpoints (raw string ops, no reformatting) - Remove stale MDX files and empty tag directories after each run - Auto-sync endpoints/meta.json: preserve order, append new dirs alphabetically, always put [experimental] last - Fix meta.json to add missing connections, regions, and [experimental] dirs - Omit [experimental] endpoints from published docs entirely Linear: DR-8103
- Add generate-postman-collection.ts script that converts the cached OpenAPI spec to Postman Collection v2.1 using openapi-to-postmanv2 - Pre-configure OAuth2 auth (auth.prisma.io, workspace:admin scope) - Disable all query params by default (visible but unchecked, toggleable) - Deduplicate request names that share a summary but have different paths - Omit [experimental] folder from collection - Output to public/ so the file is statically served - Wire into generate:management-api-docs so it runs on every sync - Add download link to api-clients.mdx above the client sections - Update sync workflow to commit the collection and vercel.json Linear: DR-8543
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🍈 Lychee Link Check Report5 links: ✅ All links are working!Full Statistics Table
|
WalkthroughThis PR refactors the Management API documentation generation pipeline to generate a Postman collection from the OpenAPI spec, implement incremental file reconciliation (avoiding delete-and-regenerate), auto-sync vercel.json redirects, filter experimental endpoints, and provide a downloadable collection link in the docs. ChangesManagement API Documentation Generation Pipeline
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
|
The latest updates on your projects. Learn more about Argos notifications ↗︎
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/docs/scripts/generate-docs.ts`:
- Around line 149-150: The mapping newUrlToRelPath is being populated for every
generated file (using file.path), which causes experimental pages to be treated
as published when redirect reconciliation runs; change the logic in the
generation loop (where newUrlToRelPath.set(url, file.path.replace(/\\/g, "/"))
is called) to first check whether the file is marked experimental (e.g.,
contains "[experimental]" or whatever flag/file.meta you use) and only add to
newUrlToRelPath for non-experimental files; apply the same guard to the other
similar spots mentioned (the blocks around lines that currently set mappings at
195-198 and 218-240) so experimental files are excluded from the published URL
set.
In `@apps/docs/scripts/generate-postman-collection.ts`:
- Around line 72-76: When deduping names in the loop over item.item the code
only appends the path (pathStr) which still collides when two operations share
the same summary and path but use different HTTP methods; update the renaming so
it also appends the request method (use r.request?.method, normalized to
upper-case or fallback like "UNKNOWN") along with pathStr when constructing
r.name (e.g., include `${method} ${pathStr}`) to guarantee uniqueness across
different HTTP verbs and handle missing method safely.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: b6b2abf7-9011-4cde-80c0-07e0b2a543f4
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (38)
.github/workflows/sync-management-api-docs.ymlapps/docs/content/docs/management-api/api-clients.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/delete-branches-by-branch-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/delete-compute-services-by-compute-service-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/delete-compute-services-versions-by-version-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/delete-environment-variables-by-env-var-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/delete-versions-by-version-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-branches-by-branch-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-by-compute-service-id-versions.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-by-compute-service-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-versions-by-version-id-logs.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-versions-by-version-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-environment-variables-by-env-var-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-environment-variables.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-projects-by-project-id-branches.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-projects-by-project-id-compute-services.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-versions-by-version-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/get-versions.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/patch-branches-by-branch-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/patch-compute-services-by-compute-service-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/patch-environment-variables-by-env-var-id.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-by-compute-service-id-promote.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-by-compute-service-id-versions.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-versions-by-version-id-start.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-versions-by-version-id-stop.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-environment-variables.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-projects-by-project-id-branches.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-projects-by-project-id-compute-services.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-versions-by-version-id-start.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-versions-by-version-id-stop.mdxapps/docs/content/docs/management-api/endpoints/[experimental]/post-versions.mdxapps/docs/content/docs/management-api/endpoints/meta.jsonapps/docs/package.jsonapps/docs/public/prisma-management-api.postman_collection.jsonapps/docs/scripts/generate-docs.tsapps/docs/scripts/generate-postman-collection.ts
💤 Files with no reviewable changes (31)
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-projects-by-project-id-compute-services.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/delete-environment-variables-by-env-var-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/delete-branches-by-branch-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-projects-by-project-id-branches.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-by-compute-service-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-branches-by-branch-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-versions-by-version-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-versions-by-version-id-start.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-versions.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-projects-by-project-id-compute-services.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-versions-by-version-id-stop.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/patch-branches-by-branch-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-versions-by-version-id-start.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-versions.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-by-compute-service-id-versions.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-projects-by-project-id-branches.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-versions-by-version-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-environment-variables.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-environment-variables.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-versions-by-version-id-logs.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/delete-versions-by-version-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-versions-by-version-id-stop.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/post-compute-services-by-compute-service-id-promote.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/delete-compute-services-versions-by-version-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/patch-compute-services-by-compute-service-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/delete-compute-services-by-compute-service-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-compute-services-by-compute-service-id-versions.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/get-environment-variables-by-env-var-id.mdx
- apps/docs/content/docs/management-api/endpoints/[experimental]/patch-environment-variables-by-env-var-id.mdx
Summary
DR-8103: Rewrites the management API doc generation pipeline to handle stale directories, missing sidebar entries, and 404s when endpoints are removed.
generate-docs.tsis now a proper async script that diffs old vs new URLs, writes redirects tovercel.jsonwithout reformatting the file, cleans up empty tag directories, and auto-syncsendpoints/meta.json. Also omits[experimental]endpoints from the published docs.DR-8543: Adds a
generate-postman-collection.tsscript that converts the cached OpenAPI spec to a Postman Collection v2.1 file, served statically and linked from the API clients page. Collection has OAuth2 pre-configured, query params disabled by default, duplicate names disambiguated, and experimental endpoints excluded.Test plan
pnpm generate:management-api-docsfromapps/docs— confirm new MDX files generated, stale files deleted,meta.jsonupdated, no vercel.json reformattingpnpm generate:postman-collection— confirmpublic/prisma-management-api.postman_collection.jsonis created/management-api/api-clients— confirm download link triggers a file saveSummary by CodeRabbit
New Features
Documentation