Refresh vercel provider: full REST surface, make pipeline, live smoke tests, Docusaurus 3.10 microsite - #2
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Rebuilds the
vercelprovider from the current Vercel OpenAPI document (417 operations) and brings the repository in line with the sibling provider repos: amakepipeline, a checked-in operation mapping manifest, offline / meta-route / live smoke test layers, CI, and the shared Docusaurus 3.10 microsite.Provider
SELECT, 53INSERT, 41UPDATE, 6REPLACE, 56DELETE, 88EXEC); 13 operations skipped with reasons inNOTES.md(OCI registry endpoints the spec places onapi.vercel.comwhere they are not served, a 302-only download, operations with no 2xx response). Vercel has no GraphQL API.VERCEL_API_TOKEN(Terraform parity).snake_case_aliases: trueon the provider plusrequest.nativeCasing: camelon every method; path parameters are physically snake_case (id_or_name,project_id).until,from,next,cursor, page number), inferred per method from the operation;LIMIT npushed down as?limit=n(max 100) on 37 methods.files.upload,artifacts.upload,projects.upload_avatar(@valueis sent verbatim as the body); text wrappers for jsonl / ndjson / opaque responses.EXECmethods on their resources, keeping non-selectable resources to 18.pre_normalize.mjs), each backed by a live observation: list responses the spec declares as objects but the API returns as bare arrays, opaqueoneOfplaceholders that poisoned merged schemas, an undeclared microfrontends response, and request body properties colliding with a query parameter of the same name (the teamslugalias), which otherwise sent an empty body.Resource names change from the previous provider version (the old names were inconsistent and partly wrong, e.g.
vercel.checks.deployments); this is the accepted one-time break.provider-dev/config/all_services.csvis now the durable record of every operation mapping and is merged, never regenerated, so names cannot drift between versions by accident.Pipeline
make helplists every target.make allruns deps, fetch, split, mappings merge, validate, pre-normalize, normalize, generate, post-process, offline and meta-route tests, docs and the website build. It stops atvalidate-mappingswhen upstream adds or removes operations.make smoke/make smoke-live/make smoke-cleanupare separate soallnever touches a Vercel account.The Vercel document is unversioned and republished continuously, so the snapshot is committed with a hash pin (
spec_pin.json); CI builds from the snapshot and warns on drift, and a weekly job opens an issue when the served document changes.Tests
tests/offline_validation.mjs: SHOW / DESCRIBE viastackql execplus assertions on the generated YAML (30 checks).bin/test-meta-routes.cjs: every service, resource and method over a localstackql srv, DESCRIBE on every selectable resource, unique signatures per verb.tests/smoke_test.mjs(pgwire-lite over a server the suite starts,--livefor the published provider): read smokes plus a full lifecycle mirroring the Terraform provider's headline resources: project, environment variable, Edge Config with items and a read token, a hello worldindex.htmluploaded and deployed to production, polled toREADYand fetched over HTTPS from its alias, deployment files and events, pause / unpause, then deletes. Names everythingstackql-smoke-<stamp>and sweeps breadcrumbs first. Free on a Hobby team.Results: offline 30/30, meta-route suite passing, smoke 49/49,
make allgreen locally and in CI.Docs
Docusaurus 3.10.2 on the shared
stackql/docusaurus-config(vendored to.shared-config/at build time),showLastUpdateTimeon, generic Docusaurus scaffold removed,CNAMEcorrected tovercel-provider.stackql.io(it pointed at snowflake). The landing page carries getting-started queries: project inventory, deployments by state, environment variable audit, domains and DNS, Edge Config items, members and tokens, provisioning end to end and the static-site deployment walkthrough.Known constraints (details in NOTES.md)
teamIdquery parameter;team_idmust be in the WHERE clause. any-sdk honoursx-stackQL-envVaron server URL variables only, soVERCEL_TEAM_IDis a scripting convention until the engine supports the extension on query parameters.stackql srv, the first select method used on a resource in a session fixes its physical table (drmgetTableNameis keyed on resource + generation, not method); agetafter aliston projects or deployments returns no rows over the wire.stackql execis unaffected. The smoke suite works around it; this is a core issue worth a separate ticket.Follow-ups
VERCEL_API_TOKEN(and optionallyVERCEL_TEAM_ID) as repository secrets so the CI smoke job runs.stackql-provider-registry, thenmake smoke-live.🤖 Generated with Claude Code