@opensoha/contracts 0.1.15 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COMPATIBILITY.md +46 -0
- package/README.md +12 -3
- package/auth/catalog_generated.go +2 -2
- package/auth/catalog_test.go +32 -0
- package/auth/permission-catalog.json +537 -8
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +58 -1
- package/fixtures/json-schema/network-ingest-event/invalid/duplicate-event.json +33 -0
- package/fixtures/json-schema/network-ingest-event/invalid/message-payload-mismatch.json +23 -0
- package/fixtures/json-schema/network-ingest-event/invalid/password.json +22 -0
- package/fixtures/json-schema/network-ingest-event/invalid/proxy-flow-destination.json +28 -0
- package/fixtures/json-schema/network-ingest-event/valid/endpoint-proxy-flow.json +27 -0
- package/fixtures/json-schema/network-ingest-event/valid/freeradius-accounting.json +25 -0
- package/fixtures/json-schema/network-ingest-event/valid/gateway.json +53 -0
- package/fixtures/json-schema/network-radius-accounting/invalid/password.json +9 -0
- package/fixtures/json-schema/network-radius-accounting/valid/accounting.json +16 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/invalid-cidr.json +31 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/message-payload-mismatch.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/mihomo-raw-subscription.json +33 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/nas-authorization-password.json +18 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/nas-eap-without-certificate.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/private-key.json +20 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/raw-credential-reference.json +16 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/runtime-interval-too-short.json +23 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/wireguard-capability-without-key.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/wireguard-default-route.json +31 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/ztna-without-access-grant.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/configuration-desired.json +86 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/direct-ztna-connect.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/direct-ztna-result.json +33 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/internal-ztna-connect.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/mihomo-app-subscription-configuration.json +32 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/mihomo-manual-node-configuration.json +32 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/mihomo-wireguard-configuration.json +70 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-authorization-request.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-authorization-result.json +24 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-session-command-result.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-session-command.json +27 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/vpn-connect-request.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/vpn-connect-result.json +34 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/wireguard-enrollment.json +20 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/wireguard-site-link.json +48 -0
- package/fixtures/openapi/AlertRuleEnvelope/invalid/missing-data.json +1 -0
- package/fixtures/openapi/AlertRuleEnvelope/valid/metrics.json +11 -0
- package/fixtures/openapi/AlertRuleInput/invalid/missing-name.json +3 -0
- package/fixtures/openapi/AlertRuleInput/valid/metrics.json +25 -0
- package/fixtures/openapi/AlertRuleRunListEnvelope/invalid/missing-rule-id.json +12 -0
- package/fixtures/openapi/AlertRuleRunListEnvelope/valid/items.json +13 -0
- package/fixtures/openapi/AlertRuleTestResultEnvelope/invalid/missing-executed-at.json +5 -0
- package/fixtures/openapi/AlertRuleTestResultEnvelope/valid/clear.json +10 -0
- package/fixtures/openapi/AnnouncementReceiptPageEnvelope/invalid/missing-read-count.json +9 -0
- package/fixtures/openapi/AnnouncementReceiptPageEnvelope/valid/read-and-unread.json +28 -0
- package/fixtures/openapi/ApplicationRuntimeEnvironment/invalid/unknown-status.json +7 -0
- package/fixtures/openapi/ApplicationRuntimeEnvironment/valid/unavailable.json +7 -0
- package/fixtures/openapi/ApplicationWorkflowInput/invalid/owner-fields.json +7 -0
- package/fixtures/openapi/ApplicationWorkflowInput/valid/minimal.json +9 -0
- package/fixtures/openapi/BrandingAssetUploadEnvelope/valid/svg-data-url.json +5 -0
- package/fixtures/openapi/BrowserHandoffCompletionEnvelope/invalid/token-leak.json +7 -0
- package/fixtures/openapi/BrowserHandoffCompletionEnvelope/valid/completed.json +6 -0
- package/fixtures/openapi/BrowserHandoffEnvelope/invalid/missing-principal.json +12 -0
- package/fixtures/openapi/BrowserHandoffEnvelope/valid/pending.json +11 -0
- package/fixtures/openapi/ChangePasswordRequest/invalid/missing-current-password.json +3 -0
- package/fixtures/openapi/ChangePasswordRequest/invalid/short-new-password.json +4 -0
- package/fixtures/openapi/ChangePasswordRequest/valid/password.json +4 -0
- package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/https-redirect.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/localhost-redirect.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/plain-challenge.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/privileged-port.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptCreateRequest/invalid/short-callback.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptCreateRequest/valid/loopback.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptEnvelope/invalid/missing-expiry.json +6 -0
- package/fixtures/openapi/DesktopAuthAttemptEnvelope/valid/attempt.json +7 -0
- package/fixtures/openapi/DesktopAuthAttemptExchangeRequest/invalid/short-verifier.json +4 -0
- package/fixtures/openapi/DesktopAuthAttemptExchangeRequest/valid/exchange.json +4 -0
- package/fixtures/openapi/EndpointDevice/invalid/missing-owner.json +8 -0
- package/fixtures/openapi/EndpointDevice/valid/active.json +35 -0
- package/fixtures/openapi/EndpointDeviceRegistrationInput/invalid/client-owned-status.json +5 -0
- package/fixtures/openapi/EndpointDeviceRegistrationInput/invalid/oversized-network-inventory.json +18 -0
- package/fixtures/openapi/EndpointDeviceRegistrationInput/valid/macos.json +28 -0
- package/fixtures/openapi/IdentityApplication/invalid/missing-id.json +7 -0
- package/fixtures/openapi/IdentityApplication/valid/full.json +30 -0
- package/fixtures/openapi/IdentityApplicationEnvelope/invalid/missing-data.json +1 -0
- package/fixtures/openapi/IdentityApplicationEnvelope/valid/minimal.json +10 -0
- package/fixtures/openapi/IdentityApplicationLaunchListEnvelope/invalid/missing-user.json +11 -0
- package/fixtures/openapi/IdentityApplicationLaunchListEnvelope/valid/minimal.json +12 -0
- package/fixtures/openapi/LLMUpstreamTestResultEnvelope/invalid/models-not-array.json +9 -0
- package/fixtures/openapi/LLMUpstreamTestResultEnvelope/valid/discovered-models.json +11 -0
- package/fixtures/openapi/LogQuery/invalid/empty-data-source-id.json +7 -0
- package/fixtures/openapi/LogQuery/valid/durable-data-source.json +14 -0
- package/fixtures/openapi/ManifestPackage/invalid/missing-application.json +12 -0
- package/fixtures/openapi/ManifestPackage/valid/service-scoped.json +29 -0
- package/fixtures/openapi/NetworkAccessGrant/invalid/token-digest.json +15 -0
- package/fixtures/openapi/NetworkAccessGrant/valid/issued.json +14 -0
- package/fixtures/openapi/NetworkAccessGrantInput/invalid/no-resources.json +7 -0
- package/fixtures/openapi/NetworkAccessGrantInput/valid/direct-ztna.json +8 -0
- package/fixtures/openapi/NetworkAccessGrantSecret/invalid/short-token.json +17 -0
- package/fixtures/openapi/NetworkAccessGrantSecret/valid/issued.json +17 -0
- package/fixtures/openapi/NetworkAccessPolicy/invalid/missing-version.json +20 -0
- package/fixtures/openapi/NetworkAccessPolicy/valid/published-draft.json +21 -0
- package/fixtures/openapi/NetworkAccessPolicyInput/invalid/duplicate-team.json +17 -0
- package/fixtures/openapi/NetworkAccessPolicyInput/valid/team-and-tag-allow.json +17 -0
- package/fixtures/openapi/NetworkConflictAnalysisRequest/invalid/ipv6-range.json +9 -0
- package/fixtures/openapi/NetworkConflictAnalysisRequest/valid/runtime-ranges.json +15 -0
- package/fixtures/openapi/NetworkConnectionOption/invalid/secret.json +10 -0
- package/fixtures/openapi/NetworkConnectionOption/valid/wifi.json +9 -0
- package/fixtures/openapi/NetworkConnectionOption/valid/wired.json +8 -0
- package/fixtures/openapi/NetworkGateway/invalid/missing-site.json +7 -0
- package/fixtures/openapi/NetworkGateway/valid/online.json +23 -0
- package/fixtures/openapi/NetworkGatewayInput/invalid/default-route-overlay.json +13 -0
- package/fixtures/openapi/NetworkGatewayInput/valid/routed.json +14 -0
- package/fixtures/openapi/NetworkLease/invalid/empty-cidrs.json +12 -0
- package/fixtures/openapi/NetworkLease/valid/active.json +12 -0
- package/fixtures/openapi/NetworkMihomoProfile/invalid/subscription-leak.json +20 -0
- package/fixtures/openapi/NetworkMihomoProfile/valid/managed.json +21 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/invalid/app-subscription-secret.json +14 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/invalid/manual-node-with-subscription.json +20 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/valid/app-subscription.json +14 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/valid/managed.json +16 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/valid/manual-node.json +21 -0
- package/fixtures/openapi/NetworkNASBinding/invalid/secret.json +13 -0
- package/fixtures/openapi/NetworkNASBinding/valid/default.json +16 -0
- package/fixtures/openapi/NetworkNASBindingInput/invalid/secret.json +10 -0
- package/fixtures/openapi/NetworkNASBindingInput/valid/default.json +13 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/invalid/unknown-mode.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/external-direct-ztna.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/external-vpn-ztna.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/external-vpn.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/internal-direct.json +7 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/internal-ztna.json +7 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/invalid/bypass-path.json +9 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/onboarding.json +10 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/protected-broad-path-denied.json +9 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/protected-resource.json +9 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/quarantine.json +10 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/restricted.json +10 -0
- package/fixtures/openapi/NetworkPolicySnapshot/invalid/zero-version.json +7 -0
- package/fixtures/openapi/NetworkPolicySnapshot/valid/published.json +7 -0
- package/fixtures/openapi/NetworkResourceInput/invalid/invalid-port.json +10 -0
- package/fixtures/openapi/NetworkResourceInput/valid/protected-cidr.json +10 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentInput/invalid/excessive-ttl.json +7 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentInput/valid/endpoint.json +7 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentSecret/invalid/short-token.json +15 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentSecret/valid/pending.json +15 -0
- package/fixtures/openapi/NetworkSession/invalid/unknown-status.json +14 -0
- package/fixtures/openapi/NetworkSession/valid/restricted-vpn-ztna.json +16 -0
- package/fixtures/openapi/NetworkSessionActionExecuteInput/invalid/short-hash.json +6 -0
- package/fixtures/openapi/NetworkSessionActionExecuteInput/valid/restrict.json +6 -0
- package/fixtures/openapi/NetworkSessionActionInput/invalid/unknown-action.json +5 -0
- package/fixtures/openapi/NetworkSessionActionInput/valid/restrict.json +5 -0
- package/fixtures/openapi/NetworkSessionActionPlan/invalid/missing-hash.json +12 -0
- package/fixtures/openapi/NetworkSessionActionPlan/valid/fallback-disconnect.json +13 -0
- package/fixtures/openapi/NetworkSessionCommand/invalid/unknown-status.json +14 -0
- package/fixtures/openapi/NetworkSessionCommand/valid/pending.json +14 -0
- package/fixtures/openapi/NetworkSiteInput/invalid/unknown-status.json +4 -0
- package/fixtures/openapi/NetworkSiteInput/valid/shanghai.json +5 -0
- package/fixtures/openapi/NetworkSiteProfileBinding/invalid/vlan.json +9 -0
- package/fixtures/openapi/NetworkSiteProfileBinding/valid/default.json +10 -0
- package/fixtures/openapi/NetworkSiteProfileBindingInput/invalid/timeout.json +7 -0
- package/fixtures/openapi/NetworkSiteProfileBindingInput/valid/default.json +7 -0
- package/fixtures/openapi/NetworkSpaceInput/invalid/empty-cidrs.json +6 -0
- package/fixtures/openapi/NetworkSpaceInput/invalid/malformed-cidr.json +6 -0
- package/fixtures/openapi/NetworkSpaceInput/valid/corp.json +6 -0
- package/fixtures/openapi/NetworkTelemetrySummary/invalid/raw-destination.json +29 -0
- package/fixtures/openapi/NetworkTelemetrySummary/valid/proxy-flow.json +36 -0
- package/fixtures/openapi/OIDCClientInput/valid/generated-client-id.json +8 -0
- package/fixtures/openapi/OIDCClientSecretRevealEnvelope/invalid/missing-secret.json +6 -0
- package/fixtures/openapi/OIDCClientSecretRevealEnvelope/valid/reveal.json +7 -0
- package/fixtures/openapi/PasswordChangeResult/invalid/unexpected-status.json +3 -0
- package/fixtures/openapi/PasswordChangeResult/valid/ok.json +3 -0
- package/fixtures/openapi/PortalApplicationListEnvelope/invalid/missing-items.json +1 -0
- package/fixtures/openapi/PortalApplicationListEnvelope/valid/minimal.json +12 -0
- package/fixtures/openapi/PortalBootstrapEnvelope/invalid/missing-security.json +17 -0
- package/fixtures/openapi/PortalBootstrapEnvelope/valid/minimal.json +31 -0
- package/fixtures/openapi/PortalLaunchDecisionEnvelope/invalid/missing-launch-url.json +14 -0
- package/fixtures/openapi/PortalLaunchDecisionEnvelope/valid/desktop-handoff.json +16 -0
- package/fixtures/openapi/PortalLaunchRequest/invalid/unknown-surface.json +3 -0
- package/fixtures/openapi/PortalLaunchRequest/valid/default-web.json +1 -0
- package/fixtures/openapi/PortalLaunchRequest/valid/desktop.json +3 -0
- package/fixtures/openapi/PortalSecuritySummaryEnvelope/invalid/missing-session-count.json +15 -0
- package/fixtures/openapi/PortalSecuritySummaryEnvelope/valid/minimal.json +16 -0
- package/fixtures/openapi/ResourceLease/invalid/missing-session.json +10 -0
- package/fixtures/openapi/ResourceLease/valid/active.json +11 -0
- package/fixtures/openapi/ScopeGrantInput/invalid/delivery-missing-business-line.json +7 -0
- package/fixtures/openapi/ScopeGrantInput/invalid/platform-missing-clusters.json +7 -0
- package/fixtures/openapi/ScopeGrantInput/valid/platform.json +8 -0
- package/fixtures/openapi/SoftwarePackage/valid/software-package.json +6 -0
- package/fixtures/openapi/SoftwarePackageDownloadRecord/invalid/negative-duration.json +6 -0
- package/fixtures/openapi/SoftwarePackageDownloadRecord/valid/software-package-download-record.json +8 -0
- package/fixtures/openapi/SoftwarePackageURLImportRequest/valid/software-package-url-import-request.json +4 -0
- package/fixtures/openapi/SoftwareStorage/invalid/software-storage.json +1 -1
- package/fixtures/openapi/SoftwareStorage/valid/software-storage.json +13 -1
- package/fixtures/openapi/SystemIntegrationCreateRequest/invalid/s3-storage-missing-name.json +5 -0
- package/fixtures/openapi/SystemIntegrationCreateRequest/valid/s3-software-storage.json +18 -0
- package/fixtures/openapi/UpdateProfileRequest/invalid/invalid-avatar-fit.json +5 -0
- package/fixtures/openapi/UpdateProfileRequest/invalid/missing-email.json +3 -0
- package/fixtures/openapi/UpdateProfileRequest/valid/profile.json +7 -0
- package/gen/go/sohaapi/client.go +210 -5
- package/gen/go/sohaapi/client_test.go +128 -5
- package/gen/go/sohaapi/types.go +3326 -369
- package/gen/go/sohaapi/types_test.go +22 -0
- package/gen/ts/sohaapi/index.ts +11612 -6479
- package/network/README.md +116 -0
- package/network/network-ingest-event.schema.json +187 -0
- package/network/network-radius-accounting.schema.json +41 -0
- package/network/network-runtime-protocol.schema.json +752 -0
- package/network/schema.go +26 -0
- package/network/schema_test.go +22 -0
- package/openapi/soha-api.json +29591 -18317
- package/openapi/soha-api.yaml +11603 -6720
- package/openapi/spec_generated.go +3 -3
- package/package.json +5 -1
package/COMPATIBILITY.md
CHANGED
|
@@ -281,6 +281,52 @@ rename `operationId`, `operationKind`, `runnerId`, `state`, `occurredAt`,
|
|
|
281
281
|
`evidence`, `finalState`, or `callback`; must not add new required fields; and
|
|
282
282
|
must not narrow existing lifecycle state names or final status values.
|
|
283
283
|
|
|
284
|
+
## Network Runtime Protocol
|
|
285
|
+
|
|
286
|
+
`network/network-runtime-protocol.schema.json` owns messages exchanged by
|
|
287
|
+
network-control, endpoint services and network gateways. The contract carries
|
|
288
|
+
runtime identity, configuration and policy versions, bounded lease grants and
|
|
289
|
+
apply/revoke acknowledgements. It must never carry WireGuard private keys,
|
|
290
|
+
RADIUS shared secrets, passwords, EAP private material or mihomo subscription
|
|
291
|
+
credentials.
|
|
292
|
+
|
|
293
|
+
For `0.1.x`, patch releases may add optional fields and new message types with
|
|
294
|
+
strict payload definitions. They must not remove or rename `schemaVersion`,
|
|
295
|
+
`messageId`, `messageType`, `producerId`, `runtimeId`, `runtimeKind`,
|
|
296
|
+
`occurredAt`, `expiresAt` or `payload`; must not remove existing message,
|
|
297
|
+
runtime-kind, access-profile or status enum values; and must not loosen unknown
|
|
298
|
+
field rejection. Existing lease identity, subject/device binding, policy
|
|
299
|
+
version and expiry fields must remain required.
|
|
300
|
+
|
|
301
|
+
NAS authorization and session control use the same versioned envelope. Their
|
|
302
|
+
payloads contain only Soha identity references, bounded standard RADIUS
|
|
303
|
+
attributes and command acknowledgements. Public management bindings map a NAS
|
|
304
|
+
to one registered runtime/site and an access profile to site enforcement
|
|
305
|
+
attributes; neither contract may add RADIUS shared secrets or authentication
|
|
306
|
+
credential material.
|
|
307
|
+
|
|
308
|
+
WireGuard enrollment carries only a public key. VPN connection authorization
|
|
309
|
+
creates a session-scoped NetworkLease; desired configuration may add a strict
|
|
310
|
+
WireGuard block with overlay addresses, peers, split routes and default-deny
|
|
311
|
+
firewall rules. Private keys never cross this contract. Existing consumers
|
|
312
|
+
must ignore no fields because runtime messages remain closed; therefore a
|
|
313
|
+
consumer advertises `wireguard` only after it supports the full block and its
|
|
314
|
+
configuration version/readback semantics.
|
|
315
|
+
|
|
316
|
+
## Network Ingest Event
|
|
317
|
+
|
|
318
|
+
`network/network-ingest-event.schema.json` owns bounded, replayable telemetry
|
|
319
|
+
batches sent to `/api/ingest/v1/**`. Heartbeat, RADIUS Accounting, flow
|
|
320
|
+
aggregate and connection summary payloads remain typed and cannot be treated
|
|
321
|
+
as authorization state.
|
|
322
|
+
|
|
323
|
+
For `0.1.x`, patch releases may add optional fields, producer kinds and event
|
|
324
|
+
types with strict payload definitions. They must not remove or rename
|
|
325
|
+
`schemaVersion`, `batchId`, `producerId`, `producerKind`, `sentAt`, `events`,
|
|
326
|
+
event `id`, `type`, `sequence`, `occurredAt` or `payload`; must not remove
|
|
327
|
+
existing enum values; must not raise the 1,000-event batch maximum without a
|
|
328
|
+
resource-limit review; and must not introduce an open provider payload object.
|
|
329
|
+
|
|
284
330
|
## Permission Catalog
|
|
285
331
|
|
|
286
332
|
`auth/permission-catalog.json` owns grantable OpenSoha resource/action keys,
|
package/README.md
CHANGED
|
@@ -32,6 +32,8 @@ auth/token-claims.schema.json Token/JWT claims contract
|
|
|
32
32
|
auth/permission-catalog.json Canonical resource/action permission catalog
|
|
33
33
|
auth/permission-catalog.schema.json Permission definition and migration metadata
|
|
34
34
|
connectors/connector-event-envelope.schema.json Connector runtime event batch envelope
|
|
35
|
+
network/network-runtime-protocol.schema.json Network control/runtime message contract
|
|
36
|
+
network/network-ingest-event.schema.json Bounded heartbeat, Accounting and flow event batches
|
|
35
37
|
gen/go/sohaapi Go SDK types for stable cross-repo contracts
|
|
36
38
|
gen/ts/sohaapi TypeScript SDK types for stable Web contracts
|
|
37
39
|
```
|
|
@@ -147,6 +149,12 @@ failure.
|
|
|
147
149
|
|
|
148
150
|
## Consumer Matrix
|
|
149
151
|
|
|
152
|
+
Network runtime schemas and network-access DTOs require `0.1.17` or later;
|
|
153
|
+
they are absent from npm `0.1.16` and Go `v0.1.15`. For unpublished changes,
|
|
154
|
+
use the local consumer matrix below: it packs this checkout for Web and
|
|
155
|
+
supplies an isolated Go workspace. After publishing, update consumer versions
|
|
156
|
+
and lockfiles and verify them without the local override.
|
|
157
|
+
|
|
150
158
|
The cross-repository consumer gate is:
|
|
151
159
|
|
|
152
160
|
```sh
|
|
@@ -163,9 +171,10 @@ npm run check:consumers -- --consumer soha-cli --require-all
|
|
|
163
171
|
npm run check:consumers -- --consumer soha-agent --require-all
|
|
164
172
|
```
|
|
165
173
|
|
|
166
|
-
Go consumers run in a temporary `go.work` that
|
|
167
|
-
|
|
168
|
-
|
|
174
|
+
Go consumers run in a temporary `go.work` that replaces the contracts module
|
|
175
|
+
with this checkout. `soha-web` runs `npm ci`, installs a packed copy of this
|
|
176
|
+
checkout without changing its dependency manifest or lockfile, and builds
|
|
177
|
+
against that package.
|
|
169
178
|
|
|
170
179
|
Use `--dry-run` to inspect the discovered commands without executing consumer
|
|
171
180
|
builds.
|
|
@@ -6,8 +6,8 @@ import _ "embed"
|
|
|
6
6
|
|
|
7
7
|
const (
|
|
8
8
|
PermissionCatalogVersion = "2.0.0"
|
|
9
|
-
PermissionCatalogContentSHA256 = "
|
|
10
|
-
PermissionCatalogSHA256 = "
|
|
9
|
+
PermissionCatalogContentSHA256 = "f744896d362070a1e7cdc1eda89c046bee8132f37c6f323dafdd05644e2dbd3c"
|
|
10
|
+
PermissionCatalogSHA256 = "354ad414691ff0578d805036bbbe80da28d242d0bbabe4699e490af1b6bd87bb"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
//go:embed permission-catalog.json
|
package/auth/catalog_test.go
CHANGED
|
@@ -52,6 +52,38 @@ func TestPermissionCatalogIncludesVirtualizationStorageView(t *testing.T) {
|
|
|
52
52
|
t.Fatal("virtualization.storage.view is missing")
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
func TestPermissionCatalogIncludesDeliveryEnvironmentApproval(t *testing.T) {
|
|
56
|
+
var catalog struct {
|
|
57
|
+
Permissions []struct {
|
|
58
|
+
Key string `json:"key"`
|
|
59
|
+
Domain string `json:"domain"`
|
|
60
|
+
Resource string `json:"resource"`
|
|
61
|
+
Action string `json:"action"`
|
|
62
|
+
RiskLevel string `json:"riskLevel"`
|
|
63
|
+
ScopeKinds []string `json:"scopeKinds"`
|
|
64
|
+
ApprovalPolicy string `json:"approvalPolicy"`
|
|
65
|
+
Status string `json:"status"`
|
|
66
|
+
Assignable bool `json:"assignable"`
|
|
67
|
+
} `json:"permissions"`
|
|
68
|
+
}
|
|
69
|
+
if err := json.Unmarshal(PermissionCatalogJSON(), &catalog); err != nil {
|
|
70
|
+
t.Fatalf("decode permission catalog: %v", err)
|
|
71
|
+
}
|
|
72
|
+
for _, permission := range catalog.Permissions {
|
|
73
|
+
if permission.Key != "delivery.application-environments.approve" {
|
|
74
|
+
continue
|
|
75
|
+
}
|
|
76
|
+
if permission.Domain != "delivery" || permission.Resource != "application-environments" || permission.Action != "approve" ||
|
|
77
|
+
permission.RiskLevel != "high" || permission.ApprovalPolicy != "eligible" || permission.Status != "active" ||
|
|
78
|
+
!permission.Assignable || len(permission.ScopeKinds) != 3 || permission.ScopeKinds[0] != "workspace" ||
|
|
79
|
+
permission.ScopeKinds[1] != "project" || permission.ScopeKinds[2] != "resource" {
|
|
80
|
+
t.Fatalf("unexpected delivery environment approval permission: %#v", permission)
|
|
81
|
+
}
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
t.Fatal("delivery.application-environments.approve is missing")
|
|
85
|
+
}
|
|
86
|
+
|
|
55
87
|
func TestPermissionCatalogIncludesIndependentResourceCreationEntry(t *testing.T) {
|
|
56
88
|
var catalog struct {
|
|
57
89
|
Permissions []struct {
|