Repository navigation
Conversation
|
|
||
| # Prepend API path prefix to each component spec | ||
| prepend-paths: download-specs | ||
| yq -i '.paths |= (to_entries | map(.key = "/api/connectivity" + .key) | from_entries) | (.paths[] | .. | select(has("operationId"))) |= (.operationId = "connectivity_" + .operationId | .tags = ["connectivity.v1"])' components/connectivity.openapi.yaml |
There was a problem hiding this comment.
Aligned the path/tag transformation with Ledger and removed the blanket operation-ID prefix in f43a918. One exception remains: Connectivity _info uses connectivityInfo. Without this, Speakeasy renames the existing Ledger info to info_ledgerV3. With the exception, all 271 existing paths, including operation IDs, remain identical and all 14 Connectivity operations are retained. Full local precommit passed without registry upload. Could you confirm this compatibility-preserving exception?
| # Composition cleanups must remain applied when component specs change. | ||
| jq -e '.components.schemas.auth_Scope == null and .components.schemas.auth_ScopeOptions == null' releases/build/generate.json >/dev/null | ||
| jq -e '[.. | objects | select(.enum? != null) | .enum | select(length != (unique | length))] | length == 0' releases/build/generate.json >/dev/null | ||
| jq -e '[.. | objects | select(.enum? | type == "array") | .enum | select(length != (unique | length))] | length == 0' releases/build/generate.json >/dev/null |
There was a problem hiding this comment.
Connectivity has a schema property named enum, whose value is the schema object {"type":"array","items":{"type":"string"}}. The old recursive filter selects that object and passes it to unique, failing with object cannot be sorted, as it is not an array (exit 5). Selecting only enum values of type array preserves the existing duplicate-value check and avoids this property-name collision; the corrected filter exits 0 on the same contract. The PR description includes the reproduction.
f43a918 to
8f3ef8e
Compare
Summary
Add Connectivity to the unified Stack SDK contract using the existing component composition pattern.
misc/connectivity-api/openapi.yamlfrom ConnectivitymainusingCONNECTIVITY_VERSIONand authenticated GitHub CLI access. Connectivity releases do not currently publish an OpenAPI asset./api/connectivity, theconnectivity.v1SDK group and theconnectivitymodel namespace. Preserve source bearer authentication and scope descriptions, as for Ledger._infooperation asconnectivityInfo. Without this exception Speakeasy renames the existing Ledgerinfotoinfo_ledgerV3. The other 13 Connectivity operation IDs remain unchanged.Enum validation fix
Connectivity has a schema property named
enum, whose value is a schema object ({"type":"array","items":{"type":"string"}}). The existing recursive filter passes this object touniqueand fails:Selecting only
enumvalues of typearraypreserves the duplicate-enum check without confusing this property with an enumeration list. On the same generated contract the original filter exits 5; the corrected filter exits 0.Evidence
88d6ee9264fa1189bbe5584c23c2fea7be1283b5at8f3ef8ec6a9cbeb9411e8b6d1b6c3f1a0084fc03: all six commits are patch-equivalent. Fresh full precommit (temporary no-upload mode), baseline comparison andcd events && go test ./...passed. Independent rebase review found no new static findings.--skip-upload-spec; the committed build command remainsspeakeasy run -s all, and registry upload was not exercised.pkg/models/shared, also reproduced with the original Stack main contract. This PR does not fix that baseline issue.Merge Danger
Door: two-way. No server behavior or stored-data migration.
Blast Radius: SDKs. Local builds now need private Connectivity read access; anonymous builds cannot fetch that input. Release CI uses
NUMARY_GITHUB_TOKEN, whose private-repository access remains unverified. Following main means rebuilding an older Stack revision may consume a newer Connectivity contract. A future authorized release exposes this private contract in public release assets and the shared SDK source. Other SDK languages and deployed routing remain unqualified. No Stack merge, tag, registry upload, SDK release or deployment was performed.