@opensoha/contracts 0.1.23 → 0.1.25
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 +95 -0
- package/README.md +24 -6
- package/agent/environment/README.md +55 -0
- package/agent/environment/export.go +139 -0
- package/agent/environment/export_test.go +62 -0
- package/agent/environment/preflight.go +62 -0
- package/agent/environment/preflight_test.go +41 -0
- package/agent/environment/protocol.go +221 -0
- package/agent/environment/protocol_test.go +81 -0
- package/agent/environment-lease.schema.json +2 -2
- package/agent/environment-template.schema.json +1 -1
- package/agent/guest/browser_network.go +77 -0
- package/agent/guest/data.go +62 -0
- package/agent/guest/protocol.go +235 -0
- package/agent/guest/protocol_test.go +142 -0
- package/agent/guest/renewal.go +56 -0
- package/agent/guest/renewal_test.go +53 -0
- package/agent/guest/runtime.go +315 -0
- package/agent/guest/runtime_json.go +75 -0
- package/agent/guest/runtime_test.go +110 -0
- package/agent/personal-browser-network-request.schema.json +40 -0
- package/agent/personal-browser-network-response.schema.json +44 -0
- package/agent/personal-environment-export.schema.json +55 -0
- package/agent/personal-environment-preflight-request.schema.json +52 -0
- package/agent/personal-environment-preflight-result.schema.json +69 -0
- package/agent/personal-environment-request.schema.json +137 -0
- package/agent/personal-environment-result.schema.json +101 -0
- package/agent/personal-guest-binding.schema.json +92 -0
- package/agent/personal-guest-data-plan.schema.json +32 -0
- package/agent/personal-guest-enrollment.schema.json +21 -0
- package/agent/personal-guest-heartbeat.schema.json +44 -0
- package/agent/personal-guest-provisioning.schema.json +71 -0
- package/agent/personal-guest-renewal.schema.json +33 -0
- package/agent/personal-guest-runtime-result.schema.json +164 -0
- package/agent/personal-guest-runtime.schema.json +304 -0
- package/agent/personal-guest-tools.schema.json +75 -0
- package/auth/catalog_generated.go +2 -2
- package/auth/gateway_permissions_test.go +48 -0
- package/auth/permission-catalog.json +331 -1
- package/auth/token-claims.schema.json +5 -0
- package/compat/consumer-revisions.json +3 -2
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/connectors/connector-action.schema.json +138 -0
- package/fixtures/json-schema/connector-action/invalid/empty-values.json +11 -0
- package/fixtures/json-schema/connector-action/invalid/invalid-expiry.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/lowercase-alias.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/unknown-entry-field.json +17 -0
- package/fixtures/json-schema/connector-action/invalid/unknown-frame-field.json +17 -0
- package/fixtures/json-schema/connector-action/invalid/unknown-version.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/unversioned-reference.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/zero-version.json +16 -0
- package/fixtures/json-schema/connector-action/valid/pinned.json +16 -0
- package/fixtures/json-schema/connector-definition/invalid/credential-userinfo.json +8 -0
- package/fixtures/json-schema/connector-definition/invalid/reference-traversal.json +8 -0
- package/fixtures/json-schema/connector-definition/invalid/zero-version.json +8 -0
- package/fixtures/json-schema/connector-definition/valid/canonical.json +8 -0
- package/fixtures/json-schema/connector-definition/valid/pinned.json +8 -0
- package/fixtures/json-schema/personal-browser-network-request/invalid/bounded.json +4 -0
- package/fixtures/json-schema/personal-browser-network-request/valid/bounded.json +4 -0
- package/fixtures/json-schema/personal-browser-network-response/invalid/bounded.json +5 -0
- package/fixtures/json-schema/personal-browser-network-response/valid/bounded.json +5 -0
- package/fixtures/json-schema/personal-environment-export/invalid/extra.json +11 -0
- package/fixtures/json-schema/personal-environment-export/invalid/ownerId.json +10 -0
- package/fixtures/json-schema/personal-environment-export/invalid/sha256.json +10 -0
- package/fixtures/json-schema/personal-environment-export/invalid/sizeBytes.json +10 -0
- package/fixtures/json-schema/personal-environment-export/valid/complete.json +10 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/disk.json +11 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/network.json +11 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/node.json +12 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/owner.json +12 -0
- package/fixtures/json-schema/personal-environment-preflight-request/valid/bounded.json +11 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/disk.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/network.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/no-hard-quota.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/node.json +16 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/not-ready.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/owner.json +16 -0
- package/fixtures/json-schema/personal-environment-preflight-result/valid/bounded.json +15 -0
- package/fixtures/json-schema/personal-environment-request/invalid/delete-data-argv.json +24 -0
- package/fixtures/json-schema/personal-environment-request/invalid/delete-data-createData.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/delete-data-taskId.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/export-argv.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/export-createData.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/export-taskId.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/extra-command.json +24 -0
- package/fixtures/json-schema/personal-environment-request/invalid/host-workspace.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/image-injection.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/network-egress.json +21 -0
- package/fixtures/json-schema/personal-environment-request/invalid/no-command.json +21 -0
- package/fixtures/json-schema/personal-environment-request/invalid/recreate-on-release.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/relative-command.json +24 -0
- package/fixtures/json-schema/personal-environment-request/invalid/released-identity.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-empty.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-host-path.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-noncanonical.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-null.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-on-inspection.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/unbounded-quota.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/acquire.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/delete-data.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/execute.json +26 -0
- package/fixtures/json-schema/personal-environment-request/valid/export-data.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/inspect.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/provision.json +22 -0
- package/fixtures/json-schema/personal-environment-request/valid/release.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/task-workspace.json +27 -0
- package/fixtures/json-schema/personal-environment-result/invalid/active-without-observation.json +7 -0
- package/fixtures/json-schema/personal-environment-result/invalid/deleted-output.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/deleted-snapshot.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/deleted-taskId.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/private-handle.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/stopped-fake-observation.json +20 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-empty.json +22 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-host-path.json +22 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-null.json +22 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-on-stopped.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-without-command-output.json +21 -0
- package/fixtures/json-schema/personal-environment-result/valid/active.json +21 -0
- package/fixtures/json-schema/personal-environment-result/valid/deleted.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/expired.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/missing.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/released.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/task-workspace.json +22 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/host-path.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/invalid-policy.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/invalid-serial.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/legacy-version.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/missing-generation.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/missing-identity.json +16 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/missing-provider-identity.json +16 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/raw-provider-identity.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/valid/minimal.json +17 -0
- package/fixtures/json-schema/personal-guest-data-plan/invalid/quota.json +1 -0
- package/fixtures/json-schema/personal-guest-data-plan/valid/basic.json +1 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/capabilities.json +7 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/legacy-version.json +4 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/missing-identity.json +3 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/ownerId.json +5 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/token.json +5 -0
- package/fixtures/json-schema/personal-guest-enrollment/valid/minimal.json +4 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/argv.json +11 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/legacy-version.json +8 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/missing-identity.json +7 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/owner.json +9 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/self-ready.json +9 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/zero-sequence.json +8 -0
- package/fixtures/json-schema/personal-guest-heartbeat/valid/minimal.json +8 -0
- package/fixtures/json-schema/personal-guest-provisioning/invalid/network.json +1 -0
- package/fixtures/json-schema/personal-guest-provisioning/valid/basic.json +1 -0
- package/fixtures/json-schema/personal-guest-renewal/invalid/unknown.json +1 -0
- package/fixtures/json-schema/personal-guest-renewal/valid/basic.json +1 -0
- package/fixtures/json-schema/personal-guest-runtime/invalid/minimal.json +45 -0
- package/fixtures/json-schema/personal-guest-runtime/valid/minimal.json +45 -0
- package/fixtures/json-schema/personal-guest-runtime-result/invalid/minimal.json +28 -0
- package/fixtures/json-schema/personal-guest-runtime-result/valid/minimal.json +27 -0
- package/fixtures/json-schema/personal-guest-tools/invalid/minimal.json +31 -0
- package/fixtures/json-schema/personal-guest-tools/valid/minimal.json +30 -0
- package/fixtures/json-schema/source-import-policy/invalid/case-variant-scope.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/case-variant-version.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/duplicate-grant.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/empty-id.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/future-version.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/unknown-field.json +4 -0
- package/fixtures/json-schema/source-import-policy/valid/deny-all.json +4 -0
- package/fixtures/json-schema/source-import-policy/valid/shared.json +4 -0
- package/fixtures/json-schema/token-claims/invalid/authz-negative.json +23 -0
- package/fixtures/json-schema/token-claims/invalid/authz-string.json +23 -0
- package/fixtures/json-schema/token-claims/invalid/authz-zero.json +23 -0
- package/fixtures/json-schema/token-claims/valid/versioned-session.json +23 -0
- package/fixtures/openapi/AgentRunEventListEnvelope/invalid/basic.json +8 -0
- package/fixtures/openapi/AgentRunEventListEnvelope/valid/basic.json +8 -0
- package/fixtures/openapi/AgentRunEventListEnvelope/valid/native.json +1 -0
- package/fixtures/openapi/AgentRunResumeRequest/invalid/basic.json +3 -0
- package/fixtures/openapi/AgentRunResumeRequest/valid/basic.json +3 -0
- package/fixtures/openapi/AgentSSHCommandRequest/invalid/task51.json +24 -0
- package/fixtures/openapi/AgentSSHCommandRequest/valid/task51.json +23 -0
- package/fixtures/openapi/AgentSSHCommandResult/invalid/task51.json +8 -0
- package/fixtures/openapi/AgentSSHCommandResult/valid/task51.json +7 -0
- package/fixtures/openapi/AgentSSHSessionRequest/invalid/task51.json +20 -0
- package/fixtures/openapi/AgentSSHSessionRequest/valid/task51.json +19 -0
- package/fixtures/openapi/CapabilityTaskInput/invalid/duplicate-scope.json +36 -0
- package/fixtures/openapi/CapabilityTaskInput/valid/scoped.json +32 -0
- package/fixtures/openapi/DockerQuickCreateHostInput/invalid/guest-access.json +7 -0
- package/fixtures/openapi/DockerQuickCreateHostInput/valid/guest-access.json +9 -0
- package/fixtures/openapi/KnowledgeSourceDocument/invalid/tombstone-with-content.json +1 -0
- package/fixtures/openapi/KnowledgeSourceDocument/valid/tombstone.json +1 -0
- package/fixtures/openapi/KubernetesAgentActionCheck/invalid/unproven-state.json +6 -0
- package/fixtures/openapi/KubernetesAgentActionCheck/valid/configured-denied.json +9 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/invalid/wildcard.json +1 -0
- package/fixtures/openapi/KubernetesAgentActionProfile/valid/workbench.json +1 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/invalid/action-profile.json +3 -0
- package/fixtures/openapi/KubernetesClusterRegistrationRequest/valid/action-profile.json +5 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/condition-status-boolean.json +17 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/invalid/taint-effect-missing.json +16 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/legacy-fields-absent.json +11 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/no-taints.json +13 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/ready-cordoned-tainted.json +28 -0
- package/fixtures/openapi/KubernetesNodeListEnvelope/valid/unknown-fields-null.json +13 -0
- package/fixtures/openapi/KubernetesResourceUpdatePlanRequest/invalid/missing-required.json +1 -0
- package/fixtures/openapi/KubernetesResourceYaml/invalid/missing-required.json +1 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/invalid/empty-as-success.json +5 -0
- package/fixtures/openapi/KubernetesTopologyCoverage/valid/not-installed.json +6 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/invalid/negative-weight.json +8 -0
- package/fixtures/openapi/KubernetesTopologyGraphEdge/valid/zero-weight.json +20 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/invalid/fake-flow-kind.json +42 -0
- package/fixtures/openapi/KubernetesTopologyGraphNode/valid/rule.json +42 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/invalid/raw-source-field.json +33 -0
- package/fixtures/openapi/KubernetesTopologySnapshot/valid/projected-source.json +32 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/invalid/arbitrary-gvr.json +8 -0
- package/fixtures/openapi/KubernetesTopologySnapshotRequest/valid/bounded-sources.json +11 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/invalid/cluster-namespace.json +4 -0
- package/fixtures/openapi/KubernetesTopologySourceQuery/valid/all-namespaces.json +4 -0
- package/fixtures/openapi/ObservabilityDataSource/invalid/missing-required.json +1 -0
- package/fixtures/openapi/PersonalAgentAccess/invalid/invalid.json +1 -0
- package/fixtures/openapi/PersonalAgentAccess/valid/valid.json +1 -0
- package/fixtures/openapi/PersonalAgentAccessDecision/invalid/invalid.json +1 -0
- package/fixtures/openapi/PersonalAgentAccessDecision/valid/valid.json +1 -0
- package/fixtures/openapi/PersonalAssistantArtifactListEnvelope/invalid/owner.json +8 -0
- package/fixtures/openapi/PersonalAssistantArtifactListEnvelope/valid/side-chat.json +9 -0
- package/fixtures/openapi/PersonalAssistantAvatarRequest/invalid/motion.json +1 -0
- package/fixtures/openapi/PersonalAssistantAvatarRequest/invalid/owner.json +1 -0
- package/fixtures/openapi/PersonalAssistantAvatarRequest/invalid/remote.json +1 -0
- package/fixtures/openapi/PersonalAssistantAvatarRequest/invalid/svg.json +1 -0
- package/fixtures/openapi/PersonalAssistantAvatarRequest/valid/raster.json +1 -0
- package/fixtures/openapi/PersonalAssistantAvatarRequest/valid/reset.json +1 -0
- package/fixtures/openapi/PersonalAssistantUpdateRequest/invalid/empty.json +1 -0
- package/fixtures/openapi/PersonalAssistantUpdateRequest/invalid/owner.json +1 -0
- package/fixtures/openapi/PersonalAssistantUpdateRequest/valid/name.json +1 -0
- package/fixtures/openapi/PersonalDockerEnvironmentPolicy/invalid/host-url.json +12 -0
- package/fixtures/openapi/PersonalDockerEnvironmentPolicy/invalid/lifetime.json +11 -0
- package/fixtures/openapi/PersonalDockerEnvironmentPolicy/invalid/unknown-agent.json +11 -0
- package/fixtures/openapi/PersonalDockerEnvironmentPolicy/valid/basic.json +11 -0
- package/fixtures/openapi/PersonalEnvironment/invalid/invented-state.json +6 -0
- package/fixtures/openapi/PersonalEnvironment/invalid/missing-state.json +5 -0
- package/fixtures/openapi/PersonalEnvironment/invalid/negative-generation.json +7 -0
- package/fixtures/openapi/PersonalEnvironment/invalid/network.json +23 -0
- package/fixtures/openapi/PersonalEnvironment/invalid/private-node.json +24 -0
- package/fixtures/openapi/PersonalEnvironment/invalid/unsupported-backend.json +7 -0
- package/fixtures/openapi/PersonalEnvironment/valid/deleted.json +23 -0
- package/fixtures/openapi/PersonalEnvironment/valid/deleting.json +23 -0
- package/fixtures/openapi/PersonalEnvironment/valid/deletion_unknown.json +23 -0
- package/fixtures/openapi/PersonalEnvironment/valid/frozen-binding.json +13 -0
- package/fixtures/openapi/PersonalEnvironment/valid/ready.json +23 -0
- package/fixtures/openapi/PersonalEnvironment/valid/unknown.json +23 -0
- package/fixtures/openapi/PersonalEnvironment/valid/unprovisioned.json +6 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/invalid/command.json +3 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/invalid/node.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/invalid/owner.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/invalid/quota.json +10 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/valid/reconcile.json +3 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/valid/sleep.json +3 -0
- package/fixtures/openapi/PersonalEnvironmentActionRequest/valid/wake.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentDataDeletionRequest/invalid/empty-name.json +5 -0
- package/fixtures/openapi/PersonalEnvironmentDataDeletionRequest/invalid/long-name.json +5 -0
- package/fixtures/openapi/PersonalEnvironmentDataDeletionRequest/invalid/missing-name.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentDataDeletionRequest/invalid/owner.json +6 -0
- package/fixtures/openapi/PersonalEnvironmentDataDeletionRequest/invalid/stale-version.json +5 -0
- package/fixtures/openapi/PersonalEnvironmentDataDeletionRequest/valid/confirmed.json +5 -0
- package/fixtures/openapi/PersonalEnvironmentDataExportRequest/invalid/assistantId.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentDataExportRequest/invalid/environmentVersion.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentDataExportRequest/invalid/ownerId.json +5 -0
- package/fixtures/openapi/PersonalEnvironmentDataExportRequest/valid/current.json +4 -0
- package/fixtures/openapi/PersonalEnvironmentEnvelope/invalid/missing-data.json +1 -0
- package/fixtures/openapi/PersonalEnvironmentEnvelope/valid/state.json +8 -0
- package/fixtures/openapi/PersonalEnvironmentQuota/invalid/cpu.json +7 -0
- package/fixtures/openapi/PersonalEnvironmentQuota/invalid/disk.json +7 -0
- package/fixtures/openapi/PersonalEnvironmentQuota/invalid/network.json +7 -0
- package/fixtures/openapi/PersonalEnvironmentQuota/invalid/processes.json +7 -0
- package/fixtures/openapi/PersonalEnvironmentQuota/valid/basic.json +7 -0
- package/fixtures/openapi/PersonalEnvironmentTemplate/invalid/mode.json +13 -0
- package/fixtures/openapi/PersonalEnvironmentTemplate/invalid/network.json +13 -0
- package/fixtures/openapi/PersonalEnvironmentTemplate/invalid/node.json +14 -0
- package/fixtures/openapi/PersonalEnvironmentTemplate/valid/template.json +13 -0
- package/fixtures/openapi/PersonalEnvironmentTemplateListEnvelope/invalid/missing.json +1 -0
- package/fixtures/openapi/PersonalEnvironmentTemplateListEnvelope/invalid/unbounded.json +1317 -0
- package/fixtures/openapi/PersonalEnvironmentTemplateListEnvelope/valid/choices.json +17 -0
- package/fixtures/openapi/PersonalEnvironmentTemplateListEnvelope/valid/empty.json +3 -0
- package/fixtures/openapi/PersonalEnvironmentUsage/invalid/negative.json +6 -0
- package/fixtures/openapi/PersonalEnvironmentUsage/valid/usage.json +6 -0
- package/fixtures/openapi/PersonalFeedFeedback/invalid/owner.json +4 -0
- package/fixtures/openapi/PersonalFeedFeedback/valid/liked.json +3 -0
- package/fixtures/openapi/PersonalFeedItem/invalid/no-source.json +9 -0
- package/fixtures/openapi/PersonalFeedItem/valid/post.json +15 -0
- package/fixtures/openapi/PersonalFeedSettings/invalid/owner.json +6 -0
- package/fixtures/openapi/PersonalFeedSettings/valid/default.json +5 -0
- package/fixtures/openapi/PersonalGuestPreparationInput/invalid/foreign-owner.json +5 -0
- package/fixtures/openapi/PersonalGuestPreparationInput/invalid/unsafe-counter.json +4 -0
- package/fixtures/openapi/PersonalGuestPreparationInput/valid/ed25519-csr.json +4 -0
- package/fixtures/openapi/PersonalGuestRuntimeEnvelope/invalid/minimal.json +10 -0
- package/fixtures/openapi/PersonalGuestRuntimeEnvelope/valid/minimal.json +9 -0
- package/fixtures/openapi/PersonalGuestRuntimeInput/invalid/minimal.json +6 -0
- package/fixtures/openapi/PersonalGuestRuntimeInput/valid/minimal.json +8 -0
- package/fixtures/openapi/PersonalGuestToolsInput/invalid/minimal.json +5 -0
- package/fixtures/openapi/PersonalGuestToolsInput/valid/minimal.json +4 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/invalid/device.json +15 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/invalid/fractional-size.json +15 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/invalid/network.json +15 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/invalid/owner.json +15 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/invalid/provider.json +15 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/invalid/unknown.json +16 -0
- package/fixtures/openapi/PersonalVMEnvironmentPolicy/valid/pve.json +15 -0
- package/fixtures/openapi/PersonalWorkspaceRuntime/invalid/shared.json +3 -0
- package/fixtures/openapi/PersonalWorkspaceRuntime/valid/shared.json +4 -0
- package/fixtures/openapi/PersonalWorkspaceRuntimeEnvelope/invalid/shared.json +5 -0
- package/fixtures/openapi/PersonalWorkspaceRuntimeEnvelope/valid/shared.json +6 -0
- package/fixtures/openapi/ResourceMonitoringPanel/invalid/unknown-quality.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPanel/valid/not-collected.json +7 -0
- package/fixtures/openapi/ResourceMonitoringPoint/invalid/string-zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/missing.json +4 -0
- package/fixtures/openapi/ResourceMonitoringPoint/valid/zero.json +4 -0
- package/fixtures/openapi/ResourceMonitoringView/invalid/raw-query.json +12 -0
- package/fixtures/openapi/ResourceMonitoringView/valid/unconfigured.json +12 -0
- package/fixtures/openapi/SecretGenerateSSHKeyRequest/invalid/task51.json +6 -0
- package/fixtures/openapi/SecretGenerateSSHKeyRequest/valid/task51.json +12 -0
- package/fixtures/openapi/SecretReferenceUsage/invalid/version.json +6 -0
- package/fixtures/openapi/SecretReferenceUsage/valid/version.json +8 -0
- package/fixtures/openapi/VMSSHCredentialRedemptionInput/invalid/task51.json +7 -0
- package/fixtures/openapi/VMSSHCredentialRedemptionInput/valid/task51.json +6 -0
- package/fixtures/openapi/VirtualMachineAccessBindingInput/invalid/task51.json +10 -0
- package/fixtures/openapi/VirtualMachineAccessBindingInput/valid/task51.json +10 -0
- package/fixtures/openapi/VirtualMachineActionInput/invalid/capacity-not-boolean.json +1 -0
- package/fixtures/openapi/VirtualMachineActionInput/valid/new-data-with-admission.json +1 -0
- package/fixtures/openapi/VirtualMachineCreateInput/valid/cloud-image.json +12 -0
- package/fixtures/openapi/VirtualMachineDiskChange/invalid/serial-config-injection.json +1 -0
- package/fixtures/openapi/VirtualMachineDiskChange/invalid/serial-existing-disk.json +1 -0
- package/fixtures/openapi/VirtualMachineDiskChange/invalid/serial-too-long.json +1 -0
- package/fixtures/openapi/VirtualMachineDiskChange/valid/personal-data.json +1 -0
- package/fixtures/openapi/VirtualMachineGuestAccessInput/invalid/task51.json +4 -0
- package/fixtures/openapi/VirtualMachineGuestAccessInput/valid/task51.json +6 -0
- package/fixtures/openapi/VirtualMachineSSHCommand/invalid/task51.json +9 -0
- package/fixtures/openapi/VirtualMachineSSHCommand/valid/task51.json +8 -0
- package/fixtures/openapi/VirtualMachineSSHCommandInput/invalid/task51.json +5 -0
- package/fixtures/openapi/VirtualMachineSSHCommandInput/valid/task51.json +5 -0
- package/fixtures/openapi/VirtualMachineSSHFrame/invalid/encoding.json +5 -0
- package/fixtures/openapi/VirtualMachineSSHFrame/invalid/task51.json +4 -0
- package/fixtures/openapi/VirtualMachineSSHFrame/valid/binary.json +5 -0
- package/fixtures/openapi/VirtualMachineSSHFrame/valid/task51.json +5 -0
- package/fixtures/openapi/VirtualMachineSSHSessionInput/invalid/task51.json +4 -0
- package/fixtures/openapi/VirtualMachineSSHSessionInput/valid/task51.json +5 -0
- package/fixtures/openapi/VirtualizationCapacityPolicyInput/invalid/task51.json +12 -0
- package/fixtures/openapi/VirtualizationCapacityPolicyInput/valid/task51.json +13 -0
- package/fixtures/openapi/VirtualizationImageInput/invalid/cloud-image-config-type.json +6 -0
- package/fixtures/openapi/VirtualizationImageInput/valid/cloud-image.json +11 -0
- package/fixtures/openapi/WorkbenchAssistantTask/invalid/kind.json +1 -0
- package/fixtures/openapi/WorkbenchAssistantTask/invalid/owner.json +1 -0
- package/fixtures/openapi/WorkbenchAssistantTask/valid/generate.json +1 -0
- package/fixtures/openapi/WorkbenchAssistantTask/valid/undo.json +1 -0
- package/fixtures/openapi/WorkbenchContextSelection/invalid/remote-image.json +1 -0
- package/fixtures/openapi/WorkbenchContextSelection/invalid/too-many-images.json +1 -0
- package/fixtures/openapi/WorkbenchContextSelection/valid/chat-image.json +9 -0
- package/fixtures/openapi/WorkbenchContextUsage/invalid/fractional-capacity.json +1 -0
- package/fixtures/openapi/WorkbenchContextUsage/invalid/negative.json +1 -0
- package/fixtures/openapi/WorkbenchContextUsage/valid/reported.json +1 -0
- package/fixtures/openapi/WorkbenchContextUsage/valid/unknown.json +1 -0
- package/fixtures/openapi/WorkbenchMainSessionRequest/invalid/owner.json +1 -0
- package/fixtures/openapi/WorkbenchMainSessionRequest/invalid/provider.json +1 -0
- package/fixtures/openapi/WorkbenchMainSessionRequest/valid/empty.json +1 -0
- package/fixtures/openapi/WorkbenchMainSessionRequest/valid/provider.json +1 -0
- package/fixtures/openapi/WorkbenchMessageSearchPage/invalid/role.json +12 -0
- package/fixtures/openapi/WorkbenchMessageSearchPage/valid/page.json +12 -0
- package/fixtures/openapi/WorkbenchMessageWindow/invalid/missing.json +1 -0
- package/fixtures/openapi/WorkbenchMessageWindow/valid/empty.json +3 -0
- package/fixtures/openapi/WorkbenchModelOption/invalid/zero-capacity.json +1 -0
- package/fixtures/openapi/WorkbenchModelOption/valid/capacity.json +1 -0
- package/fixtures/openapi/WorkbenchModelOption/valid/unknown.json +1 -0
- package/fixtures/openapi/WorkbenchProfessionalCapabilityInput/invalid/basic.json +7 -0
- package/fixtures/openapi/WorkbenchProfessionalCapabilityInput/valid/basic.json +11 -0
- package/fixtures/openapi/WorkbenchProfessionalCapabilityInput/valid/selected-profile.json +23 -0
- package/fixtures/openapi/WorkbenchSendMessageStreamRequest/invalid/missing-required.json +1 -0
- package/fixtures/openapi/WorkbenchSendMessageStreamRequest/valid/mixed-professional-task.json +22 -0
- package/fixtures/openapi/WorkbenchTaskIntent/invalid/basic.json +5 -0
- package/fixtures/openapi/WorkbenchTaskIntent/invalid/oversized-capability-source.json +3 -0
- package/fixtures/openapi/WorkbenchTaskIntent/valid/basic.json +9 -0
- package/fixtures/openapi/WorkbenchTaskIntent/valid/independent-sources.json +17 -0
- package/gen/go/sohaapi/client.go +1 -1
- package/gen/go/sohaapi/kubernetes_monitoring_test.go +67 -0
- package/gen/go/sohaapi/personal_environment_test.go +25 -0
- package/gen/go/sohaapi/types.go +3460 -433
- package/gen/go/sohaapi/vm_disk_test.go +21 -0
- package/gen/ts/sohaapi/index.ts +5454 -1397
- package/go.mod +61 -49
- package/go.sum +202 -176
- package/knowledge/connector-definition.schema.json +6 -1
- package/knowledge/source-import-policy.schema.json +32 -0
- package/memory/memory-record.schema.json +1 -1
- package/openapi/soha-api.json +24199 -16810
- package/openapi/soha-api.yaml +2537 -14
- package/openapi/spec_generated.go +3 -3
- package/openapi/spec_test.go +34 -0
- package/package.json +19 -3
- package/resource/agent_access.go +12 -0
- package/resource/agent_profiles.go +62 -0
- package/resource/agent_profiles_test.go +36 -0
- package/resource/kubernetes_kinds.go +73 -0
- package/resource/kubernetes_kinds_test.go +38 -0
- package/resource/models.go +23 -14
- package/resource/network_topology.go +166 -0
- package/resource/network_topology_projection.go +208 -0
- package/resource/network_topology_projection_test.go +53 -0
- package/resource/network_topology_test.go +51 -0
- package/resource/network_topology_validation.go +29 -0
- package/resource/node_drain.go +34 -0
- package/resource/resource_monitoring.go +99 -0
- package/resource/runtime/network_topology.go +232 -0
- package/resource/runtime/network_topology_test.go +62 -0
- package/resource/runtime/node_drain.go +124 -0
- package/resource/runtime/node_drain_test.go +95 -0
- package/resource/runtime/resource_edit.go +128 -0
- package/resource/runtime/resource_edit_test.go +183 -0
- package/resource/runtime/resource_monitoring.go +243 -0
- package/resource/runtime/resource_monitoring_test.go +88 -0
- /package/fixtures/openapi/DeliveryExecutionHistoryPage/{invalid-kind.json → invalid/invalid-kind.json} +0 -0
- /package/fixtures/openapi/DeliveryExecutionHistoryPage/{valid-build.json → valid/valid-build.json} +0 -0
- /package/fixtures/openapi/DeliveryExecutionHistoryPage/{valid-empty.json → valid/valid-empty.json} +0 -0
package/openapi/soha-api.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.1.0
|
|
2
2
|
info:
|
|
3
3
|
title: Soha API
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.25
|
|
5
5
|
description: >
|
|
6
6
|
Public OpenSoha core API contract. This first contract focuses on stable
|
|
7
7
|
cross-repository boundaries: auth, health, runner-facing control-plane
|
|
@@ -5366,6 +5366,307 @@ paths:
|
|
|
5366
5366
|
application/json:
|
|
5367
5367
|
schema:
|
|
5368
5368
|
$ref: "#/components/schemas/ExecutionTaskEnvelope"
|
|
5369
|
+
/virtualization/clusters/{connectionID}/capacity-policy:
|
|
5370
|
+
get:
|
|
5371
|
+
tags: [Virtualization]
|
|
5372
|
+
operationId: getVirtualizationCapacityPolicy
|
|
5373
|
+
x-soha-implementation-status: implemented
|
|
5374
|
+
parameters:
|
|
5375
|
+
- { name: connectionID, in: path, required: true, schema: { type: string } }
|
|
5376
|
+
responses:
|
|
5377
|
+
"200":
|
|
5378
|
+
description: Successful operation.
|
|
5379
|
+
content:
|
|
5380
|
+
application/json:
|
|
5381
|
+
schema: { $ref: "#/components/schemas/VirtualizationCapacityPolicyEnvelope" }
|
|
5382
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5383
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5384
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5385
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5386
|
+
put:
|
|
5387
|
+
tags: [Virtualization]
|
|
5388
|
+
operationId: updateVirtualizationCapacityPolicy
|
|
5389
|
+
x-soha-implementation-status: implemented
|
|
5390
|
+
parameters:
|
|
5391
|
+
- { name: connectionID, in: path, required: true, schema: { type: string } }
|
|
5392
|
+
requestBody:
|
|
5393
|
+
required: true
|
|
5394
|
+
content:
|
|
5395
|
+
application/json:
|
|
5396
|
+
schema: { $ref: "#/components/schemas/VirtualizationCapacityPolicyInput" }
|
|
5397
|
+
responses:
|
|
5398
|
+
"200":
|
|
5399
|
+
description: Successful operation.
|
|
5400
|
+
content:
|
|
5401
|
+
application/json:
|
|
5402
|
+
schema: { $ref: "#/components/schemas/VirtualizationCapacityPolicyEnvelope" }
|
|
5403
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5404
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5405
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5406
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5407
|
+
/virtualization/vms/{vmID}/access-binding:
|
|
5408
|
+
get:
|
|
5409
|
+
tags: [Virtualization]
|
|
5410
|
+
operationId: getVirtualMachineAccessBinding
|
|
5411
|
+
x-soha-implementation-status: implemented
|
|
5412
|
+
parameters:
|
|
5413
|
+
- { name: vmID, in: path, required: true, schema: { type: string } }
|
|
5414
|
+
responses:
|
|
5415
|
+
"200":
|
|
5416
|
+
description: Successful operation.
|
|
5417
|
+
content:
|
|
5418
|
+
application/json:
|
|
5419
|
+
schema: { $ref: "#/components/schemas/VirtualMachineAccessBindingEnvelope" }
|
|
5420
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5421
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5422
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5423
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5424
|
+
put:
|
|
5425
|
+
tags: [Virtualization]
|
|
5426
|
+
operationId: updateVirtualMachineAccessBinding
|
|
5427
|
+
x-soha-implementation-status: implemented
|
|
5428
|
+
parameters:
|
|
5429
|
+
- { name: vmID, in: path, required: true, schema: { type: string } }
|
|
5430
|
+
requestBody:
|
|
5431
|
+
required: true
|
|
5432
|
+
content:
|
|
5433
|
+
application/json:
|
|
5434
|
+
schema: { $ref: "#/components/schemas/VirtualMachineAccessBindingInput" }
|
|
5435
|
+
responses:
|
|
5436
|
+
"200":
|
|
5437
|
+
description: Successful operation.
|
|
5438
|
+
content:
|
|
5439
|
+
application/json:
|
|
5440
|
+
schema: { $ref: "#/components/schemas/VirtualMachineAccessBindingEnvelope" }
|
|
5441
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5442
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5443
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5444
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5445
|
+
/virtualization/vms/{vmID}/ssh-sessions:
|
|
5446
|
+
post:
|
|
5447
|
+
tags: [Virtualization]
|
|
5448
|
+
operationId: createVirtualMachineSSHSession
|
|
5449
|
+
x-soha-implementation-status: implemented
|
|
5450
|
+
parameters:
|
|
5451
|
+
- { name: vmID, in: path, required: true, schema: { type: string } }
|
|
5452
|
+
requestBody:
|
|
5453
|
+
required: true
|
|
5454
|
+
content:
|
|
5455
|
+
application/json:
|
|
5456
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHSessionInput" }
|
|
5457
|
+
responses:
|
|
5458
|
+
"200":
|
|
5459
|
+
description: Successful operation.
|
|
5460
|
+
content:
|
|
5461
|
+
application/json:
|
|
5462
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHSessionEnvelope" }
|
|
5463
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5464
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5465
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5466
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5467
|
+
/virtualization/vms/{vmID}/ssh-commands:
|
|
5468
|
+
post:
|
|
5469
|
+
tags: [Virtualization]
|
|
5470
|
+
operationId: createVirtualMachineSSHCommand
|
|
5471
|
+
x-soha-implementation-status: implemented
|
|
5472
|
+
parameters:
|
|
5473
|
+
- { name: vmID, in: path, required: true, schema: { type: string } }
|
|
5474
|
+
requestBody:
|
|
5475
|
+
required: true
|
|
5476
|
+
content:
|
|
5477
|
+
application/json:
|
|
5478
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHCommandInput" }
|
|
5479
|
+
responses:
|
|
5480
|
+
"200":
|
|
5481
|
+
description: Successful operation.
|
|
5482
|
+
content:
|
|
5483
|
+
application/json:
|
|
5484
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHCommandEnvelope" }
|
|
5485
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5486
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5487
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5488
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5489
|
+
/virtualization/ssh-commands/{commandID}:
|
|
5490
|
+
parameters:
|
|
5491
|
+
- { name: commandID, in: path, required: true, schema: { type: string } }
|
|
5492
|
+
get:
|
|
5493
|
+
tags: [Virtualization]
|
|
5494
|
+
operationId: getVMSSHCommand
|
|
5495
|
+
x-soha-implementation-status: implemented
|
|
5496
|
+
responses:
|
|
5497
|
+
"200":
|
|
5498
|
+
description: Original owner's bounded command receipt under current VM permission.
|
|
5499
|
+
content:
|
|
5500
|
+
application/json:
|
|
5501
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHCommandEnvelope" }
|
|
5502
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5503
|
+
delete:
|
|
5504
|
+
tags: [Virtualization]
|
|
5505
|
+
operationId: cancelVMSSHCommand
|
|
5506
|
+
x-soha-implementation-status: implemented
|
|
5507
|
+
responses:
|
|
5508
|
+
"200":
|
|
5509
|
+
description: Cancellation fences the original task. Dispatched effects remain unknown until independently verified.
|
|
5510
|
+
content:
|
|
5511
|
+
application/json:
|
|
5512
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHCommandEnvelope" }
|
|
5513
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5514
|
+
/virtualization/ssh-sessions/{sessionID}/execution-status:
|
|
5515
|
+
post:
|
|
5516
|
+
tags: [Agent]
|
|
5517
|
+
operationId: checkVMSSHCommandAuthorization
|
|
5518
|
+
x-soha-implementation-status: implemented
|
|
5519
|
+
parameters:
|
|
5520
|
+
- { name: sessionID, in: path, required: true, schema: { type: string } }
|
|
5521
|
+
description: Bound execution Agent rechecks current owner, approval, VM identity and lease before and during a command. Returns no command or credential material.
|
|
5522
|
+
requestBody:
|
|
5523
|
+
required: true
|
|
5524
|
+
content:
|
|
5525
|
+
application/json:
|
|
5526
|
+
schema: { $ref: "#/components/schemas/VMSSHCredentialRedemptionInput" }
|
|
5527
|
+
responses:
|
|
5528
|
+
"200":
|
|
5529
|
+
description: Authorization and original task remain active.
|
|
5530
|
+
content:
|
|
5531
|
+
application/json:
|
|
5532
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHCommandEnvelope" }
|
|
5533
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5534
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5535
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5536
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5537
|
+
/virtualization/ssh-sessions/{sessionID}:
|
|
5538
|
+
get:
|
|
5539
|
+
tags: [Virtualization]
|
|
5540
|
+
operationId: getVirtualMachineSSHSession
|
|
5541
|
+
x-soha-implementation-status: implemented
|
|
5542
|
+
parameters:
|
|
5543
|
+
- { name: sessionID, in: path, required: true, schema: { type: string } }
|
|
5544
|
+
responses:
|
|
5545
|
+
"200":
|
|
5546
|
+
description: Successful operation.
|
|
5547
|
+
content:
|
|
5548
|
+
application/json:
|
|
5549
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHSessionEnvelope" }
|
|
5550
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5551
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5552
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5553
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5554
|
+
delete:
|
|
5555
|
+
tags: [Virtualization]
|
|
5556
|
+
operationId: closeVirtualMachineSSHSession
|
|
5557
|
+
x-soha-implementation-status: implemented
|
|
5558
|
+
parameters:
|
|
5559
|
+
- { name: sessionID, in: path, required: true, schema: { type: string } }
|
|
5560
|
+
responses:
|
|
5561
|
+
"200":
|
|
5562
|
+
description: Successful operation.
|
|
5563
|
+
content:
|
|
5564
|
+
application/json:
|
|
5565
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHSessionEnvelope" }
|
|
5566
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5567
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5568
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5569
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5570
|
+
/virtualization/ssh-sessions/{sessionID}/stream:
|
|
5571
|
+
get:
|
|
5572
|
+
tags: [Virtualization]
|
|
5573
|
+
operationId: streamVirtualMachineSSHSession
|
|
5574
|
+
x-soha-implementation-status: implemented
|
|
5575
|
+
description: Origin-bound, one-use authenticated WebSocket stream of VirtualMachineSSHFrame messages. Maximum lifetime is 30 minutes; idle timeout is 5 minutes. Private keys remain on the execution Agent.
|
|
5576
|
+
parameters:
|
|
5577
|
+
- { name: sessionID, in: path, required: true, schema: { type: string } }
|
|
5578
|
+
- { name: stream_ticket, in: query, required: false, schema: { type: string }, description: One-use browser stream ticket scoped to this session. CLI clients use bearer authentication. }
|
|
5579
|
+
responses:
|
|
5580
|
+
"101":
|
|
5581
|
+
description: WebSocket upgraded; JSON messages use this schema.
|
|
5582
|
+
content:
|
|
5583
|
+
application/json:
|
|
5584
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHFrame" }
|
|
5585
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5586
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5587
|
+
/ssh/capability:
|
|
5588
|
+
get:
|
|
5589
|
+
tags: [Agent]
|
|
5590
|
+
operationId: getAgentSSHCapability
|
|
5591
|
+
x-soha-implementation-status: implemented
|
|
5592
|
+
description: Standalone Agent route /api/v1/ssh/capability; requires its configured bearer token.
|
|
5593
|
+
responses:
|
|
5594
|
+
"200":
|
|
5595
|
+
description: SSH execution capability.
|
|
5596
|
+
content:
|
|
5597
|
+
application/json:
|
|
5598
|
+
schema: { $ref: "#/components/schemas/AgentSSHCapability" }
|
|
5599
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5600
|
+
/ssh/sessions:
|
|
5601
|
+
post:
|
|
5602
|
+
tags: [Agent]
|
|
5603
|
+
operationId: prepareAgentSSHSession
|
|
5604
|
+
x-soha-implementation-status: implemented
|
|
5605
|
+
description: Standalone Agent route /api/v1/ssh/sessions; stages a one-use request for its session WebSocket.
|
|
5606
|
+
requestBody:
|
|
5607
|
+
required: true
|
|
5608
|
+
content:
|
|
5609
|
+
application/json:
|
|
5610
|
+
schema: { $ref: "#/components/schemas/AgentSSHSessionRequest" }
|
|
5611
|
+
responses:
|
|
5612
|
+
"200": { description: Session staged. }
|
|
5613
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5614
|
+
/ssh/sessions/{sessionID}/stream:
|
|
5615
|
+
get:
|
|
5616
|
+
tags: [Agent]
|
|
5617
|
+
operationId: streamAgentSSHSession
|
|
5618
|
+
x-soha-implementation-status: implemented
|
|
5619
|
+
description: Agent bearer authentication. Each staged session can be claimed once.
|
|
5620
|
+
parameters:
|
|
5621
|
+
- { name: sessionID, in: path, required: true, schema: { type: string } }
|
|
5622
|
+
responses:
|
|
5623
|
+
"101":
|
|
5624
|
+
description: Authorized SSH PTY byte stream.
|
|
5625
|
+
content:
|
|
5626
|
+
application/json:
|
|
5627
|
+
schema: { $ref: "#/components/schemas/VirtualMachineSSHFrame" }
|
|
5628
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5629
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5630
|
+
/virtualization/ssh-sessions/{sessionID}/credentials:
|
|
5631
|
+
post:
|
|
5632
|
+
tags: [Virtualization]
|
|
5633
|
+
operationId: redeemVMSSHCredentials
|
|
5634
|
+
x-soha-implementation-status: implemented
|
|
5635
|
+
description: Execution Agent bearer authentication plus one-use lease, session and Agent identity checks. No human or model credential read endpoint.
|
|
5636
|
+
parameters:
|
|
5637
|
+
- { name: sessionID, in: path, required: true, schema: { type: string } }
|
|
5638
|
+
requestBody:
|
|
5639
|
+
required: true
|
|
5640
|
+
content:
|
|
5641
|
+
application/json:
|
|
5642
|
+
schema: { $ref: "#/components/schemas/VMSSHCredentialRedemptionInput" }
|
|
5643
|
+
responses:
|
|
5644
|
+
"200":
|
|
5645
|
+
description: In-memory Agent credential material.
|
|
5646
|
+
content:
|
|
5647
|
+
application/json:
|
|
5648
|
+
schema: { $ref: "#/components/schemas/SecretLeaseRedemptionEnvelope" }
|
|
5649
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5650
|
+
/secrets/generate-ssh-key:
|
|
5651
|
+
post:
|
|
5652
|
+
tags: [Secrets]
|
|
5653
|
+
operationId: generateSecretSSHKey
|
|
5654
|
+
x-soha-implementation-status: implemented
|
|
5655
|
+
requestBody:
|
|
5656
|
+
required: true
|
|
5657
|
+
content:
|
|
5658
|
+
application/json:
|
|
5659
|
+
schema: { $ref: "#/components/schemas/SecretGenerateSSHKeyRequest" }
|
|
5660
|
+
responses:
|
|
5661
|
+
"200":
|
|
5662
|
+
description: Successful operation.
|
|
5663
|
+
content:
|
|
5664
|
+
application/json:
|
|
5665
|
+
schema: { $ref: "#/components/schemas/SecretMetadataEnvelope" }
|
|
5666
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
5667
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
5668
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
5669
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
5369
5670
|
/virtualization/clusters:
|
|
5370
5671
|
get:
|
|
5371
5672
|
tags: [Virtualization]
|
|
@@ -6607,6 +6908,71 @@ paths:
|
|
|
6607
6908
|
$ref: "#/components/responses/Error"
|
|
6608
6909
|
"404":
|
|
6609
6910
|
$ref: "#/components/responses/Error"
|
|
6911
|
+
/copilot/sessions/{sessionID}/native-request:
|
|
6912
|
+
get:
|
|
6913
|
+
tags: [AI Workbench]
|
|
6914
|
+
operationId: findNativeRequest
|
|
6915
|
+
description: Read the original Native run by the current user's session and client request ID after a lost creation response. This never creates or resumes a run. A 404 is only absence at the time of the read and does not prove that an in-flight submission cannot commit later.
|
|
6916
|
+
parameters:
|
|
6917
|
+
- $ref: "#/components/parameters/SessionID"
|
|
6918
|
+
- name: requestId
|
|
6919
|
+
in: query
|
|
6920
|
+
required: true
|
|
6921
|
+
schema: { type: string, minLength: 1, maxLength: 128 }
|
|
6922
|
+
responses:
|
|
6923
|
+
"200":
|
|
6924
|
+
description: The original authorized Native run, including its current state.
|
|
6925
|
+
content:
|
|
6926
|
+
application/json:
|
|
6927
|
+
schema: { $ref: "#/components/schemas/WorkbenchAgentRunEnvelope" }
|
|
6928
|
+
"400":
|
|
6929
|
+
$ref: "#/components/responses/Error"
|
|
6930
|
+
"403":
|
|
6931
|
+
$ref: "#/components/responses/Error"
|
|
6932
|
+
"404":
|
|
6933
|
+
$ref: "#/components/responses/Error"
|
|
6934
|
+
/copilot/agent-runs/{runID}/events:
|
|
6935
|
+
get:
|
|
6936
|
+
tags: [AI Workbench]
|
|
6937
|
+
operationId: listAgentRunEvents
|
|
6938
|
+
description: Read durable Native events owned by the current user. Reconnection only reads; it never resubmits a run or action.
|
|
6939
|
+
parameters:
|
|
6940
|
+
- { name: runID, in: path, required: true, schema: { type: string, minLength: 1 } }
|
|
6941
|
+
- { name: afterSequence, in: query, schema: { type: integer, minimum: 0, default: 0 } }
|
|
6942
|
+
responses:
|
|
6943
|
+
"200":
|
|
6944
|
+
description: Ordered events and the next cursor.
|
|
6945
|
+
content:
|
|
6946
|
+
application/json:
|
|
6947
|
+
schema: { $ref: "#/components/schemas/AgentRunEventListEnvelope" }
|
|
6948
|
+
"403":
|
|
6949
|
+
$ref: "#/components/responses/Error"
|
|
6950
|
+
"404":
|
|
6951
|
+
$ref: "#/components/responses/Error"
|
|
6952
|
+
/copilot/agent-runs/{runID}/resume:
|
|
6953
|
+
post:
|
|
6954
|
+
tags: [AI Workbench]
|
|
6955
|
+
operationId: resumeAgentRun
|
|
6956
|
+
description: Resume the same paused Native run after current authorization and waiting-object checks. Unknown write outcomes cannot be replayed by this operation.
|
|
6957
|
+
parameters:
|
|
6958
|
+
- { name: runID, in: path, required: true, schema: { type: string, minLength: 1 } }
|
|
6959
|
+
requestBody:
|
|
6960
|
+
required: true
|
|
6961
|
+
content:
|
|
6962
|
+
application/json:
|
|
6963
|
+
schema: { $ref: "#/components/schemas/AgentRunResumeRequest" }
|
|
6964
|
+
responses:
|
|
6965
|
+
"200":
|
|
6966
|
+
description: Current run after an idempotent resume.
|
|
6967
|
+
content:
|
|
6968
|
+
application/json:
|
|
6969
|
+
schema: { $ref: "#/components/schemas/WorkbenchAgentRunEnvelope" }
|
|
6970
|
+
"400":
|
|
6971
|
+
$ref: "#/components/responses/Error"
|
|
6972
|
+
"403":
|
|
6973
|
+
$ref: "#/components/responses/Error"
|
|
6974
|
+
"409":
|
|
6975
|
+
$ref: "#/components/responses/Error"
|
|
6610
6976
|
/copilot/global-assistant/events:
|
|
6611
6977
|
post:
|
|
6612
6978
|
tags: [AI Workbench]
|
|
@@ -6996,6 +7362,455 @@ paths:
|
|
|
6996
7362
|
$ref: "#/components/responses/Error"
|
|
6997
7363
|
"404":
|
|
6998
7364
|
$ref: "#/components/responses/Error"
|
|
7365
|
+
/copilot/assistant/access:
|
|
7366
|
+
get:
|
|
7367
|
+
tags: [AI Workbench]
|
|
7368
|
+
operationId: getPersonalAgentAccess
|
|
7369
|
+
description: Current user's activation state. Ordinary chat permission allows viewing and requesting activation, never approves it.
|
|
7370
|
+
responses:
|
|
7371
|
+
"200":
|
|
7372
|
+
description: Operation result.
|
|
7373
|
+
content:
|
|
7374
|
+
application/json:
|
|
7375
|
+
schema:
|
|
7376
|
+
$ref: "#/components/schemas/PersonalAgentAccessEnvelope"
|
|
7377
|
+
"403":
|
|
7378
|
+
$ref: "#/components/responses/Error"
|
|
7379
|
+
"409":
|
|
7380
|
+
$ref: "#/components/responses/Error"
|
|
7381
|
+
post:
|
|
7382
|
+
tags: [AI Workbench]
|
|
7383
|
+
operationId: requestPersonalAgentAccess
|
|
7384
|
+
description: Idempotently requests activation. Rejected or revoked requests may be submitted again. Does not create or wake compute.
|
|
7385
|
+
responses:
|
|
7386
|
+
"200":
|
|
7387
|
+
description: Operation result.
|
|
7388
|
+
content:
|
|
7389
|
+
application/json:
|
|
7390
|
+
schema:
|
|
7391
|
+
$ref: "#/components/schemas/PersonalAgentAccessEnvelope"
|
|
7392
|
+
"403":
|
|
7393
|
+
$ref: "#/components/responses/Error"
|
|
7394
|
+
"409":
|
|
7395
|
+
$ref: "#/components/responses/Error"
|
|
7396
|
+
/copilot/assistant/access/requests:
|
|
7397
|
+
get:
|
|
7398
|
+
tags: [AI Workbench]
|
|
7399
|
+
operationId: listPersonalAgentAccessRequests
|
|
7400
|
+
description: Activation applications, restricted to ai.environments.update.
|
|
7401
|
+
responses:
|
|
7402
|
+
"200":
|
|
7403
|
+
description: Operation result.
|
|
7404
|
+
content:
|
|
7405
|
+
application/json:
|
|
7406
|
+
schema:
|
|
7407
|
+
$ref: "#/components/schemas/PersonalAgentAccessListEnvelope"
|
|
7408
|
+
"403":
|
|
7409
|
+
$ref: "#/components/responses/Error"
|
|
7410
|
+
"409":
|
|
7411
|
+
$ref: "#/components/responses/Error"
|
|
7412
|
+
/copilot/assistant/access/requests/{userId}:
|
|
7413
|
+
patch:
|
|
7414
|
+
tags: [AI Workbench]
|
|
7415
|
+
operationId: decidePersonalAgentAccess
|
|
7416
|
+
description: Approve or reject a pending request, or revoke approved access. Requires ai.environments.update and the current revision. No self-service approval.
|
|
7417
|
+
parameters:
|
|
7418
|
+
- name: userId
|
|
7419
|
+
in: path
|
|
7420
|
+
required: true
|
|
7421
|
+
schema: { type: string, minLength: 1, maxLength: 128 }
|
|
7422
|
+
requestBody:
|
|
7423
|
+
required: true
|
|
7424
|
+
content:
|
|
7425
|
+
application/json:
|
|
7426
|
+
schema: { $ref: "#/components/schemas/PersonalAgentAccessDecision" }
|
|
7427
|
+
responses:
|
|
7428
|
+
"200":
|
|
7429
|
+
description: Operation result.
|
|
7430
|
+
content:
|
|
7431
|
+
application/json:
|
|
7432
|
+
schema:
|
|
7433
|
+
$ref: "#/components/schemas/PersonalAgentAccessEnvelope"
|
|
7434
|
+
"403":
|
|
7435
|
+
$ref: "#/components/responses/Error"
|
|
7436
|
+
"409":
|
|
7437
|
+
$ref: "#/components/responses/Error"
|
|
7438
|
+
/copilot/assistant/sessions:
|
|
7439
|
+
get:
|
|
7440
|
+
tags: [AI Workbench]
|
|
7441
|
+
operationId: listPersonalAgentSessions
|
|
7442
|
+
description: Only the authenticated activated user's Heya sessions.
|
|
7443
|
+
responses:
|
|
7444
|
+
"200":
|
|
7445
|
+
description: Operation result.
|
|
7446
|
+
content:
|
|
7447
|
+
application/json:
|
|
7448
|
+
schema:
|
|
7449
|
+
$ref: "#/components/schemas/WorkbenchSessionListEnvelope"
|
|
7450
|
+
"403":
|
|
7451
|
+
$ref: "#/components/responses/Error"
|
|
7452
|
+
"409":
|
|
7453
|
+
$ref: "#/components/responses/Error"
|
|
7454
|
+
post:
|
|
7455
|
+
tags: [AI Workbench]
|
|
7456
|
+
operationId: createPersonalAgentSession
|
|
7457
|
+
description: Creates a Heya side chat after activation. Ownership and conversation kind are assigned by the server.
|
|
7458
|
+
requestBody:
|
|
7459
|
+
required: true
|
|
7460
|
+
content:
|
|
7461
|
+
application/json:
|
|
7462
|
+
schema: { $ref: "#/components/schemas/WorkbenchCreateSessionRequest" }
|
|
7463
|
+
responses:
|
|
7464
|
+
"200":
|
|
7465
|
+
description: Operation result.
|
|
7466
|
+
content:
|
|
7467
|
+
application/json:
|
|
7468
|
+
schema:
|
|
7469
|
+
$ref: "#/components/schemas/WorkbenchSessionEnvelope"
|
|
7470
|
+
"403":
|
|
7471
|
+
$ref: "#/components/responses/Error"
|
|
7472
|
+
"409":
|
|
7473
|
+
$ref: "#/components/responses/Error"
|
|
7474
|
+
/copilot/assistant:
|
|
7475
|
+
post:
|
|
7476
|
+
tags: [AI Workbench]
|
|
7477
|
+
operationId: ensurePersonalAssistant
|
|
7478
|
+
description: Idempotently returns the authenticated user's persistent assistant identity and dedicated Heya main chat after approved activation. Existing ordinary chat history is retained separately. No owner, workspace or runtime identity is accepted from the client.
|
|
7479
|
+
responses:
|
|
7480
|
+
"200":
|
|
7481
|
+
description: Personal assistant.
|
|
7482
|
+
content:
|
|
7483
|
+
application/json:
|
|
7484
|
+
schema:
|
|
7485
|
+
$ref: "#/components/schemas/PersonalAssistantEnvelope"
|
|
7486
|
+
"403":
|
|
7487
|
+
$ref: "#/components/responses/Error"
|
|
7488
|
+
patch:
|
|
7489
|
+
tags: [AI Workbench]
|
|
7490
|
+
operationId: updatePersonalAssistant
|
|
7491
|
+
requestBody:
|
|
7492
|
+
required: true
|
|
7493
|
+
content:
|
|
7494
|
+
application/json:
|
|
7495
|
+
schema:
|
|
7496
|
+
$ref: "#/components/schemas/PersonalAssistantUpdateRequest"
|
|
7497
|
+
responses:
|
|
7498
|
+
"200":
|
|
7499
|
+
description: Updated personal assistant.
|
|
7500
|
+
content:
|
|
7501
|
+
application/json:
|
|
7502
|
+
schema:
|
|
7503
|
+
$ref: "#/components/schemas/PersonalAssistantEnvelope"
|
|
7504
|
+
"400":
|
|
7505
|
+
$ref: "#/components/responses/Error"
|
|
7506
|
+
"403":
|
|
7507
|
+
$ref: "#/components/responses/Error"
|
|
7508
|
+
/copilot/assistant/avatar:
|
|
7509
|
+
patch:
|
|
7510
|
+
tags: [AI Workbench]
|
|
7511
|
+
operationId: updatePersonalAssistantAvatar
|
|
7512
|
+
description: Updates only the authenticated user's assistant image and motion preference; never changes account profile or assistant name. Empty image values restore the default image. Animated formats require a static PNG/JPEG poster. Requires observe.ai.chat permission.
|
|
7513
|
+
requestBody:
|
|
7514
|
+
required: true
|
|
7515
|
+
content:
|
|
7516
|
+
application/json:
|
|
7517
|
+
schema:
|
|
7518
|
+
$ref: "#/components/schemas/PersonalAssistantAvatarRequest"
|
|
7519
|
+
responses:
|
|
7520
|
+
"200":
|
|
7521
|
+
description: Updated personal assistant.
|
|
7522
|
+
content:
|
|
7523
|
+
application/json:
|
|
7524
|
+
schema:
|
|
7525
|
+
$ref: "#/components/schemas/PersonalAssistantEnvelope"
|
|
7526
|
+
"400":
|
|
7527
|
+
$ref: "#/components/responses/Error"
|
|
7528
|
+
"403":
|
|
7529
|
+
$ref: "#/components/responses/Error"
|
|
7530
|
+
/copilot/assistant/environment:
|
|
7531
|
+
get:
|
|
7532
|
+
tags: [AI Workbench]
|
|
7533
|
+
operationId: getPersonalEnvironment
|
|
7534
|
+
summary: Read the authenticated assistant's latest environment receipt
|
|
7535
|
+
description: Does not contact the provider or dispatch work. Expired or unconfirmed receipts are unknown. Node credentials and Docker handles remain private.
|
|
7536
|
+
responses:
|
|
7537
|
+
"200":
|
|
7538
|
+
description: Personal environment state
|
|
7539
|
+
content:
|
|
7540
|
+
application/json:
|
|
7541
|
+
schema:
|
|
7542
|
+
$ref: "#/components/schemas/PersonalEnvironmentEnvelope"
|
|
7543
|
+
default:
|
|
7544
|
+
$ref: "#/components/responses/Error"
|
|
7545
|
+
post:
|
|
7546
|
+
tags: [AI Workbench]
|
|
7547
|
+
operationId: changePersonalEnvironment
|
|
7548
|
+
summary: Wake, sleep or reconcile the authenticated assistant's environment
|
|
7549
|
+
description: Select an administrator-configured template on first wake. Owner, node, quota and original lease are server-derived and immutable. Lost receipts become unknown; reconciliation inspects the original lease without replaying commands. Sleeping retains persistent data. This operation does not delete data.
|
|
7550
|
+
requestBody:
|
|
7551
|
+
required: true
|
|
7552
|
+
content:
|
|
7553
|
+
application/json:
|
|
7554
|
+
schema:
|
|
7555
|
+
$ref: "#/components/schemas/PersonalEnvironmentActionRequest"
|
|
7556
|
+
responses:
|
|
7557
|
+
"200":
|
|
7558
|
+
description: Actual environment receipt
|
|
7559
|
+
content:
|
|
7560
|
+
application/json:
|
|
7561
|
+
schema:
|
|
7562
|
+
$ref: "#/components/schemas/PersonalEnvironmentEnvelope"
|
|
7563
|
+
default:
|
|
7564
|
+
$ref: "#/components/responses/Error"
|
|
7565
|
+
delete:
|
|
7566
|
+
tags: [AI Workbench]
|
|
7567
|
+
operationId: deletePersonalEnvironmentData
|
|
7568
|
+
summary: Explicitly delete the authenticated assistant's personal files
|
|
7569
|
+
description: Requires the current assistant ID, exact full name and environment version, a stopped environment and no active task or operation. Deletion retains a private non-recreation marker. Unknown deletion remains unconfirmed; reconciliation never implies that files were deleted. No automatic recreation or request retry.
|
|
7570
|
+
requestBody:
|
|
7571
|
+
required: true
|
|
7572
|
+
content:
|
|
7573
|
+
application/json:
|
|
7574
|
+
schema:
|
|
7575
|
+
$ref: "#/components/schemas/PersonalEnvironmentDataDeletionRequest"
|
|
7576
|
+
responses:
|
|
7577
|
+
"200":
|
|
7578
|
+
description: Actual deletion receipt
|
|
7579
|
+
content:
|
|
7580
|
+
application/json:
|
|
7581
|
+
schema:
|
|
7582
|
+
$ref: "#/components/schemas/PersonalEnvironmentEnvelope"
|
|
7583
|
+
default:
|
|
7584
|
+
$ref: "#/components/responses/Error"
|
|
7585
|
+
/copilot/assistant/environment/runtime:
|
|
7586
|
+
get:
|
|
7587
|
+
tags: [AI Workbench]
|
|
7588
|
+
operationId: getPersonalWorkspaceRuntime
|
|
7589
|
+
summary: Read shared workspace runtime state across Web and App
|
|
7590
|
+
description: Reloads approved owner authorization, VM connect scope and current guest identity. Returns the latest retained human operation and authoritative browser control generation, without dispatching work. Browser frames are historical observations; only the current unexpired control can authorize a new action.
|
|
7591
|
+
responses:
|
|
7592
|
+
"200":
|
|
7593
|
+
description: Current workspace identity, latest receipt and browser control.
|
|
7594
|
+
content:
|
|
7595
|
+
application/json:
|
|
7596
|
+
schema: { $ref: "#/components/schemas/PersonalWorkspaceRuntimeEnvelope" }
|
|
7597
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7598
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7599
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
7600
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
7601
|
+
post:
|
|
7602
|
+
tags: [AI Workbench]
|
|
7603
|
+
operationId: startPersonalGuestRuntime
|
|
7604
|
+
summary: Start one bounded owner-authorized VM workspace operation
|
|
7605
|
+
description: Requires approved personal Agent access, current owned VM connect permission and resource scope, verified runtime readiness and an exact environment revision. Core freezes owner, data, quota, argv and control identity; a durable managed SSH operation only launches the fixed mTLS broker. Client input cannot select a VM, host path, image or credential. Commands and Docker containers have no host credentials, socket or network; files use bounded UTF-8 content and content CAS. Lost receipts are recovered by GET, never by replaying work. A human browser action uses current user control; Agent writes use the separate Gateway approval path.
|
|
7606
|
+
requestBody:
|
|
7607
|
+
required: true
|
|
7608
|
+
content:
|
|
7609
|
+
application/json:
|
|
7610
|
+
schema: { $ref: "#/components/schemas/PersonalGuestRuntimeInput" }
|
|
7611
|
+
responses:
|
|
7612
|
+
"202":
|
|
7613
|
+
description: Original durable runtime operation.
|
|
7614
|
+
content:
|
|
7615
|
+
application/json:
|
|
7616
|
+
schema: { $ref: "#/components/schemas/PersonalGuestRuntimeEnvelope" }
|
|
7617
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
7618
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7619
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7620
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
7621
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
7622
|
+
/copilot/assistant/environment/runtime/{operationId}:
|
|
7623
|
+
get:
|
|
7624
|
+
tags: [AI Workbench]
|
|
7625
|
+
operationId: getPersonalGuestRuntime
|
|
7626
|
+
summary: Read the original owner's retained workspace receipt
|
|
7627
|
+
description: Reloads current authorization and scope and correlates the original frozen operation; never dispatches a command, navigates or recreates files. Stale or unconfirmed outcomes remain unknown. A receipt for an older browser control generation cannot mutate the current control.
|
|
7628
|
+
parameters:
|
|
7629
|
+
- name: operationId
|
|
7630
|
+
in: path
|
|
7631
|
+
required: true
|
|
7632
|
+
schema: { type: string, format: uuid }
|
|
7633
|
+
responses:
|
|
7634
|
+
"200":
|
|
7635
|
+
description: Original runtime state and bounded owner result.
|
|
7636
|
+
content:
|
|
7637
|
+
application/json:
|
|
7638
|
+
schema: { $ref: "#/components/schemas/PersonalGuestRuntimeEnvelope" }
|
|
7639
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7640
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7641
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
7642
|
+
/copilot/assistant/environment/guest-tools:
|
|
7643
|
+
post:
|
|
7644
|
+
tags: [AI Workbench]
|
|
7645
|
+
operationId: installPersonalGuestTools
|
|
7646
|
+
summary: Install the owned VM's fixed execution tools without initializing data
|
|
7647
|
+
description: Requires the current approved owner, VM connect/resize permissions and resource scope, initialized data, the exact environment revision and no active task. Core freezes signed Debian package versions, a digest-pinned Docker image, artifact and quota; the durable provider task executes only the fixed installer on this VM. No commands, paths, format, delete or other VM configuration are accepted. The same idempotency key reads the original operation; uncertain effects never trigger automatic redispatch. Installation leaves execution readiness pending until a current isolated runtime probe is verified.
|
|
7648
|
+
requestBody:
|
|
7649
|
+
required: true
|
|
7650
|
+
content:
|
|
7651
|
+
application/json:
|
|
7652
|
+
schema: { $ref: "#/components/schemas/PersonalGuestToolsInput" }
|
|
7653
|
+
responses:
|
|
7654
|
+
"202":
|
|
7655
|
+
description: Original owner-bound retained tools operation.
|
|
7656
|
+
headers:
|
|
7657
|
+
Cache-Control: { schema: { type: string, const: no-store } }
|
|
7658
|
+
content:
|
|
7659
|
+
application/json:
|
|
7660
|
+
schema: { $ref: "#/components/schemas/VirtualizationOperationEnvelope" }
|
|
7661
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
7662
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7663
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7664
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
7665
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
7666
|
+
/copilot/assistant/environment/guest-provisioning:
|
|
7667
|
+
post:
|
|
7668
|
+
tags: [AI Workbench]
|
|
7669
|
+
operationId: provisionPersonalGuest
|
|
7670
|
+
summary: Initialize the current owner's personal VM data and managed guest service
|
|
7671
|
+
description: Requires approved personal Agent access, VM connect and resize permissions and resource scope for the frozen owned VM. An Ed25519 public CSR is the only key input; the matching private key remains in the VM at the fixed bootstrap path. Core atomically reserves the environment CAS, certificate and encrypted durable task. The provider executes a fixed privileged installer with a Core-pinned artifact; no arbitrary command, path, resource deletion or other VM configuration change is accepted. Initialization is dispatched once; uncertain outcomes retain the original operation and cannot be automatically retried or canceled. A verified data receipt does not grant task/tool execution readiness. Recover a lost response by reading the current environment and operations rather than repeating the POST.
|
|
7672
|
+
x-soha-implementation-status: implemented
|
|
7673
|
+
requestBody:
|
|
7674
|
+
required: true
|
|
7675
|
+
content:
|
|
7676
|
+
application/json:
|
|
7677
|
+
schema: { $ref: "#/components/schemas/PersonalGuestPreparationInput" }
|
|
7678
|
+
responses:
|
|
7679
|
+
"202":
|
|
7680
|
+
description: Owner-bound durable provisioning operation; no private key or bootstrap challenge is returned.
|
|
7681
|
+
headers:
|
|
7682
|
+
Cache-Control: { schema: { type: string, const: no-store } }
|
|
7683
|
+
content:
|
|
7684
|
+
application/json:
|
|
7685
|
+
schema: { $ref: "#/components/schemas/VirtualizationOperationEnvelope" }
|
|
7686
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
7687
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7688
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7689
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
7690
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
7691
|
+
/copilot/assistant/environment/guest-provisioning/{operationId}/reconcile:
|
|
7692
|
+
post:
|
|
7693
|
+
tags: [AI Workbench]
|
|
7694
|
+
operationId: reconcilePersonalGuestProvisioning
|
|
7695
|
+
summary: Explicitly reconcile the original retained personal guest operation
|
|
7696
|
+
description: Requires the current approved owner, VM connect/resize permission, resource scope, exact environment CAS and the original failed/timed-out owned operation. At most three total dispatch attempts are permitted. Core retains operation and frozen data identity, prepares a fresh guest identity and encrypted bootstrap, and records explicit reconciliation. A root bootstrap lock prevents concurrent installers. The protected original format receipt remains authoritative; a dispatched format never repeats, even if the disk still looks blank. A matching filesystem UUID permits completion; mismatched/absent evidence fails closed. No resource is deleted and no generic root command is accepted.
|
|
7697
|
+
x-soha-implementation-status: implemented
|
|
7698
|
+
parameters:
|
|
7699
|
+
- name: operationId
|
|
7700
|
+
in: path
|
|
7701
|
+
required: true
|
|
7702
|
+
schema: { type: string, format: uuid }
|
|
7703
|
+
requestBody:
|
|
7704
|
+
required: true
|
|
7705
|
+
content:
|
|
7706
|
+
application/json:
|
|
7707
|
+
schema: { $ref: "#/components/schemas/PersonalGuestPreparationInput" }
|
|
7708
|
+
responses:
|
|
7709
|
+
"202":
|
|
7710
|
+
description: The same retained operation queued for explicit reconciliation.
|
|
7711
|
+
headers:
|
|
7712
|
+
Cache-Control: { schema: { type: string, const: no-store } }
|
|
7713
|
+
content:
|
|
7714
|
+
application/json:
|
|
7715
|
+
schema: { $ref: "#/components/schemas/VirtualizationOperationEnvelope" }
|
|
7716
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
7717
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7718
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7719
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
7720
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
7721
|
+
/copilot/assistant/environment/guest-enrollment:
|
|
7722
|
+
post:
|
|
7723
|
+
tags: [AI Workbench]
|
|
7724
|
+
operationId: preparePersonalGuestEnrollment
|
|
7725
|
+
summary: Prepare the current owner's dedicated personal VM guest identity
|
|
7726
|
+
description: Requires an approved current personal Agent owner and the frozen personal VM, provider and independent disk proof. Core derives the binding identity and revision and signs only the submitted Ed25519 public key for dedicated guest mTLS. Returns a short single-use challenge without granting readiness or task execution. Private keys remain in the VM. Do not automatically retry an uncertain response; explicit preparation supersedes the previous guest revision while retaining its audit history.
|
|
7727
|
+
x-soha-implementation-status: implemented
|
|
7728
|
+
requestBody:
|
|
7729
|
+
required: true
|
|
7730
|
+
content:
|
|
7731
|
+
application/json:
|
|
7732
|
+
schema: { $ref: "#/components/schemas/PersonalGuestPreparationInput" }
|
|
7733
|
+
responses:
|
|
7734
|
+
"201":
|
|
7735
|
+
description: Owner-bound public certificate and private one-time bootstrap challenge; response must not be cached or logged.
|
|
7736
|
+
headers:
|
|
7737
|
+
Cache-Control: { schema: { type: string, const: no-store } }
|
|
7738
|
+
content:
|
|
7739
|
+
application/json:
|
|
7740
|
+
schema: { $ref: "#/components/schemas/PersonalGuestPreparationEnvelope" }
|
|
7741
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
7742
|
+
"401": { $ref: "#/components/responses/Error" }
|
|
7743
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
7744
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
7745
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
7746
|
+
/copilot/assistant/environment/export:
|
|
7747
|
+
post:
|
|
7748
|
+
tags: [AI Workbench]
|
|
7749
|
+
operationId: exportPersonalEnvironmentData
|
|
7750
|
+
summary: Download the authenticated assistant's retained personal files
|
|
7751
|
+
description: Requires the current assistant ID and environment version, a sleeping environment and no active task. Returns a verified TAR archive up to 256 MiB after the Agent stream and SHA-256 receipt are complete. Symlinks are stored as links and never followed. Does not wake, delete, extract or publish data. Temporary server files are removed when the response ends; no server export history is retained. No automatic retry.
|
|
7752
|
+
requestBody:
|
|
7753
|
+
required: true
|
|
7754
|
+
content:
|
|
7755
|
+
application/json:
|
|
7756
|
+
schema:
|
|
7757
|
+
$ref: "#/components/schemas/PersonalEnvironmentDataExportRequest"
|
|
7758
|
+
responses:
|
|
7759
|
+
"200":
|
|
7760
|
+
description: Complete verified personal data archive
|
|
7761
|
+
headers:
|
|
7762
|
+
X-Content-SHA256:
|
|
7763
|
+
schema: { type: string, pattern: "^[a-f0-9]{64}$" }
|
|
7764
|
+
X-Assistant-ID:
|
|
7765
|
+
schema: { type: string, minLength: 1 }
|
|
7766
|
+
content:
|
|
7767
|
+
application/x-tar:
|
|
7768
|
+
schema: { type: string, format: binary }
|
|
7769
|
+
default:
|
|
7770
|
+
$ref: "#/components/responses/Error"
|
|
7771
|
+
/copilot/assistant/environment/templates:
|
|
7772
|
+
get:
|
|
7773
|
+
tags: [AI Workbench]
|
|
7774
|
+
operationId: listPersonalEnvironmentTemplates
|
|
7775
|
+
summary: List personal Docker template choices within the current user's node scope
|
|
7776
|
+
description: Returns active supported administrator templates without node IDs, credentials or internal policies. A choice describes configuration only; acquisition must obtain a fresh Agent receipt before readiness is claimed.
|
|
7777
|
+
responses:
|
|
7778
|
+
"200":
|
|
7779
|
+
description: Authorized template choices
|
|
7780
|
+
content:
|
|
7781
|
+
application/json:
|
|
7782
|
+
schema:
|
|
7783
|
+
$ref: "#/components/schemas/PersonalEnvironmentTemplateListEnvelope"
|
|
7784
|
+
default:
|
|
7785
|
+
$ref: "#/components/responses/Error"
|
|
7786
|
+
/copilot/assistant/tasks:
|
|
7787
|
+
get:
|
|
7788
|
+
tags: [AI Workbench]
|
|
7789
|
+
operationId: listPersonalAssistantTasks
|
|
7790
|
+
description: Returns at most 50 recent tasks belonging to the authenticated user across their conversations. Requires chat access; does not grant access to other users or platform-wide AI administration.
|
|
7791
|
+
responses:
|
|
7792
|
+
"200":
|
|
7793
|
+
description: Recent personal tasks.
|
|
7794
|
+
content:
|
|
7795
|
+
application/json:
|
|
7796
|
+
schema:
|
|
7797
|
+
$ref: "#/components/schemas/WorkbenchAgentRunListEnvelope"
|
|
7798
|
+
"403":
|
|
7799
|
+
$ref: "#/components/responses/Error"
|
|
7800
|
+
/copilot/assistant/artifacts:
|
|
7801
|
+
get:
|
|
7802
|
+
tags: [AI Workbench]
|
|
7803
|
+
operationId: listPersonalAssistantArtifacts
|
|
7804
|
+
description: Returns at most 50 recent saved artifacts owned by the authenticated user across chats and background tasks. A task result mirrored into a message appears once. Requires chat access.
|
|
7805
|
+
responses:
|
|
7806
|
+
"200":
|
|
7807
|
+
description: Recent personal artifacts.
|
|
7808
|
+
content:
|
|
7809
|
+
application/json:
|
|
7810
|
+
schema:
|
|
7811
|
+
$ref: "#/components/schemas/PersonalAssistantArtifactListEnvelope"
|
|
7812
|
+
"403":
|
|
7813
|
+
$ref: "#/components/responses/Error"
|
|
6999
7814
|
/copilot/sessions:
|
|
7000
7815
|
get:
|
|
7001
7816
|
tags: [AI Workbench]
|
|
@@ -7029,6 +7844,28 @@ paths:
|
|
|
7029
7844
|
$ref: "#/components/responses/Error"
|
|
7030
7845
|
"403":
|
|
7031
7846
|
$ref: "#/components/responses/Error"
|
|
7847
|
+
/copilot/sessions/main:
|
|
7848
|
+
post:
|
|
7849
|
+
tags: [AI Workbench]
|
|
7850
|
+
operationId: ensureWorkbenchMainSession
|
|
7851
|
+
description: Returns the current user's persistent main chat, creating it only once. Concurrent requests return the same session. Existing sessions remain separate. The initial provider is applied only when creating the main chat.
|
|
7852
|
+
requestBody:
|
|
7853
|
+
required: true
|
|
7854
|
+
content:
|
|
7855
|
+
application/json:
|
|
7856
|
+
schema:
|
|
7857
|
+
$ref: "#/components/schemas/WorkbenchMainSessionRequest"
|
|
7858
|
+
responses:
|
|
7859
|
+
"200":
|
|
7860
|
+
description: The current user's main chat.
|
|
7861
|
+
content:
|
|
7862
|
+
application/json:
|
|
7863
|
+
schema:
|
|
7864
|
+
$ref: "#/components/schemas/WorkbenchSessionEnvelope"
|
|
7865
|
+
"400":
|
|
7866
|
+
$ref: "#/components/responses/Error"
|
|
7867
|
+
"403":
|
|
7868
|
+
$ref: "#/components/responses/Error"
|
|
7032
7869
|
/copilot/sessions/{sessionID}:
|
|
7033
7870
|
get:
|
|
7034
7871
|
tags: [AI Workbench]
|
|
@@ -7070,6 +7907,8 @@ paths:
|
|
|
7070
7907
|
$ref: "#/components/responses/Error"
|
|
7071
7908
|
"404":
|
|
7072
7909
|
$ref: "#/components/responses/Error"
|
|
7910
|
+
"409":
|
|
7911
|
+
$ref: "#/components/responses/Error"
|
|
7073
7912
|
delete:
|
|
7074
7913
|
tags: [AI Workbench]
|
|
7075
7914
|
operationId: deleteWorkbenchSession
|
|
@@ -7082,6 +7921,21 @@ paths:
|
|
|
7082
7921
|
$ref: "#/components/responses/Error"
|
|
7083
7922
|
"404":
|
|
7084
7923
|
$ref: "#/components/responses/Error"
|
|
7924
|
+
"409":
|
|
7925
|
+
$ref: "#/components/responses/Error"
|
|
7926
|
+
/copilot/messages/search:
|
|
7927
|
+
get: {"tags":["AI Workbench"],"operationId":"searchWorkbenchMessages","description":"Search owned, unarchived user and assistant messages. Current source ACL applies before matching and snippets; opaque cursor follows stable descending message time and ID.","responses":{"200":{"description":"Search owned, unarchived user and assistant messages. Current source ACL applies before matching and snippets; opaque cursor follows stable descending message time and ID.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkbenchMessageSearchEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}},"parameters":[{"in":"query","name":"q","required":true,"schema":{"type":"string","minLength":1,"maxLength":120}},{"in":"query","name":"cursor","required":false,"schema":{"type":"string","maxLength":512}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"in":"query","name":"workspace","required":false,"schema":{"type":"string","enum":["chat","heya"],"default":"chat"}}]}
|
|
7928
|
+
/copilot/sessions/{sessionID}/messages/window:
|
|
7929
|
+
get: {"tags":["AI Workbench"],"operationId":"getWorkbenchMessageWindow","description":"Read a chronological message window, latest by default. around, before and after are mutually exclusive owned message IDs; cursors allow stable adjacent windows. Does not change the legacy message list.","responses":{"200":{"description":"Read a chronological message window, latest by default. around, before and after are mutually exclusive owned message IDs; cursors allow stable adjacent windows. Does not change the legacy message list.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkbenchMessageWindowEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}},"parameters":[{"$ref":"#/components/parameters/SessionID"},{"in":"query","name":"around","required":false,"schema":{"type":"string","maxLength":128}},{"in":"query","name":"before","required":false,"schema":{"type":"string","maxLength":128}},{"in":"query","name":"after","required":false,"schema":{"type":"string","maxLength":128}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":3,"maximum":100,"default":40}}]}
|
|
7930
|
+
/copilot/assistant/feed:
|
|
7931
|
+
get: {"tags":["AI Workbench"],"operationId":"listPersonalFeed","description":"Read owned content feed, settings, refresh state and eligible search sources. Does not enqueue work on read.","responses":{"200":{"description":"Read owned content feed, settings, refresh state and eligible search sources. Does not enqueue work on read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}},"parameters":[{"in":"query","name":"before","required":false,"schema":{"type":"string","maxLength":128}},{"in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":20}}]}
|
|
7932
|
+
/copilot/assistant/feed/settings:
|
|
7933
|
+
put: {"tags":["AI Workbench"],"operationId":"updatePersonalFeedSettings","description":"Update owned content instructions/source and optional daily updates. Automatic updates are disabled by default; changes invalidate unfinished refreshes.","responses":{"200":{"description":"Update owned content instructions/source and optional daily updates. Automatic updates are disabled by default; changes invalidate unfinished refreshes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedSettings"}}}}}
|
|
7934
|
+
/copilot/assistant/feed/refresh:
|
|
7935
|
+
post: {"tags":["AI Workbench"],"operationId":"refreshPersonalFeed","description":"Queue one bounded refresh; duplicate active refreshes coalesce. User scoped cooldown prevents repeated paid calls. A valid read-only synchronous search source is required.","responses":{"202":{"description":"Queue one bounded refresh; duplicate active refreshes coalesce. User scoped cooldown prevents repeated paid calls. A valid read-only synchronous search source is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}
|
|
7936
|
+
/copilot/assistant/feed/items/{itemID}:
|
|
7937
|
+
get: {"tags":["AI Workbench"],"operationId":"getPersonalFeedItem","description":"Read an owned post for discussion context.","responses":{"200":{"description":"Read an owned post for discussion context.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedItemEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}},"parameters":[{"in":"path","name":"itemID","required":true,"schema":{"type":"string","maxLength":128}}]}
|
|
7938
|
+
patch: {"tags":["AI Workbench"],"operationId":"updatePersonalFeedFeedback","description":"Save liked/hidden feedback for an owned post. Hidden posts remain stored and can be referenced by their owner.","responses":{"200":{"description":"Save liked/hidden feedback for an owned post. Hidden posts remain stored and can be referenced by their owner.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedItemEnvelope"}}}},"400":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}},"parameters":[{"in":"path","name":"itemID","required":true,"schema":{"type":"string","maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalFeedFeedback"}}}}}
|
|
7085
7939
|
/copilot/sessions/{sessionID}/messages:
|
|
7086
7940
|
get:
|
|
7087
7941
|
tags: [AI Workbench]
|
|
@@ -9232,6 +10086,36 @@ paths:
|
|
|
9232
10086
|
"403": { $ref: "#/components/responses/Error" }
|
|
9233
10087
|
"404": { $ref: "#/components/responses/Error" }
|
|
9234
10088
|
"503": { $ref: "#/components/responses/Error" }
|
|
10089
|
+
/clusters/{clusterID}/resource-monitoring:
|
|
10090
|
+
get:
|
|
10091
|
+
tags: [Platform]
|
|
10092
|
+
operationId: getKubernetesResourceMonitoring
|
|
10093
|
+
description: Fixed bounded monitoring templates. The selected view requires its exact permission plus cluster-wide nodes.view. Raw PromQL is never accepted. Current snapshots and historical series have separate observation times.
|
|
10094
|
+
x-soha-permissions:
|
|
10095
|
+
mode: all
|
|
10096
|
+
keys: [platform.nodes.view]
|
|
10097
|
+
byQuery:
|
|
10098
|
+
view:
|
|
10099
|
+
overview: platform.resource-monitoring.overview.view
|
|
10100
|
+
cpu: platform.resource-monitoring.cpu.view
|
|
10101
|
+
memory: platform.resource-monitoring.memory.view
|
|
10102
|
+
conntrack: platform.resource-monitoring.conntrack.view
|
|
10103
|
+
pods: platform.resource-monitoring.pods.view
|
|
10104
|
+
x-soha-implementation-status: implemented
|
|
10105
|
+
parameters:
|
|
10106
|
+
- { $ref: "#/components/parameters/ClusterID" }
|
|
10107
|
+
- { name: view, in: query, required: true, schema: { $ref: "#/components/schemas/ResourceMonitoringViewName" } }
|
|
10108
|
+
- { name: node, in: query, schema: { type: string, maxLength: 253 } }
|
|
10109
|
+
- { name: from, in: query, schema: { type: string, format: date-time } }
|
|
10110
|
+
- { name: to, in: query, schema: { type: string, format: date-time } }
|
|
10111
|
+
- { name: rangeMinutes, in: query, schema: { type: integer, minimum: 1, maximum: 1440, default: 60 } }
|
|
10112
|
+
- { name: stepSeconds, in: query, schema: { type: integer, minimum: 15, maximum: 3600, default: 60 } }
|
|
10113
|
+
responses:
|
|
10114
|
+
"200": { description: Per-panel quality and bounded node series., content: { application/json: { schema: { $ref: "#/components/schemas/ResourceMonitoringEnvelope" } } } }
|
|
10115
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
10116
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
10117
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
10118
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
9235
10119
|
/clusters/{clusterID}/network/topology:
|
|
9236
10120
|
get:
|
|
9237
10121
|
tags: [Platform]
|
|
@@ -9243,7 +10127,7 @@ paths:
|
|
|
9243
10127
|
x-soha-implementation-status: implemented
|
|
9244
10128
|
parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
|
|
9245
10129
|
responses:
|
|
9246
|
-
"200": { description:
|
|
10130
|
+
"200": { description: "Bounded permission-filtered Kubernetes, Gateway API, Traefik and APISIX topology, with per-source coverage and explicit unresolved relationships.", content: { application/json: { schema: { $ref: "#/components/schemas/KubernetesNetworkTopologyEnvelope" } } } }
|
|
9247
10131
|
"403": { $ref: "#/components/responses/Error" }
|
|
9248
10132
|
"404": { $ref: "#/components/responses/Error" }
|
|
9249
10133
|
"503": { $ref: "#/components/responses/Error" }
|
|
@@ -11244,6 +12128,32 @@ paths:
|
|
|
11244
12128
|
$ref: "#/components/responses/Error"
|
|
11245
12129
|
"404":
|
|
11246
12130
|
$ref: "#/components/responses/Error"
|
|
12131
|
+
/secrets/{secretID}/references:
|
|
12132
|
+
get:
|
|
12133
|
+
tags: [Secrets]
|
|
12134
|
+
operationId: listSecretReferences
|
|
12135
|
+
x-soha-implementation-status: implemented
|
|
12136
|
+
security:
|
|
12137
|
+
- bearerAuth: []
|
|
12138
|
+
parameters:
|
|
12139
|
+
- name: secretID
|
|
12140
|
+
in: path
|
|
12141
|
+
required: true
|
|
12142
|
+
schema:
|
|
12143
|
+
type: string
|
|
12144
|
+
responses:
|
|
12145
|
+
"200":
|
|
12146
|
+
description: Visible VM login bindings and initialization operations using fixed secret versions; no secret values.
|
|
12147
|
+
content:
|
|
12148
|
+
application/json:
|
|
12149
|
+
schema:
|
|
12150
|
+
$ref: "#/components/schemas/SecretReferenceUsageListEnvelope"
|
|
12151
|
+
"401":
|
|
12152
|
+
$ref: "#/components/responses/Error"
|
|
12153
|
+
"403":
|
|
12154
|
+
$ref: "#/components/responses/Error"
|
|
12155
|
+
"404":
|
|
12156
|
+
$ref: "#/components/responses/Error"
|
|
11247
12157
|
/secrets/{secretID}/versions:
|
|
11248
12158
|
get:
|
|
11249
12159
|
tags: [Secrets]
|
|
@@ -18884,6 +19794,12 @@ paths:
|
|
|
18884
19794
|
tags:
|
|
18885
19795
|
- Platform
|
|
18886
19796
|
operationId: drainKubernetesNode
|
|
19797
|
+
description: >-
|
|
19798
|
+
Cordon the node and evict eligible pods. A 409 with node_drain_pdb_blocked,
|
|
19799
|
+
node_drain_eviction_blocked, node_drain_timeout, node_drain_canceled,
|
|
19800
|
+
node_drain_pod_selection or node_drain_failed means this drain did not complete.
|
|
19801
|
+
Inspect current node schedulability and remaining pods before retrying or
|
|
19802
|
+
explicitly restoring scheduling. Transport failure leaves the outcome unknown.
|
|
18887
19803
|
x-soha-permissions:
|
|
18888
19804
|
mode: all
|
|
18889
19805
|
keys:
|
|
@@ -19147,6 +20063,458 @@ paths:
|
|
|
19147
20063
|
$ref: "#/components/responses/Error"
|
|
19148
20064
|
"503":
|
|
19149
20065
|
$ref: "#/components/responses/Error"
|
|
20066
|
+
/clusters/{clusterID}/network/httproutes/{name}:
|
|
20067
|
+
delete:
|
|
20068
|
+
tags: [Platform]
|
|
20069
|
+
operationId: deleteKubernetesHTTPRoute
|
|
20070
|
+
x-soha-permissions:
|
|
20071
|
+
mode: all
|
|
20072
|
+
keys: [platform.network.http-routes.delete]
|
|
20073
|
+
x-soha-implementation-status: implemented
|
|
20074
|
+
parameters:
|
|
20075
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20076
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20077
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20078
|
+
responses:
|
|
20079
|
+
"204": { description: Resource deleted. }
|
|
20080
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20081
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20082
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20083
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20084
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20085
|
+
/clusters/{clusterID}/network/httproutes/{name}/yaml:
|
|
20086
|
+
get:
|
|
20087
|
+
tags: [Platform]
|
|
20088
|
+
operationId: getKubernetesHTTPRouteYaml
|
|
20089
|
+
x-soha-permissions:
|
|
20090
|
+
mode: all
|
|
20091
|
+
keys: [platform.network.http-routes.view]
|
|
20092
|
+
x-soha-implementation-status: implemented
|
|
20093
|
+
parameters:
|
|
20094
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20095
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20096
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20097
|
+
responses:
|
|
20098
|
+
"200":
|
|
20099
|
+
description: Authorized Kubernetes resource YAML.
|
|
20100
|
+
content:
|
|
20101
|
+
application/json:
|
|
20102
|
+
schema:
|
|
20103
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20104
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20105
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20106
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20107
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20108
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20109
|
+
put:
|
|
20110
|
+
tags: [Platform]
|
|
20111
|
+
operationId: applyKubernetesHTTPRouteYaml
|
|
20112
|
+
x-soha-permissions:
|
|
20113
|
+
mode: all
|
|
20114
|
+
keys: [platform.network.http-routes.update]
|
|
20115
|
+
x-soha-implementation-status: implemented
|
|
20116
|
+
parameters:
|
|
20117
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20118
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20119
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20120
|
+
requestBody:
|
|
20121
|
+
required: true
|
|
20122
|
+
content:
|
|
20123
|
+
application/json:
|
|
20124
|
+
schema:
|
|
20125
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20126
|
+
responses:
|
|
20127
|
+
"200":
|
|
20128
|
+
description: Authorized Kubernetes resource YAML.
|
|
20129
|
+
content:
|
|
20130
|
+
application/json:
|
|
20131
|
+
schema:
|
|
20132
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20133
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20134
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20135
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20136
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20137
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20138
|
+
/clusters/{clusterID}/network/grpcroutes/{name}:
|
|
20139
|
+
delete:
|
|
20140
|
+
tags: [Platform]
|
|
20141
|
+
operationId: deleteKubernetesGRPCRoute
|
|
20142
|
+
x-soha-permissions:
|
|
20143
|
+
mode: all
|
|
20144
|
+
keys: [platform.network.grpc-routes.delete]
|
|
20145
|
+
x-soha-implementation-status: implemented
|
|
20146
|
+
parameters:
|
|
20147
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20148
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20149
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20150
|
+
responses:
|
|
20151
|
+
"204": { description: Resource deleted. }
|
|
20152
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20153
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20154
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20155
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20156
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20157
|
+
/clusters/{clusterID}/network/grpcroutes/{name}/yaml:
|
|
20158
|
+
get:
|
|
20159
|
+
tags: [Platform]
|
|
20160
|
+
operationId: getKubernetesGRPCRouteYaml
|
|
20161
|
+
x-soha-permissions:
|
|
20162
|
+
mode: all
|
|
20163
|
+
keys: [platform.network.grpc-routes.view]
|
|
20164
|
+
x-soha-implementation-status: implemented
|
|
20165
|
+
parameters:
|
|
20166
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20167
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20168
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20169
|
+
responses:
|
|
20170
|
+
"200":
|
|
20171
|
+
description: Authorized Kubernetes resource YAML.
|
|
20172
|
+
content:
|
|
20173
|
+
application/json:
|
|
20174
|
+
schema:
|
|
20175
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20176
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20177
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20178
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20179
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20180
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20181
|
+
put:
|
|
20182
|
+
tags: [Platform]
|
|
20183
|
+
operationId: applyKubernetesGRPCRouteYaml
|
|
20184
|
+
x-soha-permissions:
|
|
20185
|
+
mode: all
|
|
20186
|
+
keys: [platform.network.grpc-routes.update]
|
|
20187
|
+
x-soha-implementation-status: implemented
|
|
20188
|
+
parameters:
|
|
20189
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20190
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20191
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20192
|
+
requestBody:
|
|
20193
|
+
required: true
|
|
20194
|
+
content:
|
|
20195
|
+
application/json:
|
|
20196
|
+
schema:
|
|
20197
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20198
|
+
responses:
|
|
20199
|
+
"200":
|
|
20200
|
+
description: Authorized Kubernetes resource YAML.
|
|
20201
|
+
content:
|
|
20202
|
+
application/json:
|
|
20203
|
+
schema:
|
|
20204
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20205
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20206
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20207
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20208
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20209
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20210
|
+
/clusters/{clusterID}/network/backendtlspolicies/{name}:
|
|
20211
|
+
delete:
|
|
20212
|
+
tags: [Platform]
|
|
20213
|
+
operationId: deleteKubernetesBackendTLSPolicy
|
|
20214
|
+
x-soha-permissions:
|
|
20215
|
+
mode: all
|
|
20216
|
+
keys: [platform.network.backend-tls-policies.delete]
|
|
20217
|
+
x-soha-implementation-status: implemented
|
|
20218
|
+
parameters:
|
|
20219
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20220
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20221
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20222
|
+
responses:
|
|
20223
|
+
"204": { description: Resource deleted. }
|
|
20224
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20225
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20226
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20227
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20228
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20229
|
+
/clusters/{clusterID}/network/backendtlspolicies/{name}/yaml:
|
|
20230
|
+
get:
|
|
20231
|
+
tags: [Platform]
|
|
20232
|
+
operationId: getKubernetesBackendTLSPolicyYaml
|
|
20233
|
+
x-soha-permissions:
|
|
20234
|
+
mode: all
|
|
20235
|
+
keys: [platform.network.backend-tls-policies.view]
|
|
20236
|
+
x-soha-implementation-status: implemented
|
|
20237
|
+
parameters:
|
|
20238
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20239
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20240
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20241
|
+
responses:
|
|
20242
|
+
"200":
|
|
20243
|
+
description: Authorized Kubernetes resource YAML.
|
|
20244
|
+
content:
|
|
20245
|
+
application/json:
|
|
20246
|
+
schema:
|
|
20247
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20248
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20249
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20250
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20251
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20252
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20253
|
+
put:
|
|
20254
|
+
tags: [Platform]
|
|
20255
|
+
operationId: applyKubernetesBackendTLSPolicyYaml
|
|
20256
|
+
x-soha-permissions:
|
|
20257
|
+
mode: all
|
|
20258
|
+
keys: [platform.network.backend-tls-policies.update]
|
|
20259
|
+
x-soha-implementation-status: implemented
|
|
20260
|
+
parameters:
|
|
20261
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20262
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20263
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20264
|
+
requestBody:
|
|
20265
|
+
required: true
|
|
20266
|
+
content:
|
|
20267
|
+
application/json:
|
|
20268
|
+
schema:
|
|
20269
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20270
|
+
responses:
|
|
20271
|
+
"200":
|
|
20272
|
+
description: Authorized Kubernetes resource YAML.
|
|
20273
|
+
content:
|
|
20274
|
+
application/json:
|
|
20275
|
+
schema:
|
|
20276
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20277
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20278
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20279
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20280
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20281
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20282
|
+
/clusters/{clusterID}/network/referencegrants/{name}:
|
|
20283
|
+
delete:
|
|
20284
|
+
tags: [Platform]
|
|
20285
|
+
operationId: deleteKubernetesReferenceGrant
|
|
20286
|
+
x-soha-permissions:
|
|
20287
|
+
mode: all
|
|
20288
|
+
keys: [platform.network.reference-grants.delete]
|
|
20289
|
+
x-soha-implementation-status: implemented
|
|
20290
|
+
parameters:
|
|
20291
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20292
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20293
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20294
|
+
responses:
|
|
20295
|
+
"204": { description: Resource deleted. }
|
|
20296
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20297
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20298
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20299
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20300
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20301
|
+
/clusters/{clusterID}/network/referencegrants/{name}/yaml:
|
|
20302
|
+
get:
|
|
20303
|
+
tags: [Platform]
|
|
20304
|
+
operationId: getKubernetesReferenceGrantYaml
|
|
20305
|
+
x-soha-permissions:
|
|
20306
|
+
mode: all
|
|
20307
|
+
keys: [platform.network.reference-grants.view]
|
|
20308
|
+
x-soha-implementation-status: implemented
|
|
20309
|
+
parameters:
|
|
20310
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20311
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20312
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20313
|
+
responses:
|
|
20314
|
+
"200":
|
|
20315
|
+
description: Authorized Kubernetes resource YAML.
|
|
20316
|
+
content:
|
|
20317
|
+
application/json:
|
|
20318
|
+
schema:
|
|
20319
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20320
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20321
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20322
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20323
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20324
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20325
|
+
put:
|
|
20326
|
+
tags: [Platform]
|
|
20327
|
+
operationId: applyKubernetesReferenceGrantYaml
|
|
20328
|
+
x-soha-permissions:
|
|
20329
|
+
mode: all
|
|
20330
|
+
keys: [platform.network.reference-grants.update]
|
|
20331
|
+
x-soha-implementation-status: implemented
|
|
20332
|
+
parameters:
|
|
20333
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20334
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20335
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20336
|
+
requestBody:
|
|
20337
|
+
required: true
|
|
20338
|
+
content:
|
|
20339
|
+
application/json:
|
|
20340
|
+
schema:
|
|
20341
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20342
|
+
responses:
|
|
20343
|
+
"200":
|
|
20344
|
+
description: Authorized Kubernetes resource YAML.
|
|
20345
|
+
content:
|
|
20346
|
+
application/json:
|
|
20347
|
+
schema:
|
|
20348
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20349
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20350
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20351
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20352
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20353
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20354
|
+
/clusters/{clusterID}/configuration/hpas/{name}:
|
|
20355
|
+
delete:
|
|
20356
|
+
tags: [Platform]
|
|
20357
|
+
operationId: deleteKubernetesHorizontalPodAutoscaler
|
|
20358
|
+
x-soha-permissions:
|
|
20359
|
+
mode: all
|
|
20360
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.delete]
|
|
20361
|
+
x-soha-implementation-status: implemented
|
|
20362
|
+
parameters:
|
|
20363
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20364
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20365
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20366
|
+
responses:
|
|
20367
|
+
"204": { description: Resource deleted. }
|
|
20368
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20369
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20370
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20371
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20372
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20373
|
+
/clusters/{clusterID}/configuration/hpas/{name}/yaml:
|
|
20374
|
+
get:
|
|
20375
|
+
tags: [Platform]
|
|
20376
|
+
operationId: getKubernetesHorizontalPodAutoscalerYaml
|
|
20377
|
+
x-soha-permissions:
|
|
20378
|
+
mode: all
|
|
20379
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.view]
|
|
20380
|
+
x-soha-implementation-status: implemented
|
|
20381
|
+
parameters:
|
|
20382
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20383
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20384
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20385
|
+
responses:
|
|
20386
|
+
"200":
|
|
20387
|
+
description: Authorized Kubernetes resource YAML.
|
|
20388
|
+
content:
|
|
20389
|
+
application/json:
|
|
20390
|
+
schema:
|
|
20391
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20392
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20393
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20394
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20395
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20396
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20397
|
+
put:
|
|
20398
|
+
tags: [Platform]
|
|
20399
|
+
operationId: applyKubernetesHorizontalPodAutoscalerYaml
|
|
20400
|
+
x-soha-permissions:
|
|
20401
|
+
mode: all
|
|
20402
|
+
keys: [platform.configuration.horizontal-pod-autoscalers.update]
|
|
20403
|
+
x-soha-implementation-status: implemented
|
|
20404
|
+
parameters:
|
|
20405
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20406
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20407
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20408
|
+
requestBody:
|
|
20409
|
+
required: true
|
|
20410
|
+
content:
|
|
20411
|
+
application/json:
|
|
20412
|
+
schema:
|
|
20413
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20414
|
+
responses:
|
|
20415
|
+
"200":
|
|
20416
|
+
description: Authorized Kubernetes resource YAML.
|
|
20417
|
+
content:
|
|
20418
|
+
application/json:
|
|
20419
|
+
schema:
|
|
20420
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20421
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20422
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20423
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20424
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20425
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20426
|
+
/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}:
|
|
20427
|
+
delete:
|
|
20428
|
+
tags: [Platform]
|
|
20429
|
+
operationId: deleteKubernetesPodDisruptionBudget
|
|
20430
|
+
x-soha-permissions:
|
|
20431
|
+
mode: all
|
|
20432
|
+
keys: [platform.configuration.pod-disruption-budgets.delete]
|
|
20433
|
+
x-soha-implementation-status: implemented
|
|
20434
|
+
parameters:
|
|
20435
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20436
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20437
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20438
|
+
responses:
|
|
20439
|
+
"204": { description: Resource deleted. }
|
|
20440
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20441
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20442
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20443
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20444
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20445
|
+
/clusters/{clusterID}/configuration/poddisruptionbudgets/{name}/yaml:
|
|
20446
|
+
get:
|
|
20447
|
+
tags: [Platform]
|
|
20448
|
+
operationId: getKubernetesPodDisruptionBudgetYaml
|
|
20449
|
+
x-soha-permissions:
|
|
20450
|
+
mode: all
|
|
20451
|
+
keys: [platform.configuration.pod-disruption-budgets.view]
|
|
20452
|
+
x-soha-implementation-status: implemented
|
|
20453
|
+
parameters:
|
|
20454
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20455
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20456
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20457
|
+
responses:
|
|
20458
|
+
"200":
|
|
20459
|
+
description: Authorized Kubernetes resource YAML.
|
|
20460
|
+
content:
|
|
20461
|
+
application/json:
|
|
20462
|
+
schema:
|
|
20463
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20464
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20465
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20466
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20467
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20468
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20469
|
+
put:
|
|
20470
|
+
tags: [Platform]
|
|
20471
|
+
operationId: applyKubernetesPodDisruptionBudgetYaml
|
|
20472
|
+
x-soha-permissions:
|
|
20473
|
+
mode: all
|
|
20474
|
+
keys: [platform.configuration.pod-disruption-budgets.update]
|
|
20475
|
+
x-soha-implementation-status: implemented
|
|
20476
|
+
parameters:
|
|
20477
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20478
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20479
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20480
|
+
requestBody:
|
|
20481
|
+
required: true
|
|
20482
|
+
content:
|
|
20483
|
+
application/json:
|
|
20484
|
+
schema:
|
|
20485
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
20486
|
+
responses:
|
|
20487
|
+
"200":
|
|
20488
|
+
description: Authorized Kubernetes resource YAML.
|
|
20489
|
+
content:
|
|
20490
|
+
application/json:
|
|
20491
|
+
schema:
|
|
20492
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
20493
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20494
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20495
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20496
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20497
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20498
|
+
/clusters/{clusterID}/workloads/replicationcontrollers/{name}:
|
|
20499
|
+
delete:
|
|
20500
|
+
tags: [Platform]
|
|
20501
|
+
operationId: deleteKubernetesReplicationController
|
|
20502
|
+
x-soha-permissions:
|
|
20503
|
+
mode: all
|
|
20504
|
+
keys: [platform.workloads.replication-controllers.delete]
|
|
20505
|
+
x-soha-implementation-status: implemented
|
|
20506
|
+
parameters:
|
|
20507
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20508
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
20509
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20510
|
+
responses:
|
|
20511
|
+
"204": { description: Resource deleted. }
|
|
20512
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
20513
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
20514
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
20515
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
20516
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
20517
|
+
|
|
19150
20518
|
components:
|
|
19151
20519
|
securitySchemes:
|
|
19152
20520
|
bearerAuth:
|
|
@@ -20062,6 +21430,7 @@ components:
|
|
|
20062
21430
|
schema:
|
|
20063
21431
|
type: string
|
|
20064
21432
|
enum: [default, bypass, read-only, refresh]
|
|
21433
|
+
x-enum-varnames: [CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeDefault, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeBypass, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeReadOnly, CreateAIGatewayOpenAICompatibleProviderResponseParamsXSohaCacheModeRefresh]
|
|
20065
21434
|
description: Optional relay cache behavior hint.
|
|
20066
21435
|
headers:
|
|
20067
21436
|
SohaRouteIDHeader:
|
|
@@ -24417,9 +25786,13 @@ components:
|
|
|
24417
25786
|
name: { type: string, minLength: 1, maxLength: 160 }
|
|
24418
25787
|
kind: { type: string, enum: [inline, http, git, object] }
|
|
24419
25788
|
version: { type: string, maxLength: 64 }
|
|
24420
|
-
secretRef:
|
|
25789
|
+
secretRef:
|
|
25790
|
+
type: string
|
|
25791
|
+
maxLength: 512
|
|
25792
|
+
description: "Gateway execution uses soha://secrets/<id> with an optional /versions/<n>. Legacy secret: references remain readable but require explicit configuration migration before execution."
|
|
24421
25793
|
config:
|
|
24422
25794
|
type: object
|
|
25795
|
+
description: External connector config may include importPolicy conforming to knowledge/source-import-policy.schema.json. Core uses this trusted ceiling; fetched ACLs cannot expand it. Omission defaults to the knowledge-base owner. Credentials use secretRef and Gateway authorization, never config values.
|
|
24423
25796
|
additionalProperties: true
|
|
24424
25797
|
syncPolicy: { $ref: "#/components/schemas/KnowledgeSyncPolicy" }
|
|
24425
25798
|
additionalProperties: false
|
|
@@ -24785,6 +26158,7 @@ components:
|
|
|
24785
26158
|
sourceType: { type: string, enum: [explicit_user, curated_extractor] }
|
|
24786
26159
|
sourceRefs:
|
|
24787
26160
|
type: array
|
|
26161
|
+
description: 'Source receipts. Workbench model context supports soha://session/<sessionId>/message/<messageId> and rechecks current ownership and source access. Unsupported historical references remain stored but are withheld from model context.'
|
|
24788
26162
|
maxItems: 32
|
|
24789
26163
|
items: { type: string }
|
|
24790
26164
|
confidence: { type: number, minimum: 0, maximum: 1 }
|
|
@@ -25050,14 +26424,53 @@ components:
|
|
|
25050
26424
|
createdAt: { type: string, format: date-time }
|
|
25051
26425
|
updatedAt: { type: string, format: date-time }
|
|
25052
26426
|
additionalProperties: false
|
|
26427
|
+
PersonalDockerEnvironmentPolicy:
|
|
26428
|
+
type: object
|
|
26429
|
+
description: Administrator-selected registered Agent connection and hard personal-data quota. No user-entered URL, Docker handle, image or credential. Only container templates can use this policy; existing bindings freeze it and cannot silently move or resize their data. Runtime readiness still requires real Agent receipts.
|
|
26430
|
+
required: [agentClusterId, quota, leaseSeconds]
|
|
26431
|
+
properties:
|
|
26432
|
+
agentClusterId: { type: string, format: uuid }
|
|
26433
|
+
quota:
|
|
26434
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
26435
|
+
leaseSeconds: { type: integer, minimum: 60, maximum: 3600 }
|
|
26436
|
+
additionalProperties: false
|
|
26437
|
+
PersonalVMEnvironmentPolicy:
|
|
26438
|
+
type: object
|
|
26439
|
+
description: Administrator assignment of an existing Soha-managed PVE VM and independent data disk to one user. The server checks administrator VM access update scope and the current approved owner's VM view scope. Binding freezes fresh provider and disk identity; saving or binding does not initialize data or grant runtime readiness. No provider URL, credential, root disk or arbitrary device path is accepted.
|
|
26440
|
+
required: [ownerId, computeRef, provider, dataDiskSerial, dataDiskBytes, quota, leaseSeconds]
|
|
26441
|
+
properties:
|
|
26442
|
+
ownerId: { type: string, format: uuid }
|
|
26443
|
+
computeRef: { type: string, format: uuid, description: Soha VM ID, not a provider VM number. }
|
|
26444
|
+
provider: { type: string, enum: [pve] }
|
|
26445
|
+
dataDiskSerial: { type: string, pattern: '^[A-Za-z0-9_-]{1,20}$' }
|
|
26446
|
+
dataDiskBytes: { type: integer, format: int64, minimum: 1073741824, maximum: 1099511627776, multipleOf: 1073741824, description: Exact independent disk size in whole GiB. }
|
|
26447
|
+
quota:
|
|
26448
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
26449
|
+
leaseSeconds: { type: integer, minimum: 60, maximum: 3600 }
|
|
26450
|
+
additionalProperties: false
|
|
26451
|
+
PersonalEnvironmentQuota:
|
|
26452
|
+
type: object
|
|
26453
|
+
required: [diskBytes, memoryBytes, cpuUnits, maxProcesses, networkEgress]
|
|
26454
|
+
properties:
|
|
26455
|
+
diskBytes: { type: integer, format: int64, minimum: 16777216, maximum: 1099511627776, description: Hard charged persistent-data bytes; temporary mounts charge memory instead. }
|
|
26456
|
+
memoryBytes: { type: integer, format: int64, minimum: 33554432, maximum: 17179869184 }
|
|
26457
|
+
cpuUnits: { type: integer, format: int64, minimum: 1, maximum: 8000, description: CPU millicores; 1000 is one CPU. }
|
|
26458
|
+
maxProcesses: { type: integer, minimum: 4, maximum: 256 }
|
|
26459
|
+
networkEgress: { type: boolean, const: false, description: Direct network access is not supported by this personal environment policy. }
|
|
26460
|
+
additionalProperties: false
|
|
25053
26461
|
AIEnvironmentTemplateInput:
|
|
25054
26462
|
type: object
|
|
26463
|
+
description: Personal policies are mutually exclusive and require matching container or vm backend, an ID of at most 128 characters, and empty legacy resourcePolicy/networkPolicy maps. VM backend requires personalVM; its quota cannot exceed the independent disk size. The server checks current resource scope and explicit owner assignment; saving configuration is not an environment readiness receipt.
|
|
25055
26464
|
required: [id, name, backend, isolationMode]
|
|
25056
26465
|
properties:
|
|
25057
26466
|
id: { type: string, minLength: 1 }
|
|
25058
26467
|
name: { type: string, minLength: 1 }
|
|
25059
|
-
backend: { type: string, enum: [container, kubernetes] }
|
|
26468
|
+
backend: { type: string, enum: [container, kubernetes, vm] }
|
|
25060
26469
|
isolationMode: { type: string, enum: [read-only, disposable-write] }
|
|
26470
|
+
personalDocker:
|
|
26471
|
+
$ref: "#/components/schemas/PersonalDockerEnvironmentPolicy"
|
|
26472
|
+
personalVM:
|
|
26473
|
+
$ref: "#/components/schemas/PersonalVMEnvironmentPolicy"
|
|
25061
26474
|
resourcePolicy:
|
|
25062
26475
|
type: object
|
|
25063
26476
|
additionalProperties: true
|
|
@@ -25067,12 +26480,17 @@ components:
|
|
|
25067
26480
|
additionalProperties: false
|
|
25068
26481
|
AIEnvironmentTemplate:
|
|
25069
26482
|
type: object
|
|
26483
|
+
description: Personal policies are mutually exclusive and require matching container or vm backend, an ID of at most 128 characters, and empty legacy resourcePolicy/networkPolicy maps. VM backend requires personalVM; its quota cannot exceed the independent disk size. The server checks current resource scope and explicit owner assignment; saving configuration is not an environment readiness receipt.
|
|
25070
26484
|
required: [id, name, backend, isolationMode, status, createdAt, updatedAt]
|
|
25071
26485
|
properties:
|
|
25072
26486
|
id: { type: string, minLength: 1 }
|
|
25073
26487
|
name: { type: string, minLength: 1 }
|
|
25074
|
-
backend: { type: string, enum: [container, kubernetes] }
|
|
26488
|
+
backend: { type: string, enum: [container, kubernetes, vm] }
|
|
25075
26489
|
isolationMode: { type: string, enum: [read-only, disposable-write] }
|
|
26490
|
+
personalDocker:
|
|
26491
|
+
$ref: "#/components/schemas/PersonalDockerEnvironmentPolicy"
|
|
26492
|
+
personalVM:
|
|
26493
|
+
$ref: "#/components/schemas/PersonalVMEnvironmentPolicy"
|
|
25076
26494
|
resourcePolicy:
|
|
25077
26495
|
type: object
|
|
25078
26496
|
additionalProperties: true
|
|
@@ -25319,7 +26737,18 @@ components:
|
|
|
25319
26737
|
content: { type: string }
|
|
25320
26738
|
uri: { type: string }
|
|
25321
26739
|
version: { type: string }
|
|
26740
|
+
deleted:
|
|
26741
|
+
type: boolean
|
|
26742
|
+
description: Explicit source tombstone for this externalId. Missing documents in a partial fetch do not imply deletion. A tombstone has empty content.
|
|
25322
26743
|
acl: { $ref: "#/components/schemas/KnowledgeAccessScope" }
|
|
26744
|
+
allOf:
|
|
26745
|
+
- if:
|
|
26746
|
+
required: [deleted]
|
|
26747
|
+
properties:
|
|
26748
|
+
deleted: { const: true }
|
|
26749
|
+
then:
|
|
26750
|
+
properties:
|
|
26751
|
+
content: { maxLength: 0 }
|
|
25323
26752
|
additionalProperties: false
|
|
25324
26753
|
KnowledgeDocument:
|
|
25325
26754
|
type: object
|
|
@@ -25417,6 +26846,9 @@ components:
|
|
|
25417
26846
|
uri: { type: string }
|
|
25418
26847
|
score: { type: number }
|
|
25419
26848
|
contentHash: { type: string }
|
|
26849
|
+
documentVersionId: { type: string }
|
|
26850
|
+
indexRevisionId: { type: string }
|
|
26851
|
+
retrievedAt: { type: string, format: date-time }
|
|
25420
26852
|
additionalProperties: false
|
|
25421
26853
|
KnowledgeSearchHit:
|
|
25422
26854
|
type: object
|
|
@@ -25447,6 +26879,8 @@ components:
|
|
|
25447
26879
|
timingMs: { type: integer, format: int64, minimum: 0 }
|
|
25448
26880
|
noAnswer: { type: boolean }
|
|
25449
26881
|
traceId: { type: string }
|
|
26882
|
+
retrievalMode: { type: string, enum: [lexical, hybrid] }
|
|
26883
|
+
degradationReason: { type: string }
|
|
25450
26884
|
additionalProperties: false
|
|
25451
26885
|
EvaluationDatasetSample:
|
|
25452
26886
|
type: object
|
|
@@ -26160,7 +27594,10 @@ components:
|
|
|
26160
27594
|
type: object
|
|
26161
27595
|
properties:
|
|
26162
27596
|
publicModel: { type: string, maxLength: 200 }
|
|
26163
|
-
reasoningEffort:
|
|
27597
|
+
reasoningEffort:
|
|
27598
|
+
type: string
|
|
27599
|
+
enum: [auto, low, medium, high]
|
|
27600
|
+
x-enum-varnames: [WorkbenchModelPreferencesReasoningEffortAuto, WorkbenchModelPreferencesReasoningEffortLow, WorkbenchModelPreferencesReasoningEffortMedium, WorkbenchModelPreferencesReasoningEffortHigh]
|
|
26164
27601
|
additionalProperties: false
|
|
26165
27602
|
WorkbenchModelOption:
|
|
26166
27603
|
type: object
|
|
@@ -26170,10 +27607,32 @@ components:
|
|
|
26170
27607
|
reasoningEfforts:
|
|
26171
27608
|
type: array
|
|
26172
27609
|
items: { type: string, enum: [low, medium, high] }
|
|
27610
|
+
contextWindowTokens:
|
|
27611
|
+
type: integer
|
|
27612
|
+
format: int64
|
|
27613
|
+
minimum: 1
|
|
27614
|
+
description: Configured model window in tokens. Omitted when any eligible route has no valid capacity; otherwise the smallest eligible route capacity. Never inferred from the model name.
|
|
27615
|
+
additionalProperties: false
|
|
27616
|
+
WorkbenchContextUsage:
|
|
27617
|
+
type: object
|
|
27618
|
+
required: [measurement]
|
|
27619
|
+
description: Latest single model invocation, not cumulative Agent task consumption or selected evidence size. Missing counts and capacity are unknown, not zero. Capacity is snapshotted from the actual resolved route.
|
|
27620
|
+
properties:
|
|
27621
|
+
measurement: { type: string, enum: [reported, estimated, unavailable] }
|
|
27622
|
+
model: { type: string }
|
|
27623
|
+
inputTokens: { type: integer, format: int64, minimum: 0 }
|
|
27624
|
+
outputTokens: { type: integer, format: int64, minimum: 0 }
|
|
27625
|
+
totalTokens: { type: integer, format: int64, minimum: 0 }
|
|
27626
|
+
contextWindowTokens: { type: integer, format: int64, minimum: 1 }
|
|
26173
27627
|
additionalProperties: false
|
|
26174
27628
|
WorkbenchSessionMetadata:
|
|
26175
27629
|
type: object
|
|
26176
27630
|
properties:
|
|
27631
|
+
conversationKind:
|
|
27632
|
+
type: string
|
|
27633
|
+
enum: [main, side, personal_main, personal_side]
|
|
27634
|
+
readOnly: true
|
|
27635
|
+
description: Server-owned chat role. Older sessions without a role remain side chats. Main chats cannot be archived or deleted through the ordinary session operations.
|
|
26177
27636
|
modelPreferences:
|
|
26178
27637
|
$ref: "#/components/schemas/WorkbenchModelPreferences"
|
|
26179
27638
|
mode:
|
|
@@ -26220,6 +27679,340 @@ components:
|
|
|
26220
27679
|
createdAt: { type: string, format: date-time }
|
|
26221
27680
|
updatedAt: { type: string, format: date-time }
|
|
26222
27681
|
additionalProperties: false
|
|
27682
|
+
PersonalAgentAccess:
|
|
27683
|
+
type: object
|
|
27684
|
+
required: [userId, status, version]
|
|
27685
|
+
properties:
|
|
27686
|
+
userId: { type: string }
|
|
27687
|
+
status:
|
|
27688
|
+
type: string
|
|
27689
|
+
enum: [not_requested, pending, approved, rejected, revoked]
|
|
27690
|
+
version: { type: integer, format: int64, minimum: 0 }
|
|
27691
|
+
requestedAt: { type: string, format: date-time }
|
|
27692
|
+
decidedAt: { type: string, format: date-time }
|
|
27693
|
+
decidedBy: { type: string }
|
|
27694
|
+
additionalProperties: false
|
|
27695
|
+
PersonalAgentAccessDecision:
|
|
27696
|
+
type: object
|
|
27697
|
+
required: [status, version]
|
|
27698
|
+
properties:
|
|
27699
|
+
status: { type: string, enum: [approved, rejected, revoked] }
|
|
27700
|
+
version: { type: integer, format: int64, minimum: 1 }
|
|
27701
|
+
additionalProperties: false
|
|
27702
|
+
PersonalAgentAccessEnvelope:
|
|
27703
|
+
type: object
|
|
27704
|
+
required: [data]
|
|
27705
|
+
properties:
|
|
27706
|
+
data: { $ref: "#/components/schemas/PersonalAgentAccess" }
|
|
27707
|
+
additionalProperties: false
|
|
27708
|
+
PersonalAgentAccessListEnvelope:
|
|
27709
|
+
type: object
|
|
27710
|
+
required: [data]
|
|
27711
|
+
properties:
|
|
27712
|
+
data:
|
|
27713
|
+
type: array
|
|
27714
|
+
items: { $ref: "#/components/schemas/PersonalAgentAccess" }
|
|
27715
|
+
additionalProperties: false
|
|
27716
|
+
PersonalAssistant:
|
|
27717
|
+
type: object
|
|
27718
|
+
required: [id, name, mainSessionId, createdAt, updatedAt]
|
|
27719
|
+
properties:
|
|
27720
|
+
id: { type: string, readOnly: true }
|
|
27721
|
+
name: { type: string, minLength: 1, maxLength: 60 }
|
|
27722
|
+
avatarUrl:
|
|
27723
|
+
description: Bounded raster data URL belonging to this assistant, not the login account. Empty or absent uses the default image.
|
|
27724
|
+
type: string
|
|
27725
|
+
maxLength: 700000
|
|
27726
|
+
avatarPosterUrl:
|
|
27727
|
+
description: Static PNG/JPEG data URL used when motion is disabled or reduced.
|
|
27728
|
+
type: string
|
|
27729
|
+
maxLength: 150000
|
|
27730
|
+
avatarMotion: { type: string, enum: [auto, off] }
|
|
27731
|
+
mainSessionId: { type: string, readOnly: true }
|
|
27732
|
+
createdAt: { type: string, format: date-time, readOnly: true }
|
|
27733
|
+
updatedAt: { type: string, format: date-time, readOnly: true }
|
|
27734
|
+
additionalProperties: false
|
|
27735
|
+
PersonalAssistantAvatarRequest:
|
|
27736
|
+
type: object
|
|
27737
|
+
required: [avatarUrl]
|
|
27738
|
+
properties:
|
|
27739
|
+
avatarUrl:
|
|
27740
|
+
type: string
|
|
27741
|
+
maxLength: 700000
|
|
27742
|
+
pattern: '^(data:image/(png|jpeg|gif|webp);base64,[A-Za-z0-9+/]+={0,2})?$'
|
|
27743
|
+
avatarPosterUrl:
|
|
27744
|
+
type: string
|
|
27745
|
+
maxLength: 150000
|
|
27746
|
+
pattern: '^(data:image/(png|jpeg);base64,[A-Za-z0-9+/]+={0,2})?$'
|
|
27747
|
+
avatarMotion: { type: string, enum: [auto, off], default: auto }
|
|
27748
|
+
additionalProperties: false
|
|
27749
|
+
PersonalEnvironmentActionRequest:
|
|
27750
|
+
type: object
|
|
27751
|
+
required: [action]
|
|
27752
|
+
properties:
|
|
27753
|
+
action: { type: string, enum: [wake, sleep, reconcile] }
|
|
27754
|
+
templateId:
|
|
27755
|
+
description: Required on first wake; may only select the already bound template afterward. Only wake accepts this field.
|
|
27756
|
+
type: string
|
|
27757
|
+
minLength: 1
|
|
27758
|
+
maxLength: 128
|
|
27759
|
+
additionalProperties: false
|
|
27760
|
+
PersonalEnvironmentUsage:
|
|
27761
|
+
type: object
|
|
27762
|
+
required: [diskBytes, memoryBytes, cpuTimeNanos, processes]
|
|
27763
|
+
properties:
|
|
27764
|
+
diskBytes: { type: integer, format: int64, minimum: 0 }
|
|
27765
|
+
memoryBytes: { type: integer, format: int64, minimum: 0 }
|
|
27766
|
+
cpuTimeNanos: { type: integer, format: int64, minimum: 0 }
|
|
27767
|
+
processes: { type: integer, minimum: 0 }
|
|
27768
|
+
additionalProperties: false
|
|
27769
|
+
PersonalEnvironment:
|
|
27770
|
+
type: object
|
|
27771
|
+
required: [assistantId, state, version, dataInitialized]
|
|
27772
|
+
properties:
|
|
27773
|
+
assistantId: { type: string, minLength: 1, readOnly: true }
|
|
27774
|
+
templateId: { type: string, minLength: 1, maxLength: 128, readOnly: true }
|
|
27775
|
+
backend: { type: string, enum: [container, vm], readOnly: true, description: Frozen execution backend of this binding; never inferred from the current template. }
|
|
27776
|
+
provider: { type: string, enum: [docker, pve, kubevirt], readOnly: true }
|
|
27777
|
+
policyRevision: { type: string, minLength: 1, maxLength: 128, readOnly: true, description: Frozen policy identity. legacy-docker-v1 preserves the original stored lease and quota. }
|
|
27778
|
+
computeRef: { type: string, minLength: 1, maxLength: 128, readOnly: true, description: Opaque execution reference; not a physical handle or readiness proof. }
|
|
27779
|
+
computeGeneration: { type: integer, format: int64, minimum: 0, readOnly: true, description: Reserved execution generation; zero means no execution has been reserved. }
|
|
27780
|
+
dataRef: { type: string, minLength: 1, maxLength: 128, readOnly: true, description: Stable logical personal-data identity. Existence requires a fresh authorized receipt. }
|
|
27781
|
+
state:
|
|
27782
|
+
type: string
|
|
27783
|
+
enum: [unprovisioned, pending, ready, sleeping, missing, expired, unknown, quota_exceeded, deleting, deletion_unknown, deleted]
|
|
27784
|
+
readOnly: true
|
|
27785
|
+
version: { type: integer, format: int64, minimum: 0, readOnly: true }
|
|
27786
|
+
dataInitialized:
|
|
27787
|
+
description: A successful past data receipt; does not prove that data currently exists or that the environment is ready.
|
|
27788
|
+
type: boolean
|
|
27789
|
+
readOnly: true
|
|
27790
|
+
quota:
|
|
27791
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
27792
|
+
usage:
|
|
27793
|
+
$ref: "#/components/schemas/PersonalEnvironmentUsage"
|
|
27794
|
+
observedAt: { type: string, format: date-time, readOnly: true }
|
|
27795
|
+
expiresAt: { type: string, format: date-time, readOnly: true }
|
|
27796
|
+
updatedAt: { type: string, format: date-time, readOnly: true }
|
|
27797
|
+
additionalProperties: false
|
|
27798
|
+
PersonalEnvironmentTemplate:
|
|
27799
|
+
type: object
|
|
27800
|
+
required: [id, name, mode, leaseSeconds, quota]
|
|
27801
|
+
properties:
|
|
27802
|
+
id: { type: string, minLength: 1, maxLength: 128 }
|
|
27803
|
+
name: { type: string, minLength: 1, maxLength: 200 }
|
|
27804
|
+
backend: { type: string, enum: [container, vm] }
|
|
27805
|
+
provider: { type: string, enum: [docker, pve, kubevirt] }
|
|
27806
|
+
policyRevision: { type: string, minLength: 1, maxLength: 128 }
|
|
27807
|
+
mode: { type: string, enum: [observe-only, restricted-write] }
|
|
27808
|
+
leaseSeconds: { type: integer, minimum: 60, maximum: 3600 }
|
|
27809
|
+
quota:
|
|
27810
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
27811
|
+
additionalProperties: false
|
|
27812
|
+
PersonalEnvironmentTemplateListEnvelope:
|
|
27813
|
+
type: object
|
|
27814
|
+
required: [data]
|
|
27815
|
+
properties:
|
|
27816
|
+
data:
|
|
27817
|
+
type: array
|
|
27818
|
+
maxItems: 100
|
|
27819
|
+
items:
|
|
27820
|
+
$ref: "#/components/schemas/PersonalEnvironmentTemplate"
|
|
27821
|
+
additionalProperties: false
|
|
27822
|
+
PersonalEnvironmentEnvelope:
|
|
27823
|
+
type: object
|
|
27824
|
+
required: [data]
|
|
27825
|
+
properties:
|
|
27826
|
+
data:
|
|
27827
|
+
$ref: "#/components/schemas/PersonalEnvironment"
|
|
27828
|
+
additionalProperties: false
|
|
27829
|
+
PersonalGuestRuntimeInput:
|
|
27830
|
+
type: object
|
|
27831
|
+
additionalProperties: false
|
|
27832
|
+
required: [environmentVersion, idempotencyKey, kind]
|
|
27833
|
+
properties:
|
|
27834
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27835
|
+
idempotencyKey: { type: string, minLength: 8, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }
|
|
27836
|
+
kind: { type: string, enum: [execute, file_read, file_write, docker, browser] }
|
|
27837
|
+
argv:
|
|
27838
|
+
type: array
|
|
27839
|
+
minItems: 1
|
|
27840
|
+
maxItems: 64
|
|
27841
|
+
items: { type: string, maxLength: 4096 }
|
|
27842
|
+
file:
|
|
27843
|
+
type: object
|
|
27844
|
+
additionalProperties: false
|
|
27845
|
+
required: [path]
|
|
27846
|
+
properties:
|
|
27847
|
+
path: { type: string, minLength: 1, maxLength: 1024 }
|
|
27848
|
+
contentBase64: { type: string, maxLength: 60076 }
|
|
27849
|
+
expectedSHA256: { type: string, pattern: "^[a-f0-9]{64}$" }
|
|
27850
|
+
browser:
|
|
27851
|
+
type: object
|
|
27852
|
+
additionalProperties: false
|
|
27853
|
+
required: [action]
|
|
27854
|
+
properties:
|
|
27855
|
+
action: { type: string, enum: [acquire, snapshot, navigate, click, type, pointer, takeover, return, release] }
|
|
27856
|
+
controlId: { type: string, format: uuid }
|
|
27857
|
+
generation: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27858
|
+
url: { type: string, maxLength: 4096 }
|
|
27859
|
+
selector: { type: string, maxLength: 2048 }
|
|
27860
|
+
text: { type: string, maxLength: 4096 }
|
|
27861
|
+
x: { type: integer, minimum: 0, maximum: 799 }
|
|
27862
|
+
y: { type: integer, minimum: 0, maximum: 599 }
|
|
27863
|
+
PersonalGuestRuntime:
|
|
27864
|
+
type: object
|
|
27865
|
+
additionalProperties: false
|
|
27866
|
+
required: [id, kind, status, assistantId, environmentVersion]
|
|
27867
|
+
properties:
|
|
27868
|
+
id: { type: string, format: uuid }
|
|
27869
|
+
kind: { type: string, enum: [execute, file_read, file_write, docker, browser] }
|
|
27870
|
+
status: { type: string, enum: [queued, running, succeeded, failed, canceled, unknown] }
|
|
27871
|
+
assistantId: { type: string, format: uuid }
|
|
27872
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27873
|
+
output: { type: string, maxLength: 65536 }
|
|
27874
|
+
exitCode: { type: integer, minimum: 0, maximum: 255 }
|
|
27875
|
+
file:
|
|
27876
|
+
type: object
|
|
27877
|
+
additionalProperties: false
|
|
27878
|
+
required: [path, sha256, size]
|
|
27879
|
+
properties:
|
|
27880
|
+
path: { type: string, maxLength: 1024 }
|
|
27881
|
+
contentBase64: { type: string, maxLength: 60076 }
|
|
27882
|
+
sha256: { type: string, pattern: "^[a-f0-9]{64}$" }
|
|
27883
|
+
size: { type: integer, format: int64, minimum: 0, maximum: 45056 }
|
|
27884
|
+
browser:
|
|
27885
|
+
type: object
|
|
27886
|
+
additionalProperties: false
|
|
27887
|
+
required: [controlId, generation, instanceId, width, height]
|
|
27888
|
+
properties:
|
|
27889
|
+
controlId: { type: string, format: uuid }
|
|
27890
|
+
generation: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27891
|
+
instanceId: { type: string, format: uuid }
|
|
27892
|
+
url: { type: string, maxLength: 4096 }
|
|
27893
|
+
title: { type: string, maxLength: 512 }
|
|
27894
|
+
text: { type: string, maxLength: 4096 }
|
|
27895
|
+
jpegBase64: { type: string, maxLength: 49152 }
|
|
27896
|
+
width: { type: integer, const: 800 }
|
|
27897
|
+
height: { type: integer, const: 600 }
|
|
27898
|
+
PersonalWorkspaceRuntime:
|
|
27899
|
+
type: object
|
|
27900
|
+
additionalProperties: false
|
|
27901
|
+
required: [assistantId, environmentVersion]
|
|
27902
|
+
properties:
|
|
27903
|
+
assistantId: { type: string, format: uuid }
|
|
27904
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27905
|
+
latest: { $ref: "#/components/schemas/PersonalGuestRuntime" }
|
|
27906
|
+
browserControl:
|
|
27907
|
+
type: object
|
|
27908
|
+
additionalProperties: false
|
|
27909
|
+
required: [controlId, generation, owner, expiresAt]
|
|
27910
|
+
properties:
|
|
27911
|
+
controlId: { type: string, format: uuid }
|
|
27912
|
+
generation: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27913
|
+
owner: { type: string, enum: [user, agent, released] }
|
|
27914
|
+
taskId: { type: string, format: uuid }
|
|
27915
|
+
instanceId: { type: string, format: uuid }
|
|
27916
|
+
expiresAt: { type: string, format: date-time }
|
|
27917
|
+
PersonalWorkspaceRuntimeEnvelope:
|
|
27918
|
+
type: object
|
|
27919
|
+
additionalProperties: false
|
|
27920
|
+
required: [data]
|
|
27921
|
+
properties:
|
|
27922
|
+
data: { $ref: "#/components/schemas/PersonalWorkspaceRuntime" }
|
|
27923
|
+
PersonalGuestRuntimeEnvelope:
|
|
27924
|
+
type: object
|
|
27925
|
+
additionalProperties: false
|
|
27926
|
+
required: [data]
|
|
27927
|
+
properties:
|
|
27928
|
+
data: { $ref: "#/components/schemas/PersonalGuestRuntime" }
|
|
27929
|
+
PersonalGuestToolsInput:
|
|
27930
|
+
type: object
|
|
27931
|
+
additionalProperties: false
|
|
27932
|
+
required: [environmentVersion, idempotencyKey]
|
|
27933
|
+
properties:
|
|
27934
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27935
|
+
idempotencyKey: { type: string, minLength: 8, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }
|
|
27936
|
+
PersonalGuestPreparationInput:
|
|
27937
|
+
type: object
|
|
27938
|
+
required: [environmentVersion, csrPEM]
|
|
27939
|
+
properties:
|
|
27940
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27941
|
+
csrPEM: { type: string, minLength: 1, maxLength: 4096, description: Signed Ed25519 CSR containing only a public key. Requested subject and identity never grant authority. }
|
|
27942
|
+
additionalProperties: false
|
|
27943
|
+
PersonalGuestPreparation:
|
|
27944
|
+
type: object
|
|
27945
|
+
required: [bindingId, enrollmentId, challenge, endpoint, certificatePEM, clientCAPEM, expiresAt]
|
|
27946
|
+
properties:
|
|
27947
|
+
bindingId: { type: string, format: uuid }
|
|
27948
|
+
enrollmentId: { type: string, format: uuid }
|
|
27949
|
+
challenge: { type: string, pattern: "^[A-Za-z0-9_-]{43}$", x-soha-sensitive: true, description: One-time 32-byte unpadded base64url token. Must not enter logs, audits, events or command receipts. }
|
|
27950
|
+
endpoint: { type: string, format: uri, maxLength: 512, description: Core-configured HTTPS guest endpoint; never a caller-selected destination. }
|
|
27951
|
+
certificatePEM: { type: string, minLength: 1, maxLength: 8192 }
|
|
27952
|
+
clientCAPEM: { type: string, minLength: 1, maxLength: 8192 }
|
|
27953
|
+
expiresAt: { type: string, format: date-time, description: The bootstrap challenge expiry, not an environment readiness or execution lease. }
|
|
27954
|
+
additionalProperties: false
|
|
27955
|
+
PersonalGuestPreparationEnvelope:
|
|
27956
|
+
type: object
|
|
27957
|
+
required: [data]
|
|
27958
|
+
properties:
|
|
27959
|
+
data: { $ref: "#/components/schemas/PersonalGuestPreparation" }
|
|
27960
|
+
additionalProperties: false
|
|
27961
|
+
PersonalEnvironmentDataExportRequest:
|
|
27962
|
+
type: object
|
|
27963
|
+
required: [assistantId, environmentVersion]
|
|
27964
|
+
properties:
|
|
27965
|
+
assistantId: { type: string, minLength: 1, maxLength: 128 }
|
|
27966
|
+
environmentVersion: { type: integer, format: int64, minimum: 1 }
|
|
27967
|
+
additionalProperties: false
|
|
27968
|
+
PersonalEnvironmentDataDeletionRequest:
|
|
27969
|
+
type: object
|
|
27970
|
+
required: [assistantId, environmentVersion, confirmationName]
|
|
27971
|
+
properties:
|
|
27972
|
+
assistantId: { type: string, minLength: 1, maxLength: 128 }
|
|
27973
|
+
environmentVersion: { type: integer, format: int64, minimum: 1 }
|
|
27974
|
+
confirmationName: { type: string, minLength: 1, maxLength: 60 }
|
|
27975
|
+
additionalProperties: false
|
|
27976
|
+
PersonalAssistantUpdateRequest:
|
|
27977
|
+
type: object
|
|
27978
|
+
required: [name]
|
|
27979
|
+
properties:
|
|
27980
|
+
name: { type: string, minLength: 1, maxLength: 60 }
|
|
27981
|
+
additionalProperties: false
|
|
27982
|
+
PersonalAssistantArtifact:
|
|
27983
|
+
type: object
|
|
27984
|
+
required: [id, artifact, createdAt]
|
|
27985
|
+
properties:
|
|
27986
|
+
id: { type: string, readOnly: true }
|
|
27987
|
+
sessionId: { type: string, readOnly: true }
|
|
27988
|
+
messageId: { type: string, readOnly: true }
|
|
27989
|
+
taskId: { type: string, readOnly: true }
|
|
27990
|
+
artifact:
|
|
27991
|
+
$ref: "#/components/schemas/WorkbenchAnalysisArtifact"
|
|
27992
|
+
createdAt: { type: string, format: date-time, readOnly: true }
|
|
27993
|
+
additionalProperties: false
|
|
27994
|
+
PersonalAssistantArtifactListEnvelope:
|
|
27995
|
+
type: object
|
|
27996
|
+
required: [data]
|
|
27997
|
+
properties:
|
|
27998
|
+
data:
|
|
27999
|
+
type: array
|
|
28000
|
+
maxItems: 50
|
|
28001
|
+
items:
|
|
28002
|
+
$ref: "#/components/schemas/PersonalAssistantArtifact"
|
|
28003
|
+
additionalProperties: false
|
|
28004
|
+
PersonalAssistantEnvelope:
|
|
28005
|
+
type: object
|
|
28006
|
+
required: [data]
|
|
28007
|
+
properties:
|
|
28008
|
+
data:
|
|
28009
|
+
$ref: "#/components/schemas/PersonalAssistant"
|
|
28010
|
+
additionalProperties: false
|
|
28011
|
+
WorkbenchMainSessionRequest:
|
|
28012
|
+
type: object
|
|
28013
|
+
properties:
|
|
28014
|
+
agentProviderId: { type: string, maxLength: 200 }
|
|
28015
|
+
additionalProperties: false
|
|
26223
28016
|
WorkbenchCreateSessionRequest:
|
|
26224
28017
|
type: object
|
|
26225
28018
|
properties:
|
|
@@ -26274,9 +28067,11 @@ components:
|
|
|
26274
28067
|
role:
|
|
26275
28068
|
type: string
|
|
26276
28069
|
enum: [user, assistant, system]
|
|
28070
|
+
x-enum-varnames: [WorkbenchMessageRoleUser, WorkbenchMessageRoleAssistant, WorkbenchMessageRoleSystem]
|
|
26277
28071
|
content: { type: string }
|
|
26278
28072
|
metadata:
|
|
26279
28073
|
type: object
|
|
28074
|
+
description: Background provenance is stored in contextSnapshot (legacy contextEnvelope is readable). contextUsage describes the latest single model call; Native usage is cumulative task consumption. User metadata.images contains WorkbenchImageAttachment items. Completed assistant metadata may contain assistantReaction (one of 👋 👍 ❤️ 😊 🎉 💡 👀 🤔 ✅ 🙏) and server-bound requestMessageId for that reaction. Reactions are social acknowledgements, never approval or execution evidence.
|
|
26280
28075
|
additionalProperties: {}
|
|
26281
28076
|
createdAt: { type: string, format: date-time }
|
|
26282
28077
|
additionalProperties: false
|
|
@@ -26886,6 +28681,11 @@ components:
|
|
|
26886
28681
|
rootCauseRunId: { type: string }
|
|
26887
28682
|
createdBy: { type: string }
|
|
26888
28683
|
status: { type: string }
|
|
28684
|
+
executionOwner: { type: string, enum: [native, external] }
|
|
28685
|
+
phase: { type: string }
|
|
28686
|
+
stopReason: { type: string }
|
|
28687
|
+
eventSequence: { type: integer, minimum: 0 }
|
|
28688
|
+
usageKnown: { type: boolean }
|
|
26889
28689
|
scope:
|
|
26890
28690
|
$ref: "#/components/schemas/WorkbenchSessionScope"
|
|
26891
28691
|
toolset:
|
|
@@ -27337,10 +29137,31 @@ components:
|
|
|
27337
29137
|
ok:
|
|
27338
29138
|
type: boolean
|
|
27339
29139
|
additionalProperties: false
|
|
29140
|
+
WorkbenchAssistantTask:
|
|
29141
|
+
description: An explicit, owner-scoped assistant appearance task executed through chat. Images are bounded inline avatar assets, never arbitrary remote URLs. The instruction remains in content. No account identity or resource permissions change. Undo references a successful profile reply in the same owned session and rejects stale replacements.
|
|
29142
|
+
type: object
|
|
29143
|
+
required: [kind]
|
|
29144
|
+
properties:
|
|
29145
|
+
kind: { type: string, enum: [avatar, undo] }
|
|
29146
|
+
image:
|
|
29147
|
+
$ref: "#/components/schemas/PersonalAssistantAvatarRequest"
|
|
29148
|
+
useCurrentAvatar: { type: boolean }
|
|
29149
|
+
publicModel: { type: string, minLength: 1, maxLength: 128 }
|
|
29150
|
+
messageId: { type: string, minLength: 1, maxLength: 128 }
|
|
29151
|
+
additionalProperties: false
|
|
27340
29152
|
WorkbenchSendMessageStreamRequest:
|
|
27341
29153
|
type: object
|
|
27342
29154
|
required: [content]
|
|
27343
29155
|
properties:
|
|
29156
|
+
requestId:
|
|
29157
|
+
type: string
|
|
29158
|
+
minLength: 1
|
|
29159
|
+
maxLength: 128
|
|
29160
|
+
description: A stable per-turn idempotency key. Reusing it with different content or selections is rejected.
|
|
29161
|
+
taskIntent:
|
|
29162
|
+
$ref: "#/components/schemas/WorkbenchTaskIntent"
|
|
29163
|
+
assistantTask:
|
|
29164
|
+
$ref: "#/components/schemas/WorkbenchAssistantTask"
|
|
27344
29165
|
contextSelection:
|
|
27345
29166
|
$ref: "#/components/schemas/WorkbenchContextSelection"
|
|
27346
29167
|
knowledgeContext:
|
|
@@ -27377,10 +29198,82 @@ components:
|
|
|
27377
29198
|
type: object
|
|
27378
29199
|
additionalProperties: {}
|
|
27379
29200
|
additionalProperties: false
|
|
29201
|
+
WorkbenchTaskIntent:
|
|
29202
|
+
description: Capability preferences and explicit query parameters for this turn only. Does not change session mode, grant permission, or create scheduled inspections.
|
|
29203
|
+
type: object
|
|
29204
|
+
properties:
|
|
29205
|
+
capabilities:
|
|
29206
|
+
type: array
|
|
29207
|
+
maxItems: 4
|
|
29208
|
+
uniqueItems: true
|
|
29209
|
+
items: { type: string, enum: [root_cause, performance, trace, inspection_review] }
|
|
29210
|
+
dataSourceId:
|
|
29211
|
+
description: Legacy shared selection. A capability-specific data source takes precedence for that capability.
|
|
29212
|
+
type: string
|
|
29213
|
+
maxLength: 256
|
|
29214
|
+
performanceDataSourceId: { type: string, maxLength: 256 }
|
|
29215
|
+
traceDataSourceId: { type: string, maxLength: 256 }
|
|
29216
|
+
rootCauseProfileId: { type: string, maxLength: 256 }
|
|
29217
|
+
metricKey: { type: string, maxLength: 256 }
|
|
29218
|
+
traceId: { type: string, maxLength: 256 }
|
|
29219
|
+
minDurationMs: { type: integer, minimum: 0, maximum: 86400000, x-go-type-skip-optional-pointer: false }
|
|
29220
|
+
inspectionRunIds:
|
|
29221
|
+
type: array
|
|
29222
|
+
maxItems: 20
|
|
29223
|
+
uniqueItems: true
|
|
29224
|
+
items: { type: string, minLength: 1, maxLength: 128 }
|
|
29225
|
+
additionalProperties: false
|
|
29226
|
+
WorkbenchProfessionalCapabilityInput:
|
|
29227
|
+
type: object
|
|
29228
|
+
required: [sessionId, question, scope, intent]
|
|
29229
|
+
properties:
|
|
29230
|
+
sessionId: { type: string, minLength: 1, maxLength: 128 }
|
|
29231
|
+
question: { type: string, minLength: 1, maxLength: 16384 }
|
|
29232
|
+
locale: { type: string, maxLength: 35 }
|
|
29233
|
+
scope: { $ref: "#/components/schemas/WorkbenchSessionScope" }
|
|
29234
|
+
toolset: { $ref: "#/components/schemas/WorkbenchSessionToolset" }
|
|
29235
|
+
intent: { $ref: "#/components/schemas/WorkbenchTaskIntent" }
|
|
29236
|
+
additionalProperties: false
|
|
29237
|
+
AgentRunResumeRequest:
|
|
29238
|
+
type: object
|
|
29239
|
+
properties:
|
|
29240
|
+
input: { type: string, maxLength: 16384 }
|
|
29241
|
+
additionalProperties: false
|
|
29242
|
+
AgentRunEventListEnvelope:
|
|
29243
|
+
type: object
|
|
29244
|
+
required: [data]
|
|
29245
|
+
properties:
|
|
29246
|
+
data: { $ref: "#/components/schemas/AgentRunEventPage" }
|
|
29247
|
+
additionalProperties: false
|
|
29248
|
+
AgentRunEventPage:
|
|
29249
|
+
type: object
|
|
29250
|
+
required: [items, nextSequence, hasMore, resyncRequired]
|
|
29251
|
+
properties:
|
|
29252
|
+
items:
|
|
29253
|
+
type: array
|
|
29254
|
+
items: { $ref: "#/components/schemas/WorkbenchStreamEvent" }
|
|
29255
|
+
nextSequence: { type: integer, minimum: 0 }
|
|
29256
|
+
hasMore: { type: boolean }
|
|
29257
|
+
resyncRequired: { type: boolean }
|
|
29258
|
+
additionalProperties: false
|
|
29259
|
+
WorkbenchMessageSearchHit: {"type":"object","required":["sessionId","sessionTitle","messageId","role","snippet","createdAt"],"properties":{"sessionId":{"type":"string","maxLength":128},"sessionTitle":{"type":"string","maxLength":200},"messageId":{"type":"string","maxLength":128},"role":{"type":"string","enum":["user","assistant"],"x-enum-varnames":["WorkbenchMessageSearchHitRoleUser","WorkbenchMessageSearchHitRoleAssistant"]},"snippet":{"type":"string","maxLength":400},"createdAt":{"type":"string","format":"date-time"}},"additionalProperties":false}
|
|
29260
|
+
WorkbenchMessageSearchPage: {"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkbenchMessageSearchHit"}},"nextCursor":{"type":"string","maxLength":512}},"additionalProperties":false}
|
|
29261
|
+
WorkbenchMessageSearchEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkbenchMessageSearchPage"}},"additionalProperties":false}
|
|
29262
|
+
WorkbenchMessageWindow: {"type":"object","required":["messages"],"properties":{"messages":{"type":"array","items":{"$ref":"#/components/schemas/WorkbenchMessage"}},"beforeCursor":{"type":"string","maxLength":128},"afterCursor":{"type":"string","maxLength":128}},"additionalProperties":false}
|
|
29263
|
+
WorkbenchMessageWindowEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkbenchMessageWindow"}},"additionalProperties":false}
|
|
29264
|
+
PersonalFeedSettings: {"type":"object","required":["instructions","searchTool","autoUpdate"],"properties":{"instructions":{"type":"string","maxLength":2000},"searchTool":{"type":"string","maxLength":256},"autoUpdate":{"type":"boolean"}},"additionalProperties":false}
|
|
29265
|
+
PersonalFeedSource: {"type":"object","required":["url","title","excerpt"],"properties":{"url":{"type":"string","format":"uri","maxLength":2048,"pattern":"^https://"},"title":{"type":"string","maxLength":256},"excerpt":{"type":"string","maxLength":4000}},"additionalProperties":false}
|
|
29266
|
+
PersonalFeedItem: {"type":"object","required":["id","title","body","reason","sources","liked","createdAt"],"properties":{"id":{"type":"string","maxLength":128},"title":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":4000},"reason":{"type":"string","maxLength":1000},"sources":{"type":"array","minItems":1,"maxItems":5,"items":{"$ref":"#/components/schemas/PersonalFeedSource"}},"liked":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}},"additionalProperties":false}
|
|
29267
|
+
PersonalFeedSearchTool: {"type":"object","required":["name","title"],"properties":{"name":{"type":"string","maxLength":256},"title":{"type":"string","maxLength":256}},"additionalProperties":false}
|
|
29268
|
+
PersonalFeedPage: {"type":"object","required":["items","settings","state","searchTools"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PersonalFeedItem"}},"settings":{"$ref":"#/components/schemas/PersonalFeedSettings"},"state":{"type":"string","enum":["idle","queued","running","failed"]},"error":{"type":"string","maxLength":1000},"lastUpdatedAt":{"type":"string","format":"date-time"},"nextCursor":{"type":"string","maxLength":128},"searchTools":{"type":"array","items":{"$ref":"#/components/schemas/PersonalFeedSearchTool"}}},"additionalProperties":false}
|
|
29269
|
+
PersonalFeedEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PersonalFeedPage"}},"additionalProperties":false}
|
|
29270
|
+
PersonalFeedItemEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PersonalFeedItem"}},"additionalProperties":false}
|
|
29271
|
+
PersonalFeedFeedback: {"type":"object","required":[],"properties":{"liked":{"type":"boolean"},"hidden":{"type":"boolean"}},"additionalProperties":false}
|
|
27380
29272
|
WorkbenchContextSelection:
|
|
27381
|
-
description: Explicit references
|
|
29273
|
+
description: Explicit references, UTF-8 text attachments and a bounded inline chat image for this request. Images are ordinary message content and never imply an assistant appearance change. Images are retained with the owned message; references are rechecked on use.
|
|
27382
29274
|
type: object
|
|
27383
29275
|
properties:
|
|
29276
|
+
feedItemId: { type: string, minLength: 1, maxLength: 128, description: Owned personal feed post, reloaded and checked by the server before discussion. }
|
|
27384
29277
|
memoryIds:
|
|
27385
29278
|
type: array
|
|
27386
29279
|
maxItems: 20
|
|
@@ -27397,6 +29290,23 @@ components:
|
|
|
27397
29290
|
maxItems: 8
|
|
27398
29291
|
items:
|
|
27399
29292
|
$ref: "#/components/schemas/WorkbenchTextAttachment"
|
|
29293
|
+
images:
|
|
29294
|
+
type: array
|
|
29295
|
+
maxItems: 1
|
|
29296
|
+
items:
|
|
29297
|
+
$ref: "#/components/schemas/WorkbenchImageAttachment"
|
|
29298
|
+
additionalProperties: false
|
|
29299
|
+
WorkbenchImageAttachment:
|
|
29300
|
+
description: Ordinary chat image, preserved without square cropping. Inline PNG/JPEG only, at most 700000 data URL characters and 1024 pixels on each edge. The server verifies MIME, decoded bytes and dimensions before storage or model invocation. No remote URL fetch. Message metadata.images retains the attachment for history and retry.
|
|
29301
|
+
type: object
|
|
29302
|
+
required: [id, name, dataUrl]
|
|
29303
|
+
properties:
|
|
29304
|
+
id: { type: string, minLength: 1, maxLength: 128 }
|
|
29305
|
+
name: { type: string, minLength: 1, maxLength: 256 }
|
|
29306
|
+
dataUrl:
|
|
29307
|
+
type: string
|
|
29308
|
+
maxLength: 700000
|
|
29309
|
+
pattern: '^data:image/(png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$'
|
|
27400
29310
|
additionalProperties: false
|
|
27401
29311
|
WorkbenchContextReference:
|
|
27402
29312
|
type: object
|
|
@@ -27570,7 +29480,7 @@ components:
|
|
|
27570
29480
|
type: string
|
|
27571
29481
|
providerKind:
|
|
27572
29482
|
type: string
|
|
27573
|
-
enum: [internal, hermes, openclaw, general, openai, anthropic, openai-compatible, deepseek, qwen, openrouter, azure-openai, gemini, cohere]
|
|
29483
|
+
enum: [internal, native, hermes, openclaw, general, openai, anthropic, openai-compatible, deepseek, qwen, openrouter, azure-openai, gemini, cohere]
|
|
27574
29484
|
status:
|
|
27575
29485
|
type: string
|
|
27576
29486
|
enum: [queued, running, succeeded, failed, cancelled]
|
|
@@ -27712,6 +29622,7 @@ components:
|
|
|
27712
29622
|
role:
|
|
27713
29623
|
type: string
|
|
27714
29624
|
enum: [assistant]
|
|
29625
|
+
x-enum-varnames: [AgentRunCallbackWorkbenchMessageDeltaEventRoleAssistant]
|
|
27715
29626
|
contentDelta:
|
|
27716
29627
|
type: string
|
|
27717
29628
|
unevaluatedProperties: false
|
|
@@ -27727,6 +29638,7 @@ components:
|
|
|
27727
29638
|
role:
|
|
27728
29639
|
type: string
|
|
27729
29640
|
enum: [assistant]
|
|
29641
|
+
x-enum-varnames: [AgentRunCallbackWorkbenchMessageDeltaEventRoleAssistant]
|
|
27730
29642
|
content:
|
|
27731
29643
|
type: string
|
|
27732
29644
|
metadata:
|
|
@@ -33666,12 +35578,14 @@ components:
|
|
|
33666
35578
|
type: object
|
|
33667
35579
|
properties:
|
|
33668
35580
|
helm: { $ref: "#/components/schemas/HelmExecutionTaskPayload" }
|
|
35581
|
+
sshCommand: { $ref: "#/components/schemas/AgentSSHCommandRequest" }
|
|
33669
35582
|
additionalProperties: true
|
|
33670
35583
|
x-go-type: map[string]any
|
|
33671
35584
|
result:
|
|
33672
35585
|
type: object
|
|
33673
35586
|
properties:
|
|
33674
35587
|
helm: { $ref: "#/components/schemas/HelmExecutionTaskResult" }
|
|
35588
|
+
sshCommand: { $ref: "#/components/schemas/AgentSSHCommandResult" }
|
|
33675
35589
|
additionalProperties: true
|
|
33676
35590
|
x-go-type: map[string]any
|
|
33677
35591
|
x-go-type-skip-optional-pointer: true
|
|
@@ -33795,8 +35709,19 @@ components:
|
|
|
33795
35709
|
name: { type: string }
|
|
33796
35710
|
storage: { type: string }
|
|
33797
35711
|
bus: { type: string }
|
|
35712
|
+
serial:
|
|
35713
|
+
type: string
|
|
35714
|
+
minLength: 1
|
|
35715
|
+
maxLength: 20
|
|
35716
|
+
pattern: '^[A-Za-z0-9_-]+$'
|
|
35717
|
+
description: Immutable guest-visible identity for a newly added PVE disk. Only accepted with add=true; resizing an existing disk preserves its identity. Providers without disk-identity support reject the request before modifying resources.
|
|
33798
35718
|
sizeGiB: { type: integer, minimum: 1 }
|
|
33799
35719
|
add: { type: boolean }
|
|
35720
|
+
if: { required: [serial] }
|
|
35721
|
+
then:
|
|
35722
|
+
required: [add]
|
|
35723
|
+
properties:
|
|
35724
|
+
add: { const: true }
|
|
33800
35725
|
additionalProperties: false
|
|
33801
35726
|
VirtualMachineNetworkChange:
|
|
33802
35727
|
type: object
|
|
@@ -33895,10 +35820,298 @@ components:
|
|
|
33895
35820
|
poolRevision: { type: integer, minimum: 1 }
|
|
33896
35821
|
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
|
|
33897
35822
|
additionalProperties: false
|
|
35823
|
+
VirtualizationCapacityPolicyMode:
|
|
35824
|
+
type: string
|
|
35825
|
+
enum: [unconfigured, observing, enforced]
|
|
35826
|
+
x-enum-varnames: [CapacityPolicyUnconfigured, CapacityPolicyObserving, CapacityPolicyEnforced]
|
|
35827
|
+
VirtualizationOvercommitPolicy:
|
|
35828
|
+
type: object
|
|
35829
|
+
required: [enabled, percent]
|
|
35830
|
+
properties:
|
|
35831
|
+
enabled: { type: boolean }
|
|
35832
|
+
percent: { type: integer, minimum: 100, maximum: 800 }
|
|
35833
|
+
additionalProperties: false
|
|
35834
|
+
VirtualizationMemoryOvercommitPolicy:
|
|
35835
|
+
type: object
|
|
35836
|
+
required: [enabled, percent]
|
|
35837
|
+
properties:
|
|
35838
|
+
enabled: { type: boolean }
|
|
35839
|
+
percent: { type: integer, minimum: 100, maximum: 150 }
|
|
35840
|
+
additionalProperties: false
|
|
35841
|
+
VirtualizationCapacityPolicyInput:
|
|
35842
|
+
type: object
|
|
35843
|
+
required: [expectedRevision, mode, cpu, memory]
|
|
35844
|
+
properties:
|
|
35845
|
+
expectedRevision: { type: integer, minimum: 0 }
|
|
35846
|
+
physicalSourceId:
|
|
35847
|
+
type: string
|
|
35848
|
+
minLength: 1
|
|
35849
|
+
maxLength: 128
|
|
35850
|
+
pattern: "^[A-Za-z0-9][A-Za-z0-9._-]*$"
|
|
35851
|
+
description: Administrator-confirmed identity of one physical PVE source. All aliases must join this identity before admission. Ordinary VM callers cannot choose a source.
|
|
35852
|
+
mode: { type: string, enum: [observing, enforced], x-enum-varnames: [CapacityPolicyInputObserving, CapacityPolicyInputEnforced] }
|
|
35853
|
+
cpu: { $ref: "#/components/schemas/VirtualizationOvercommitPolicy" }
|
|
35854
|
+
memory: { $ref: "#/components/schemas/VirtualizationMemoryOvercommitPolicy" }
|
|
35855
|
+
additionalProperties: false
|
|
35856
|
+
VirtualizationCapacityPolicy:
|
|
35857
|
+
type: object
|
|
35858
|
+
required: [sourceId, revision, mode, cpu, memory]
|
|
35859
|
+
properties:
|
|
35860
|
+
sourceConfirmed: { type: boolean, description: New PVE sources use a strict 100 percent policy and cannot admit until an administrator confirms their physical source identity. }
|
|
35861
|
+
sourceId: { type: string }
|
|
35862
|
+
revision: { type: integer, minimum: 0 }
|
|
35863
|
+
mode: { $ref: "#/components/schemas/VirtualizationCapacityPolicyMode" }
|
|
35864
|
+
cpu: { $ref: "#/components/schemas/VirtualizationOvercommitPolicy" }
|
|
35865
|
+
memory: { $ref: "#/components/schemas/VirtualizationMemoryOvercommitPolicy" }
|
|
35866
|
+
updatedAt: { type: string, format: date-time }
|
|
35867
|
+
updatedBy: { type: string }
|
|
35868
|
+
additionalProperties: false
|
|
35869
|
+
VirtualizationCapacityPolicyEnvelope:
|
|
35870
|
+
type: object
|
|
35871
|
+
required: [data]
|
|
35872
|
+
properties:
|
|
35873
|
+
data: { $ref: "#/components/schemas/VirtualizationCapacityPolicy" }
|
|
35874
|
+
additionalProperties: false
|
|
35875
|
+
VirtualizationCapacityCheckDiagnostic:
|
|
35876
|
+
type: object
|
|
35877
|
+
required: [check, dimension, status, limit, committed, pending, demand, available, reason]
|
|
35878
|
+
properties:
|
|
35879
|
+
check: { type: string, enum: [budget, runtime, storage], x-enum-varnames: [VirtualizationCapacityCheckDiagnosticCheckBudget, VirtualizationCapacityCheckDiagnosticCheckRuntime, VirtualizationCapacityCheckDiagnosticCheckStorage] }
|
|
35880
|
+
dimension: { type: string, enum: [cpu, memory, disk], x-enum-varnames: [VirtualizationCapacityCheckDiagnosticDimensionCpu, VirtualizationCapacityCheckDiagnosticDimensionMemory, VirtualizationCapacityCheckDiagnosticDimensionDisk] }
|
|
35881
|
+
status: { type: string, enum: [available, unavailable, unknown], x-enum-varnames: [VirtualizationCapacityCheckDiagnosticStatusAvailable, VirtualizationCapacityCheckDiagnosticStatusUnavailable, VirtualizationCapacityCheckDiagnosticStatusUnknown] }
|
|
35882
|
+
limit: { type: integer, minimum: 0 }
|
|
35883
|
+
committed: { type: integer, minimum: 0 }
|
|
35884
|
+
pending: { type: integer, minimum: 0 }
|
|
35885
|
+
demand: { type: integer, minimum: 0 }
|
|
35886
|
+
available: { type: integer, minimum: 0 }
|
|
35887
|
+
reason: { type: string }
|
|
35888
|
+
additionalProperties: false
|
|
35889
|
+
VirtualizationCapacityNodeDiagnostic:
|
|
35890
|
+
type: object
|
|
35891
|
+
required: [node, checks]
|
|
35892
|
+
properties:
|
|
35893
|
+
node: { type: string }
|
|
35894
|
+
storage: { type: string }
|
|
35895
|
+
checks:
|
|
35896
|
+
type: array
|
|
35897
|
+
items: { $ref: "#/components/schemas/VirtualizationCapacityCheckDiagnostic" }
|
|
35898
|
+
additionalProperties: false
|
|
35899
|
+
SecretKind:
|
|
35900
|
+
type: string
|
|
35901
|
+
enum: [opaque, ssh_keypair, ssh_public_key, ssh_password]
|
|
35902
|
+
x-enum-varnames: [SecretKindOpaque, SecretKindSSHKeypair, SecretKindSSHPublicKey, SecretKindSSHPassword]
|
|
35903
|
+
SecretPurpose:
|
|
35904
|
+
type: string
|
|
35905
|
+
enum: [vm_cloud_init, vm_auth, vm_exec]
|
|
35906
|
+
x-enum-varnames: [SecretPurposeVMCloudInit, SecretPurposeVMAuth, SecretPurposeVMExec]
|
|
35907
|
+
SecretSSHPublicKey:
|
|
35908
|
+
type: object
|
|
35909
|
+
required: [authorizedKey, algorithm, fingerprint]
|
|
35910
|
+
properties:
|
|
35911
|
+
authorizedKey: { type: string, maxLength: 16384 }
|
|
35912
|
+
algorithm: { type: string }
|
|
35913
|
+
fingerprint: { type: string }
|
|
35914
|
+
additionalProperties: false
|
|
35915
|
+
SecretGenerateSSHKeyRequest:
|
|
35916
|
+
type: object
|
|
35917
|
+
required: [name, scopeType, scopeId, bindings]
|
|
35918
|
+
properties:
|
|
35919
|
+
name: { type: string, minLength: 1, maxLength: 128 }
|
|
35920
|
+
description: { type: string, maxLength: 1024 }
|
|
35921
|
+
scopeType: { $ref: "#/components/schemas/SecretScopeType" }
|
|
35922
|
+
scopeId: { type: string, minLength: 1, maxLength: 128 }
|
|
35923
|
+
bindings:
|
|
35924
|
+
type: array
|
|
35925
|
+
minItems: 1
|
|
35926
|
+
maxItems: 100
|
|
35927
|
+
items: { $ref: "#/components/schemas/SecretBinding" }
|
|
35928
|
+
additionalProperties: false
|
|
35929
|
+
VirtualMachineGuestAccessInput:
|
|
35930
|
+
type: object
|
|
35931
|
+
description: Managed first-boot public-key initialization. Requires a verified cloud-init image and excludes raw cloudInit and native sshkeys/cicustom fields. The server freezes each Secret version; private keys are never sent to the guest.
|
|
35932
|
+
required: [username, publicKeyRefs]
|
|
35933
|
+
properties:
|
|
35934
|
+
username: { type: string, pattern: "^[a-z_][a-z0-9_-]{0,31}$" }
|
|
35935
|
+
publicKeyRefs:
|
|
35936
|
+
type: array
|
|
35937
|
+
minItems: 1
|
|
35938
|
+
maxItems: 16
|
|
35939
|
+
uniqueItems: true
|
|
35940
|
+
items: { type: string, pattern: "^soha://secrets/[A-Za-z0-9._-]+(?:/versions/[1-9][0-9]*)?$" }
|
|
35941
|
+
additionalProperties: false
|
|
35942
|
+
VirtualMachineAccessBindingInput:
|
|
35943
|
+
type: object
|
|
35944
|
+
description: Metadata binding only; it does not install guest keys or alter VM configuration. Host keys must be independently verified by an authorized human before binding.
|
|
35945
|
+
required: [expectedRevision, username, port, address, credentialRef, executionClusterId, executionAgentId, trustedHostKey]
|
|
35946
|
+
properties:
|
|
35947
|
+
expectedRevision: { type: integer, minimum: 0 }
|
|
35948
|
+
username: { type: string, pattern: "^[a-z_][a-z0-9_-]{0,31}$" }
|
|
35949
|
+
port: { type: integer, minimum: 1, maximum: 65535 }
|
|
35950
|
+
address: { type: string, minLength: 1, maxLength: 253 }
|
|
35951
|
+
credentialRef: { type: string, pattern: "^soha://secrets/[A-Za-z0-9._-]+(?:/versions/[1-9][0-9]*)?$" }
|
|
35952
|
+
executionClusterId: { type: string, minLength: 1 }
|
|
35953
|
+
executionAgentId: { type: string, minLength: 1 }
|
|
35954
|
+
trustedHostKey: { type: string, minLength: 1, maxLength: 16384 }
|
|
35955
|
+
additionalProperties: false
|
|
35956
|
+
VirtualMachineAccessBinding:
|
|
35957
|
+
type: object
|
|
35958
|
+
required: [vmId, revision, providerVmId, sourceId, generation, username, port, address, credentialRef, executionClusterId, executionAgentId, hostKeyFingerprint, status]
|
|
35959
|
+
properties:
|
|
35960
|
+
vmId: { type: string }
|
|
35961
|
+
revision: { type: integer, minimum: 1 }
|
|
35962
|
+
providerVmId: { type: string }
|
|
35963
|
+
sourceId: { type: string }
|
|
35964
|
+
generation: { type: string }
|
|
35965
|
+
username: { type: string }
|
|
35966
|
+
port: { type: integer }
|
|
35967
|
+
address: { type: string }
|
|
35968
|
+
credentialRef: { type: string }
|
|
35969
|
+
executionClusterId: { type: string }
|
|
35970
|
+
executionAgentId: { type: string }
|
|
35971
|
+
hostKeyFingerprint: { type: string }
|
|
35972
|
+
status: { type: string, enum: [ready, unavailable, stale], x-enum-varnames: [VirtualMachineAccessBindingStatusReady, VirtualMachineAccessBindingStatusUnavailable, VirtualMachineAccessBindingStatusStale] }
|
|
35973
|
+
reason: { type: string }
|
|
35974
|
+
updatedAt: { type: string, format: date-time }
|
|
35975
|
+
additionalProperties: false
|
|
35976
|
+
VirtualMachineAccessBindingEnvelope:
|
|
35977
|
+
type: object
|
|
35978
|
+
required: [data]
|
|
35979
|
+
properties:
|
|
35980
|
+
data: { $ref: "#/components/schemas/VirtualMachineAccessBinding" }
|
|
35981
|
+
additionalProperties: false
|
|
35982
|
+
VirtualMachineSSHSessionInput:
|
|
35983
|
+
type: object
|
|
35984
|
+
required: [bindingRevision]
|
|
35985
|
+
properties:
|
|
35986
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
35987
|
+
cols: { type: integer, minimum: 1, maximum: 512, default: 80 }
|
|
35988
|
+
rows: { type: integer, minimum: 1, maximum: 512, default: 24 }
|
|
35989
|
+
additionalProperties: false
|
|
35990
|
+
VirtualMachineSSHSession:
|
|
35991
|
+
type: object
|
|
35992
|
+
required: [id, vmId, bindingRevision, status, expiresAt]
|
|
35993
|
+
properties:
|
|
35994
|
+
id: { type: string }
|
|
35995
|
+
vmId: { type: string }
|
|
35996
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
35997
|
+
status: { type: string, enum: [pending, active, closed, revoked, unknown], x-enum-varnames: [VirtualMachineSSHSessionStatusPending, VirtualMachineSSHSessionStatusActive, VirtualMachineSSHSessionStatusClosed, VirtualMachineSSHSessionStatusRevoked, VirtualMachineSSHSessionStatusUnknown] }
|
|
35998
|
+
expiresAt: { type: string, format: date-time }
|
|
35999
|
+
reason: { type: string }
|
|
36000
|
+
additionalProperties: false
|
|
36001
|
+
VirtualMachineSSHSessionEnvelope:
|
|
36002
|
+
type: object
|
|
36003
|
+
required: [data]
|
|
36004
|
+
properties:
|
|
36005
|
+
data: { $ref: "#/components/schemas/VirtualMachineSSHSession" }
|
|
36006
|
+
additionalProperties: false
|
|
36007
|
+
VirtualMachineSSHCommandInput:
|
|
36008
|
+
type: object
|
|
36009
|
+
required: [bindingRevision, command, idempotencyKey]
|
|
36010
|
+
properties:
|
|
36011
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
36012
|
+
command: { type: string, minLength: 1, maxLength: 16384, x-soha-sensitive: true }
|
|
36013
|
+
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
|
|
36014
|
+
timeoutSeconds: { type: integer, minimum: 1, maximum: 300, default: 60 }
|
|
36015
|
+
additionalProperties: false
|
|
36016
|
+
VirtualMachineSSHCommand:
|
|
36017
|
+
type: object
|
|
36018
|
+
required: [id, vmId, bindingRevision, status, outcome, terminal]
|
|
36019
|
+
properties:
|
|
36020
|
+
id: { type: string }
|
|
36021
|
+
vmId: { type: string }
|
|
36022
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
36023
|
+
status: { type: string }
|
|
36024
|
+
outcome: { type: string, enum: [unknown, succeeded, failed, canceled], x-enum-varnames: [VirtualMachineSSHCommandOutcomeUnknown, VirtualMachineSSHCommandOutcomeSucceeded, VirtualMachineSSHCommandOutcomeFailed, VirtualMachineSSHCommandOutcomeCanceled] }
|
|
36025
|
+
terminal: { type: boolean }
|
|
36026
|
+
exitCode: { type: integer, minimum: 0, maximum: 255, x-go-type-skip-optional-pointer: false }
|
|
36027
|
+
stdout: { type: string, maxLength: 1048576 }
|
|
36028
|
+
stderr: { type: string, maxLength: 1048576 }
|
|
36029
|
+
outputDigest: { type: string }
|
|
36030
|
+
outputTruncated: { type: boolean }
|
|
36031
|
+
finishedAt: { type: string, format: date-time }
|
|
36032
|
+
additionalProperties: false
|
|
36033
|
+
VirtualMachineSSHCommandEnvelope:
|
|
36034
|
+
type: object
|
|
36035
|
+
required: [data]
|
|
36036
|
+
properties:
|
|
36037
|
+
data: { $ref: "#/components/schemas/VirtualMachineSSHCommand" }
|
|
36038
|
+
additionalProperties: false
|
|
36039
|
+
AgentSSHCommandRequest:
|
|
36040
|
+
type: object
|
|
36041
|
+
required: [session, command, timeoutSeconds]
|
|
36042
|
+
properties:
|
|
36043
|
+
session: { $ref: "#/components/schemas/AgentSSHSessionRequest" }
|
|
36044
|
+
command: { type: string, minLength: 1, maxLength: 16384, x-soha-sensitive: true }
|
|
36045
|
+
timeoutSeconds: { type: integer, minimum: 1, maximum: 300 }
|
|
36046
|
+
additionalProperties: false
|
|
36047
|
+
AgentSSHCommandResult:
|
|
36048
|
+
type: object
|
|
36049
|
+
required: [sessionId, agentId, commandDigest, effect, stopped]
|
|
36050
|
+
properties:
|
|
36051
|
+
sessionId: { type: string }
|
|
36052
|
+
agentId: { type: string }
|
|
36053
|
+
commandDigest: { type: string }
|
|
36054
|
+
effect: { type: string, enum: [not_started, exited, unknown], x-enum-varnames: [AgentSSHCommandResultEffectNotStarted, AgentSSHCommandResultEffectExited, AgentSSHCommandResultEffectUnknown] }
|
|
36055
|
+
stopped: { type: boolean }
|
|
36056
|
+
exitCode: { type: integer, minimum: 0, maximum: 255, x-go-type-skip-optional-pointer: false }
|
|
36057
|
+
stdout: { type: string, maxLength: 1048576 }
|
|
36058
|
+
stderr: { type: string, maxLength: 1048576 }
|
|
36059
|
+
outputTruncated: { type: boolean }
|
|
36060
|
+
outputDigest: { type: string }
|
|
36061
|
+
additionalProperties: false
|
|
36062
|
+
VirtualMachineSSHFrame:
|
|
36063
|
+
type: object
|
|
36064
|
+
required: [type]
|
|
36065
|
+
properties:
|
|
36066
|
+
type: { type: string, enum: [input, resize, output, error, close], x-enum-varnames: [VirtualMachineSSHFrameTypeInput, VirtualMachineSSHFrameTypeResize, VirtualMachineSSHFrameTypeOutput, VirtualMachineSSHFrameTypeError, VirtualMachineSSHFrameTypeClose] }
|
|
36067
|
+
data: { type: string, maxLength: 87384 }
|
|
36068
|
+
dataEncoding: { type: string, enum: [utf8, base64], x-enum-varnames: [VirtualMachineSSHFrameDataEncodingUTF8, VirtualMachineSSHFrameDataEncodingBase64], description: Base64 carries exact terminal bytes including split UTF-8 sequences. Omitted means utf8 for legacy inputs. }
|
|
36069
|
+
exitCode: { type: integer, minimum: 0, maximum: 255, x-go-type-skip-optional-pointer: false }
|
|
36070
|
+
cols: { type: integer, minimum: 1, maximum: 512 }
|
|
36071
|
+
rows: { type: integer, minimum: 1, maximum: 512 }
|
|
36072
|
+
message: { type: string, maxLength: 1024 }
|
|
36073
|
+
additionalProperties: false
|
|
36074
|
+
AgentSSHSessionRequest:
|
|
36075
|
+
type: object
|
|
36076
|
+
required: [sessionId, agentId, executionClusterId, address, port, username, trustedHostKey, credentialKind, lease, controlPlaneEndpoint, expiresAt, cols, rows]
|
|
36077
|
+
properties:
|
|
36078
|
+
sessionId: { type: string }
|
|
36079
|
+
agentId: { type: string }
|
|
36080
|
+
executionClusterId: { type: string, minLength: 1 }
|
|
36081
|
+
address: { type: string }
|
|
36082
|
+
port: { type: integer, minimum: 1, maximum: 65535 }
|
|
36083
|
+
username: { type: string }
|
|
36084
|
+
trustedHostKey: { type: string, maxLength: 16384 }
|
|
36085
|
+
credentialKind: { $ref: "#/components/schemas/SecretKind" }
|
|
36086
|
+
lease: { $ref: "#/components/schemas/SecretLeaseGrant" }
|
|
36087
|
+
controlPlaneEndpoint: { type: string, format: uri }
|
|
36088
|
+
expiresAt: { type: string, format: date-time }
|
|
36089
|
+
cols: { type: integer, minimum: 1, maximum: 512 }
|
|
36090
|
+
rows: { type: integer, minimum: 1, maximum: 512 }
|
|
36091
|
+
additionalProperties: false
|
|
36092
|
+
VMSSHCredentialRedemptionInput:
|
|
36093
|
+
type: object
|
|
36094
|
+
required: [clusterId, agentId, leaseId, token]
|
|
36095
|
+
properties:
|
|
36096
|
+
clusterId: { type: string, minLength: 1 }
|
|
36097
|
+
agentId: { type: string, minLength: 1 }
|
|
36098
|
+
leaseId: { type: string, minLength: 1 }
|
|
36099
|
+
token: { type: string, minLength: 16, maxLength: 256, writeOnly: true }
|
|
36100
|
+
additionalProperties: false
|
|
36101
|
+
AgentSSHCapability:
|
|
36102
|
+
type: object
|
|
36103
|
+
required: [agentId, protocolVersion, available]
|
|
36104
|
+
properties:
|
|
36105
|
+
agentId: { type: string }
|
|
36106
|
+
protocolVersion: { type: integer, const: 1 }
|
|
36107
|
+
available: { type: boolean }
|
|
36108
|
+
commandsAvailable: { type: boolean }
|
|
36109
|
+
additionalProperties: false
|
|
33898
36110
|
VirtualizationCapacityInput:
|
|
33899
36111
|
type: object
|
|
33900
36112
|
required: [connectionId, cpu, memoryMiB, diskGiB]
|
|
33901
36113
|
properties:
|
|
36114
|
+
startAfterCreate: { type: boolean, default: true, x-go-type-skip-optional-pointer: false }
|
|
33902
36115
|
connectionId: { type: string, minLength: 1 }
|
|
33903
36116
|
cpu: { type: integer, minimum: 1, maximum: 65536, description: Dedicated CPU cores for a running VM. }
|
|
33904
36117
|
memoryMiB: { type: integer, minimum: 1, maximum: 1099511627776, description: Guest memory in MiB; configured hypervisor overhead is added by the server. }
|
|
@@ -33913,6 +36126,12 @@ components:
|
|
|
33913
36126
|
description: A read-only, expiring placement suggestion for one running VM and root disk. Missing or unsupported inventory remains unknown. Creation must independently require atomic capacity admission; this result is not a reservation or a readiness assessment.
|
|
33914
36127
|
required: [connectionId, status, reason]
|
|
33915
36128
|
properties:
|
|
36129
|
+
sourceId: { type: string }
|
|
36130
|
+
policyRevision: { type: integer, minimum: 0 }
|
|
36131
|
+
policyMode: { $ref: "#/components/schemas/VirtualizationCapacityPolicyMode" }
|
|
36132
|
+
diagnostics:
|
|
36133
|
+
type: array
|
|
36134
|
+
items: { $ref: "#/components/schemas/VirtualizationCapacityNodeDiagnostic" }
|
|
33916
36135
|
connectionId: { type: string }
|
|
33917
36136
|
provider: { type: string }
|
|
33918
36137
|
status:
|
|
@@ -33936,12 +36155,13 @@ components:
|
|
|
33936
36155
|
type: object
|
|
33937
36156
|
required: [connectionId, name]
|
|
33938
36157
|
properties:
|
|
36158
|
+
guestAccess: { $ref: "#/components/schemas/VirtualMachineGuestAccessInput" }
|
|
33939
36159
|
connectionId: { type: string, minLength: 1 }
|
|
33940
36160
|
name: { type: string, minLength: 1 }
|
|
33941
36161
|
requireCapacity:
|
|
33942
36162
|
type: boolean
|
|
33943
36163
|
default: false
|
|
33944
|
-
description: Require fresh provider capacity and reserve node CPU, memory and storage atomically with this operation. Missing inventory or unsupported placement fails closed.
|
|
36164
|
+
description: Require fresh provider capacity and reserve node CPU, memory and storage atomically with this operation. Missing inventory or unsupported placement fails closed. An enforced source policy always requires admission, including when this field is false. Unconfigured legacy sources retain the explicit opt-in behavior. Provider admission and runtime readiness remain authoritative.
|
|
33945
36165
|
architecture: { type: string }
|
|
33946
36166
|
namespace: { type: string }
|
|
33947
36167
|
node: { type: string }
|
|
@@ -33949,7 +36169,7 @@ components:
|
|
|
33949
36169
|
memoryMiB: { type: integer, minimum: 1 }
|
|
33950
36170
|
bootImageId: { type: string }
|
|
33951
36171
|
imageId: { type: string }
|
|
33952
|
-
sourceMode: { type: string }
|
|
36172
|
+
sourceMode: { type: string, description: "PVE supports template_clone, vm_clone, iso_install and cloud_image. cloud_image imports a verified catalog QCOW2 volume into this new VM; it does not create or modify a source VM." }
|
|
33953
36173
|
sourceId: { type: string }
|
|
33954
36174
|
flavorId: { type: string }
|
|
33955
36175
|
diskGiB: { type: integer, minimum: 1 }
|
|
@@ -34212,6 +36432,9 @@ components:
|
|
|
34212
36432
|
cpu: { type: integer, minimum: 0 }
|
|
34213
36433
|
memoryMiB: { type: integer, minimum: 0 }
|
|
34214
36434
|
diskGiB: { type: integer, minimum: 0 }
|
|
36435
|
+
requireCapacity:
|
|
36436
|
+
type: boolean
|
|
36437
|
+
description: Require fresh atomic capacity admission for start, reboot or resize even when cluster policy is unconfigured. False never bypasses an enforced policy. New disks require fixed slots, storage and serial identity; multiple storage pools require separate operations.
|
|
34215
36438
|
disks:
|
|
34216
36439
|
type: array
|
|
34217
36440
|
maxItems: 64
|
|
@@ -34343,8 +36566,8 @@ components:
|
|
|
34343
36566
|
architecture: { type: string }
|
|
34344
36567
|
sizeBytes: { type: integer, format: int64, minimum: 0 }
|
|
34345
36568
|
sizeGiB: { type: integer, format: int64, minimum: 0 }
|
|
34346
|
-
sourceKind: { type: string }
|
|
34347
|
-
sourceRef: { type: string }
|
|
36569
|
+
sourceKind: { type: string, description: "PVE cloud_image declares an already staged QCOW2 import volume. cloudInitSupported must be explicitly true for managed guest initialization." }
|
|
36570
|
+
sourceRef: { type: string, description: "For PVE cloud_image use storage:import/<SHA256>.qcow2 sealed with the filesystem immutable flag. The provider verifies immutability, format, digest, absence of backing files and requested root size before dispatch. Catalog creation registers metadata and does not itself upload a file." }
|
|
34348
36571
|
namespace: { type: string }
|
|
34349
36572
|
storageClass: { type: string }
|
|
34350
36573
|
url: { type: string }
|
|
@@ -34551,6 +36774,8 @@ components:
|
|
|
34551
36774
|
maxLength: 1048576
|
|
34552
36775
|
description: Sensitive bootstrap content. It is never returned by plan or audit responses.
|
|
34553
36776
|
x-soha-sensitive: true
|
|
36777
|
+
guestAccess:
|
|
36778
|
+
$ref: "#/components/schemas/VirtualMachineGuestAccessInput"
|
|
34554
36779
|
cpuCoreCount: { type: integer, minimum: 1 }
|
|
34555
36780
|
memoryBytes: { type: integer, minimum: 1 }
|
|
34556
36781
|
diskBytes: { type: integer, minimum: 1 }
|
|
@@ -34957,6 +37182,11 @@ components:
|
|
|
34957
37182
|
type: string
|
|
34958
37183
|
status:
|
|
34959
37184
|
type: string
|
|
37185
|
+
executionOwner: { type: string, enum: [native, external] }
|
|
37186
|
+
phase: { type: string }
|
|
37187
|
+
stopReason: { type: string }
|
|
37188
|
+
eventSequence: { type: integer, minimum: 0 }
|
|
37189
|
+
usageKnown: { type: boolean }
|
|
34960
37190
|
scope:
|
|
34961
37191
|
type: object
|
|
34962
37192
|
additionalProperties: true
|
|
@@ -35241,6 +37471,10 @@ components:
|
|
|
35241
37471
|
type: object
|
|
35242
37472
|
required: [transport, syncStrategy, cacheStatus, cacheReady, connectionState]
|
|
35243
37473
|
properties:
|
|
37474
|
+
actionChecks:
|
|
37475
|
+
type: array
|
|
37476
|
+
maxItems: 64
|
|
37477
|
+
items: { $ref: "#/components/schemas/KubernetesAgentActionCheck" }
|
|
35244
37478
|
transport:
|
|
35245
37479
|
type: string
|
|
35246
37480
|
syncStrategy:
|
|
@@ -35261,6 +37495,22 @@ components:
|
|
|
35261
37495
|
message:
|
|
35262
37496
|
type: string
|
|
35263
37497
|
additionalProperties: false
|
|
37498
|
+
KubernetesAgentActionCheck:
|
|
37499
|
+
type: object
|
|
37500
|
+
required: [action, implementation, configured, kubernetesRBAC]
|
|
37501
|
+
properties:
|
|
37502
|
+
action: { type: string }
|
|
37503
|
+
implementation: { type: string, enum: [supported, unsupported, unknown] }
|
|
37504
|
+
configured: { type: string, enum: [allowed, denied, unknown] }
|
|
37505
|
+
kubernetesRBAC: { type: string, enum: [allowed, denied, unknown, not_applicable] }
|
|
37506
|
+
checkedAt: { type: string, format: date-time }
|
|
37507
|
+
reasonCode: { type: string }
|
|
37508
|
+
scope: { type: string, enum: [cluster], x-enum-varnames: [KubernetesAgentActionCheckScopeCluster] }
|
|
37509
|
+
additionalProperties: false
|
|
37510
|
+
KubernetesAgentActionProfile:
|
|
37511
|
+
type: string
|
|
37512
|
+
enum: [legacy, workbench, read-only]
|
|
37513
|
+
description: Installation preset only. Legacy preserves existing permissions; selecting workbench or read-only requires regenerating and reviewing the installation manifest.
|
|
35264
37514
|
KubernetesClusterConnectionDetail:
|
|
35265
37515
|
type: object
|
|
35266
37516
|
required: [mode, credentialType, sourceType, hasInlineKubeconfig, hasToken, usesInformerCache]
|
|
@@ -35283,6 +37533,7 @@ components:
|
|
|
35283
37533
|
type: boolean
|
|
35284
37534
|
usesInformerCache:
|
|
35285
37535
|
type: boolean
|
|
37536
|
+
actionProfile: { $ref: "#/components/schemas/KubernetesAgentActionProfile" }
|
|
35286
37537
|
customResourceRules:
|
|
35287
37538
|
type: array
|
|
35288
37539
|
maxItems: 50
|
|
@@ -35324,6 +37575,7 @@ components:
|
|
|
35324
37575
|
prometheusClusterLabel: { type: string }
|
|
35325
37576
|
grafanaBaseUrl: { type: string }
|
|
35326
37577
|
prometheusTransport: { $ref: "#/components/schemas/KubernetesPrometheusTransport" }
|
|
37578
|
+
agentActionProfile: { $ref: "#/components/schemas/KubernetesAgentActionProfile" }
|
|
35327
37579
|
agentCustomResourceRules:
|
|
35328
37580
|
type: array
|
|
35329
37581
|
maxItems: 50
|
|
@@ -35511,6 +37763,18 @@ components:
|
|
|
35511
37763
|
type: string
|
|
35512
37764
|
unschedulable:
|
|
35513
37765
|
type: boolean
|
|
37766
|
+
taints:
|
|
37767
|
+
type: array
|
|
37768
|
+
nullable: true
|
|
37769
|
+
description: Current Node spec taints. Empty means none; null or absent means not reported.
|
|
37770
|
+
items:
|
|
37771
|
+
$ref: "#/components/schemas/KubernetesNodeTaint"
|
|
37772
|
+
conditions:
|
|
37773
|
+
type: array
|
|
37774
|
+
nullable: true
|
|
37775
|
+
description: Current Node conditions, independent of scheduling and drain operations.
|
|
37776
|
+
items:
|
|
37777
|
+
$ref: "#/components/schemas/KubernetesWorkloadCondition"
|
|
35514
37778
|
roles:
|
|
35515
37779
|
type: array
|
|
35516
37780
|
items:
|
|
@@ -37951,6 +40215,193 @@ components:
|
|
|
37951
40215
|
properties:
|
|
37952
40216
|
data: { $ref: "#/components/schemas/KubernetesNetworkPolicyDetail" }
|
|
37953
40217
|
additionalProperties: false
|
|
40218
|
+
KubernetesTopologyProvider:
|
|
40219
|
+
type: string
|
|
40220
|
+
enum: [kubernetes, gateway, traefik, apisix]
|
|
40221
|
+
x-enum-varnames: [KubernetesTopologyProviderKubernetes, KubernetesTopologyProviderGateway, KubernetesTopologyProviderTraefik, KubernetesTopologyProviderApisix]
|
|
40222
|
+
KubernetesTopologyResolution:
|
|
40223
|
+
type: string
|
|
40224
|
+
enum: [resolved, unresolved, not_found, not_visible, no_ready_endpoints, external, unsupported_fragment, unknown]
|
|
40225
|
+
x-enum-varnames: [KubernetesTopologyResolutionResolved, KubernetesTopologyResolutionUnresolved, KubernetesTopologyResolutionNotFound, KubernetesTopologyResolutionNotVisible, KubernetesTopologyResolutionNoReadyEndpoints, KubernetesTopologyResolutionExternal, KubernetesTopologyResolutionUnsupportedFragment, KubernetesTopologyResolutionUnknown]
|
|
40226
|
+
KubernetesTopologyProperty:
|
|
40227
|
+
type: object
|
|
40228
|
+
required: [name, value]
|
|
40229
|
+
properties:
|
|
40230
|
+
name: { type: string, maxLength: 64 }
|
|
40231
|
+
value: { type: string, maxLength: 1024 }
|
|
40232
|
+
additionalProperties: false
|
|
40233
|
+
KubernetesTopologyMatch:
|
|
40234
|
+
type: object
|
|
40235
|
+
required: [type]
|
|
40236
|
+
properties:
|
|
40237
|
+
type: { type: string, maxLength: 32 }
|
|
40238
|
+
name: { type: string, maxLength: 128 }
|
|
40239
|
+
operator: { type: string, maxLength: 32 }
|
|
40240
|
+
value: { type: string, maxLength: 1024 }
|
|
40241
|
+
additionalProperties: false
|
|
40242
|
+
KubernetesTopologyRule:
|
|
40243
|
+
type: object
|
|
40244
|
+
required: [index]
|
|
40245
|
+
properties:
|
|
40246
|
+
name: { type: string, maxLength: 253 }
|
|
40247
|
+
index: { type: integer, minimum: 0 }
|
|
40248
|
+
matchGroups:
|
|
40249
|
+
description: Groups are ORed; matches inside each group are ANDed. Opaque expressions remain a bounded summary and are marked unsupported_fragment.
|
|
40250
|
+
type: array
|
|
40251
|
+
maxItems: 64
|
|
40252
|
+
items:
|
|
40253
|
+
type: array
|
|
40254
|
+
maxItems: 64
|
|
40255
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyMatch" }
|
|
40256
|
+
matchSummary: { type: string, maxLength: 2048 }
|
|
40257
|
+
priority: { type: integer, format: int64 }
|
|
40258
|
+
tlsMode: { type: string, maxLength: 64 }
|
|
40259
|
+
additionalProperties: false
|
|
40260
|
+
KubernetesTopologyCondition:
|
|
40261
|
+
type: object
|
|
40262
|
+
required: [type, status]
|
|
40263
|
+
properties:
|
|
40264
|
+
type: { type: string, maxLength: 128 }
|
|
40265
|
+
status: { type: string, maxLength: 32 }
|
|
40266
|
+
reason: { type: string, maxLength: 128 }
|
|
40267
|
+
observedGeneration: { type: integer, format: int64 }
|
|
40268
|
+
lastTransitionTime: { type: string, format: date-time }
|
|
40269
|
+
additionalProperties: false
|
|
40270
|
+
KubernetesTopologyGraphNode:
|
|
40271
|
+
type: object
|
|
40272
|
+
required: [id, type, label, provider, resolutionState]
|
|
40273
|
+
properties:
|
|
40274
|
+
id: { type: string, minLength: 1, maxLength: 2048 }
|
|
40275
|
+
type:
|
|
40276
|
+
type: string
|
|
40277
|
+
enum: [entry, rule, processor, backend-group, service, endpoint-group, pod, external]
|
|
40278
|
+
x-enum-varnames: [KubernetesTopologyGraphNodeTypeEntry, KubernetesTopologyGraphNodeTypeRule, KubernetesTopologyGraphNodeTypeProcessor, KubernetesTopologyGraphNodeTypeBackendGroup, KubernetesTopologyGraphNodeTypeService, KubernetesTopologyGraphNodeTypeEndpointGroup, KubernetesTopologyGraphNodeTypePod, KubernetesTopologyGraphNodeTypeExternal]
|
|
40279
|
+
label: { type: string, maxLength: 1024 }
|
|
40280
|
+
provider: { $ref: "#/components/schemas/KubernetesTopologyProvider" }
|
|
40281
|
+
protocol: { type: string, maxLength: 16 }
|
|
40282
|
+
resolutionState: { $ref: "#/components/schemas/KubernetesTopologyResolution" }
|
|
40283
|
+
resource: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40284
|
+
rule: { $ref: "#/components/schemas/KubernetesTopologyRule" }
|
|
40285
|
+
generation: { type: integer, format: int64 }
|
|
40286
|
+
properties:
|
|
40287
|
+
type: array
|
|
40288
|
+
maxItems: 64
|
|
40289
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyProperty" }
|
|
40290
|
+
conditions:
|
|
40291
|
+
type: array
|
|
40292
|
+
maxItems: 64
|
|
40293
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyCondition" }
|
|
40294
|
+
additionalProperties: false
|
|
40295
|
+
KubernetesTopologyGraphEdge:
|
|
40296
|
+
type: object
|
|
40297
|
+
required: [id, source, target, relation, resolutionState]
|
|
40298
|
+
properties:
|
|
40299
|
+
id: { type: string, minLength: 1, maxLength: 2048 }
|
|
40300
|
+
source: { type: string, minLength: 1, maxLength: 2048 }
|
|
40301
|
+
target: { type: string, minLength: 1, maxLength: 2048 }
|
|
40302
|
+
relation:
|
|
40303
|
+
type: string
|
|
40304
|
+
enum: [matches, processes, forwards, weights, mirrors, resolves, selects]
|
|
40305
|
+
x-enum-varnames: [KubernetesTopologyGraphEdgeRelationMatches, KubernetesTopologyGraphEdgeRelationProcesses, KubernetesTopologyGraphEdgeRelationForwards, KubernetesTopologyGraphEdgeRelationWeights, KubernetesTopologyGraphEdgeRelationMirrors, KubernetesTopologyGraphEdgeRelationResolves, KubernetesTopologyGraphEdgeRelationSelects]
|
|
40306
|
+
resolutionState: { $ref: "#/components/schemas/KubernetesTopologyResolution" }
|
|
40307
|
+
protocol: { type: string, maxLength: 16 }
|
|
40308
|
+
port: { type: string, maxLength: 64 }
|
|
40309
|
+
weight: { type: integer, format: int64, minimum: 0 }
|
|
40310
|
+
totalWeight: { type: integer, format: int64, minimum: 0 }
|
|
40311
|
+
mirrorPercent: { type: number, minimum: 0, maximum: 100 }
|
|
40312
|
+
ruleRef: { type: string, maxLength: 2048 }
|
|
40313
|
+
sourceRef: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40314
|
+
note: { type: string, maxLength: 2048 }
|
|
40315
|
+
additionalProperties: false
|
|
40316
|
+
KubernetesTopologyCoverage:
|
|
40317
|
+
type: object
|
|
40318
|
+
required: [provider, sourceId, state]
|
|
40319
|
+
properties:
|
|
40320
|
+
provider: { $ref: "#/components/schemas/KubernetesTopologyProvider" }
|
|
40321
|
+
sourceId: { type: string, maxLength: 128 }
|
|
40322
|
+
state:
|
|
40323
|
+
type: string
|
|
40324
|
+
enum: [available, not_installed, unsupported, denied, error, partial]
|
|
40325
|
+
x-enum-varnames: [KubernetesTopologyCoverageStateAvailable, KubernetesTopologyCoverageStateNotInstalled, KubernetesTopologyCoverageStateUnsupported, KubernetesTopologyCoverageStateDenied, KubernetesTopologyCoverageStateError, KubernetesTopologyCoverageStatePartial]
|
|
40326
|
+
namespace: { type: string, maxLength: 63 }
|
|
40327
|
+
supportedKinds:
|
|
40328
|
+
type: array
|
|
40329
|
+
maxItems: 32
|
|
40330
|
+
items: { type: string, maxLength: 128 }
|
|
40331
|
+
reasonCode: { type: string, maxLength: 128 }
|
|
40332
|
+
checkedAt: { type: string, format: date-time }
|
|
40333
|
+
observedAt: { type: string, format: date-time }
|
|
40334
|
+
truncated: { type: boolean }
|
|
40335
|
+
additionalProperties: false
|
|
40336
|
+
KubernetesTopologySourceQuery:
|
|
40337
|
+
type: object
|
|
40338
|
+
required: [sourceId]
|
|
40339
|
+
properties:
|
|
40340
|
+
sourceId:
|
|
40341
|
+
type: string
|
|
40342
|
+
enum: [kubernetes.services, kubernetes.pods, kubernetes.endpointslices, kubernetes.ingresses, kubernetes.ingressclasses, gateway.gateways, gateway.gatewayclasses, gateway.httproutes, gateway.grpcroutes, gateway.tcproutes, gateway.tlsroutes, gateway.udproutes, gateway.referencegrants, traefik.ingressroutes, traefik.ingressroutetcps, traefik.ingressrouteudps, traefik.traefikservices, traefik.middlewares, traefik.middlewaretcps, apisix.apisixroutes, apisix.apisixupstreams, apisix.apisixtls]
|
|
40343
|
+
x-enum-varnames: [KubernetesTopologySourceKubernetesServices, KubernetesTopologySourceKubernetesPods, KubernetesTopologySourceKubernetesEndpointslices, KubernetesTopologySourceKubernetesIngresses, KubernetesTopologySourceKubernetesIngressclasses, KubernetesTopologySourceGatewayGateways, KubernetesTopologySourceGatewayGatewayclasses, KubernetesTopologySourceGatewayHttproutes, KubernetesTopologySourceGatewayGrpcroutes, KubernetesTopologySourceGatewayTcproutes, KubernetesTopologySourceGatewayTlsroutes, KubernetesTopologySourceGatewayUdproutes, KubernetesTopologySourceGatewayReferencegrants, KubernetesTopologySourceTraefikIngressroutes, KubernetesTopologySourceTraefikIngressroutetcps, KubernetesTopologySourceTraefikIngressrouteudps, KubernetesTopologySourceTraefikTraefikservices, KubernetesTopologySourceTraefikMiddlewares, KubernetesTopologySourceTraefikMiddlewaretcps, KubernetesTopologySourceApisixApisixroutes, KubernetesTopologySourceApisixApisixupstreams, KubernetesTopologySourceApisixApisixtls]
|
|
40344
|
+
namespace: { type: string, maxLength: 63, pattern: '^$|^[a-z0-9]([a-z0-9-]*[a-z0-9])?$' }
|
|
40345
|
+
allOf:
|
|
40346
|
+
- if:
|
|
40347
|
+
properties:
|
|
40348
|
+
sourceId: { enum: [kubernetes.ingressclasses, gateway.gatewayclasses] }
|
|
40349
|
+
required: [sourceId]
|
|
40350
|
+
then:
|
|
40351
|
+
properties:
|
|
40352
|
+
namespace: { type: string, maxLength: 0 }
|
|
40353
|
+
additionalProperties: false
|
|
40354
|
+
KubernetesTopologySnapshotRequest:
|
|
40355
|
+
type: object
|
|
40356
|
+
required: [queries]
|
|
40357
|
+
properties:
|
|
40358
|
+
queries:
|
|
40359
|
+
type: array
|
|
40360
|
+
minItems: 1
|
|
40361
|
+
maxItems: 64
|
|
40362
|
+
uniqueItems: true
|
|
40363
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceQuery" }
|
|
40364
|
+
additionalProperties: false
|
|
40365
|
+
KubernetesTopologySourceObject:
|
|
40366
|
+
type: object
|
|
40367
|
+
required: [resource, content]
|
|
40368
|
+
properties:
|
|
40369
|
+
resource: { $ref: "#/components/schemas/KubernetesResourceRef" }
|
|
40370
|
+
generation: { type: integer, format: int64 }
|
|
40371
|
+
content:
|
|
40372
|
+
type: string
|
|
40373
|
+
maxLength: 65536
|
|
40374
|
+
description: Fixed source-schema projection encoded as JSON. Unknown fields, raw annotations, Secret values, plugin configuration and credential material are removed before transport. This is not an original Kubernetes manifest.
|
|
40375
|
+
additionalProperties: false
|
|
40376
|
+
KubernetesTopologySourceResult:
|
|
40377
|
+
type: object
|
|
40378
|
+
required: [coverage, objects]
|
|
40379
|
+
properties:
|
|
40380
|
+
coverage: { $ref: "#/components/schemas/KubernetesTopologyCoverage" }
|
|
40381
|
+
objects:
|
|
40382
|
+
type: array
|
|
40383
|
+
maxItems: 200
|
|
40384
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceObject" }
|
|
40385
|
+
additionalProperties: false
|
|
40386
|
+
KubernetesTopologySnapshot:
|
|
40387
|
+
type: object
|
|
40388
|
+
required: [version, sources]
|
|
40389
|
+
properties:
|
|
40390
|
+
version: { type: string, pattern: '^v1$' }
|
|
40391
|
+
sources:
|
|
40392
|
+
type: array
|
|
40393
|
+
maxItems: 64
|
|
40394
|
+
items: { $ref: "#/components/schemas/KubernetesTopologySourceResult" }
|
|
40395
|
+
additionalProperties: false
|
|
40396
|
+
ResourceMonitoringQuality: {"type":"string","enum":["valid","partial","stale","not_configured","not_collected","unsupported","denied","error","empty"],"x-enum-varnames":["ResourceMonitoringQualityValid","ResourceMonitoringQualityPartial","ResourceMonitoringQualityStale","ResourceMonitoringQualityNotConfigured","ResourceMonitoringQualityNotCollected","ResourceMonitoringQualityUnsupported","ResourceMonitoringQualityDenied","ResourceMonitoringQualityError","ResourceMonitoringQualityEmpty"]}
|
|
40397
|
+
ResourceMonitoringViewName: {"type":"string","enum":["overview","cpu","memory","conntrack","pods"],"x-enum-varnames":["ResourceMonitoringViewOverview","ResourceMonitoringViewCPU","ResourceMonitoringViewMemory","ResourceMonitoringViewConntrack","ResourceMonitoringViewPods"]}
|
|
40398
|
+
ResourceMonitoringQuantity: {"type":"object","additionalProperties":false,"required":["cpuCores","memoryBytes","podSlots"],"properties":{"cpuCores":{"type":"number","format":"double","nullable":true},"memoryBytes":{"type":"number","format":"double","nullable":true},"podSlots":{"type":"number","format":"double","nullable":true}}}
|
|
40399
|
+
ResourceMonitoringNode: {"type":"object","additionalProperties":false,"required":["nodeRef","ready","cordoned","memoryPressure","diskPressure","pidPressure","capacity","allocatable","requests","limits","cpuLimitsComplete","memoryLimitsComplete","boundPods","pendingPods","remainingPodSlots","overflowPodSlots","quality"],"properties":{"nodeRef":{"$ref":"#/components/schemas/KubernetesResourceRef"},"internalIP":{"type":"string"},"os":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"ready":{"type":"string"},"cordoned":{"type":"boolean"},"memoryPressure":{"type":"string"},"diskPressure":{"type":"string"},"pidPressure":{"type":"string"},"capacity":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"allocatable":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"requests":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"limits":{"$ref":"#/components/schemas/ResourceMonitoringQuantity"},"cpuLimitsComplete":{"type":"boolean"},"memoryLimitsComplete":{"type":"boolean"},"boundPods":{"type":"number","format":"double","nullable":true},"pendingPods":{"type":"number","format":"double","nullable":true},"remainingPodSlots":{"type":"number","format":"double","nullable":true},"overflowPodSlots":{"type":"number","format":"double","nullable":true},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"observedAt":{"type":"string","format":"date-time"}}}
|
|
40400
|
+
ResourceMonitoringPoint: {"type":"object","additionalProperties":false,"required":["timestamp","value"],"properties":{"timestamp":{"type":"string","format":"date-time"},"value":{"type":"number","format":"double","nullable":true}}}
|
|
40401
|
+
ResourceMonitoringSeries: {"type":"object","additionalProperties":false,"required":["nodeRef","metricKey","unit","quality","source","latest","points"],"properties":{"nodeRef":{"$ref":"#/components/schemas/KubernetesResourceRef"},"metricKey":{"type":"string","maxLength":64},"unit":{"type":"string","enum":["cores","bytes","count","events/s","events","percent"],"x-enum-varnames":["ResourceMonitoringUnitCores","ResourceMonitoringUnitBytes","ResourceMonitoringUnitCount","ResourceMonitoringUnitEventsPerSecond","ResourceMonitoringUnitEvents","ResourceMonitoringUnitPercent"]},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"reasonCode":{"type":"string","maxLength":64},"source":{"type":"string"},"sampledAt":{"type":"string","format":"date-time"},"latest":{"type":"number","format":"double","nullable":true},"points":{"type":"array","maxItems":1440,"items":{"$ref":"#/components/schemas/ResourceMonitoringPoint"}}}}
|
|
40402
|
+
ResourceMonitoringPanel: {"type":"object","additionalProperties":false,"required":["key","label","unit","quality","series"],"properties":{"key":{"type":"string","maxLength":64},"label":{"type":"string"},"unit":{"type":"string"},"quality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"reasonCode":{"type":"string","maxLength":64},"estimated":{"type":"boolean"},"windowSeconds":{"type":"integer","minimum":300,"maximum":3600},"series":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/ResourceMonitoringSeries"}}}}
|
|
40403
|
+
ResourceMonitoringView: {"type":"object","additionalProperties":false,"required":["clusterId","view","from","to","stepSeconds","generatedAt","snapshotQuality","unscheduledPendingPods","nodes","panels"],"properties":{"clusterId":{"type":"string"},"view":{"$ref":"#/components/schemas/ResourceMonitoringViewName"},"node":{"type":"string"},"from":{"type":"string","format":"date-time"},"to":{"type":"string","format":"date-time"},"stepSeconds":{"type":"integer","minimum":15,"maximum":3600},"generatedAt":{"type":"string","format":"date-time"},"snapshotObservedAt":{"type":"string","format":"date-time"},"snapshotQuality":{"$ref":"#/components/schemas/ResourceMonitoringQuality"},"unscheduledPendingPods":{"type":"number","format":"double","nullable":true},"nodes":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/ResourceMonitoringNode"}},"panels":{"type":"array","maxItems":32,"items":{"$ref":"#/components/schemas/ResourceMonitoringPanel"}},"truncated":{"type":"boolean"},"nodeOptions":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/KubernetesResourceRef"}}}}
|
|
40404
|
+
ResourceMonitoringEnvelope: {"type":"object","additionalProperties":false,"required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ResourceMonitoringView"}}}
|
|
37954
40405
|
KubernetesNetworkTopologySummary:
|
|
37955
40406
|
type: object
|
|
37956
40407
|
required: [entryCount, routeCount, serviceCount, missingServiceCount, backendPodCount, pendingRouteCount]
|
|
@@ -37999,6 +40450,21 @@ components:
|
|
|
37999
40450
|
source: { type: string }
|
|
38000
40451
|
generatedAt: { type: string }
|
|
38001
40452
|
summary: { $ref: "#/components/schemas/KubernetesNetworkTopologySummary" }
|
|
40453
|
+
graphVersion: { type: string, pattern: '^v1$' }
|
|
40454
|
+
nodes:
|
|
40455
|
+
type: array
|
|
40456
|
+
maxItems: 500
|
|
40457
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyGraphNode" }
|
|
40458
|
+
edges:
|
|
40459
|
+
type: array
|
|
40460
|
+
maxItems: 1000
|
|
40461
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyGraphEdge" }
|
|
40462
|
+
coverage:
|
|
40463
|
+
type: array
|
|
40464
|
+
maxItems: 128
|
|
40465
|
+
items: { $ref: "#/components/schemas/KubernetesTopologyCoverage" }
|
|
40466
|
+
observedAt: { type: string, format: date-time }
|
|
40467
|
+
truncated: { type: boolean }
|
|
38002
40468
|
traces:
|
|
38003
40469
|
type: array
|
|
38004
40470
|
items: { $ref: "#/components/schemas/KubernetesNetworkTopologyTrace" }
|
|
@@ -41449,6 +43915,7 @@ components:
|
|
|
41449
43915
|
namespace: { type: string, minLength: 1 }
|
|
41450
43916
|
scopeMode: { $ref: "#/components/schemas/KubernetesResourceScopeMode" }
|
|
41451
43917
|
uid: { type: string }
|
|
43918
|
+
resourceVersion: { type: string }
|
|
41452
43919
|
additionalProperties: false
|
|
41453
43920
|
KubernetesResourceStreamEventType:
|
|
41454
43921
|
type: string
|
|
@@ -42235,6 +44702,19 @@ components:
|
|
|
42235
44702
|
plan: { $ref: "#/components/schemas/CapabilityPlan" }
|
|
42236
44703
|
aiClientId: { type: string }
|
|
42237
44704
|
skillId: { type: string }
|
|
44705
|
+
scopeConstraints:
|
|
44706
|
+
type: array
|
|
44707
|
+
maxItems: 20
|
|
44708
|
+
uniqueItems: true
|
|
44709
|
+
description: Immutable exact target constraints for every resolved invocation, approval replay, status read and cancellation. These narrow scope and never grant permission.
|
|
44710
|
+
items: { $ref: "#/components/schemas/CapabilityScopeConstraint" }
|
|
44711
|
+
additionalProperties: false
|
|
44712
|
+
CapabilityScopeConstraint:
|
|
44713
|
+
type: object
|
|
44714
|
+
required: [dimension, value]
|
|
44715
|
+
properties:
|
|
44716
|
+
dimension: { type: string, minLength: 1, maxLength: 64, pattern: '^[A-Za-z][A-Za-z0-9_]{0,63}$' }
|
|
44717
|
+
value: { type: string, minLength: 1, maxLength: 512 }
|
|
42238
44718
|
additionalProperties: false
|
|
42239
44719
|
CapabilityTaskRevisionInput:
|
|
42240
44720
|
description: Retained step IDs inherit their prior SecretRefs when call.secretRefs is omitted; an explicit empty object clears them. All references remain subject to current authorization.
|
|
@@ -42255,6 +44735,10 @@ components:
|
|
|
42255
44735
|
status: { type: string }
|
|
42256
44736
|
createdBy: { type: string }
|
|
42257
44737
|
plan: { $ref: "#/components/schemas/CapabilityPlan" }
|
|
44738
|
+
scopeConstraints:
|
|
44739
|
+
type: array
|
|
44740
|
+
maxItems: 20
|
|
44741
|
+
items: { $ref: "#/components/schemas/CapabilityScopeConstraint" }
|
|
42258
44742
|
nodes:
|
|
42259
44743
|
type: array
|
|
42260
44744
|
items: { $ref: "#/components/schemas/CapabilityTaskNode" }
|
|
@@ -42458,10 +44942,11 @@ components:
|
|
|
42458
44942
|
type: object
|
|
42459
44943
|
required: [targetType, targetRef]
|
|
42460
44944
|
properties:
|
|
44945
|
+
purpose: { $ref: "#/components/schemas/SecretPurpose" }
|
|
42461
44946
|
targetType:
|
|
42462
44947
|
type: string
|
|
42463
|
-
enum: [capability, project, connection]
|
|
42464
|
-
x-enum-varnames: [SecretBindingCapability, SecretBindingProject, SecretBindingConnection]
|
|
44948
|
+
enum: [capability, project, connection, vm, vm_create]
|
|
44949
|
+
x-enum-varnames: [SecretBindingCapability, SecretBindingProject, SecretBindingConnection, SecretBindingVM, SecretBindingVMCreate]
|
|
42465
44950
|
targetRef:
|
|
42466
44951
|
type: string
|
|
42467
44952
|
minLength: 1
|
|
@@ -42497,10 +44982,41 @@ components:
|
|
|
42497
44982
|
type: integer
|
|
42498
44983
|
minimum: 1
|
|
42499
44984
|
additionalProperties: false
|
|
44985
|
+
SecretReferenceUsage:
|
|
44986
|
+
type: object
|
|
44987
|
+
required: [targetId, usage, version, status]
|
|
44988
|
+
properties:
|
|
44989
|
+
targetId:
|
|
44990
|
+
type: string
|
|
44991
|
+
vmId:
|
|
44992
|
+
type: string
|
|
44993
|
+
usage:
|
|
44994
|
+
type: string
|
|
44995
|
+
description: login_binding, ssh_session or cloud_init_operation. Historical initialization does not assert that the guest still trusts this key.
|
|
44996
|
+
version:
|
|
44997
|
+
type: integer
|
|
44998
|
+
minimum: 1
|
|
44999
|
+
bindingRevision:
|
|
45000
|
+
type: integer
|
|
45001
|
+
minimum: 1
|
|
45002
|
+
status:
|
|
45003
|
+
type: string
|
|
45004
|
+
additionalProperties: false
|
|
45005
|
+
SecretReferenceUsageListEnvelope:
|
|
45006
|
+
type: object
|
|
45007
|
+
required: [items]
|
|
45008
|
+
properties:
|
|
45009
|
+
items:
|
|
45010
|
+
type: array
|
|
45011
|
+
items:
|
|
45012
|
+
$ref: "#/components/schemas/SecretReferenceUsage"
|
|
45013
|
+
additionalProperties: false
|
|
42500
45014
|
SecretMetadata:
|
|
42501
45015
|
type: object
|
|
42502
45016
|
required: [id, name, scopeType, scopeId, status, currentVersion, bindings, createdBy, createdAt, updatedAt]
|
|
42503
45017
|
properties:
|
|
45018
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
45019
|
+
publicKey: { $ref: "#/components/schemas/SecretSSHPublicKey" }
|
|
42504
45020
|
id:
|
|
42505
45021
|
type: string
|
|
42506
45022
|
name:
|
|
@@ -42541,6 +45057,8 @@ components:
|
|
|
42541
45057
|
else:
|
|
42542
45058
|
required: [vaultKv2]
|
|
42543
45059
|
properties:
|
|
45060
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
45061
|
+
sshPassphrase: { type: string, maxLength: 4096, writeOnly: true, x-soha-sensitive: true }
|
|
42544
45062
|
name:
|
|
42545
45063
|
type: string
|
|
42546
45064
|
minLength: 1
|
|
@@ -42597,6 +45115,7 @@ components:
|
|
|
42597
45115
|
else:
|
|
42598
45116
|
required: [vaultKv2]
|
|
42599
45117
|
properties:
|
|
45118
|
+
sshPassphrase: { type: string, maxLength: 4096, writeOnly: true, x-soha-sensitive: true }
|
|
42600
45119
|
value:
|
|
42601
45120
|
type: string
|
|
42602
45121
|
minLength: 1
|
|
@@ -42609,6 +45128,8 @@ components:
|
|
|
42609
45128
|
type: object
|
|
42610
45129
|
required: [secretId, version, status, createdBy, createdAt]
|
|
42611
45130
|
properties:
|
|
45131
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
45132
|
+
publicKey: { $ref: "#/components/schemas/SecretSSHPublicKey" }
|
|
42612
45133
|
secretId:
|
|
42613
45134
|
type: string
|
|
42614
45135
|
version:
|
|
@@ -43192,6 +45713,7 @@ components:
|
|
|
43192
45713
|
rateLimitProfileId:
|
|
43193
45714
|
type: string
|
|
43194
45715
|
metadata:
|
|
45716
|
+
description: Optional contextWindowTokens declares this route model window as a positive integer token count. Missing or invalid values mean unknown capacity; model names are never used to guess it.
|
|
43195
45717
|
type: object
|
|
43196
45718
|
additionalProperties: true
|
|
43197
45719
|
createdAt:
|
|
@@ -43246,6 +45768,7 @@ components:
|
|
|
43246
45768
|
rateLimitProfileId:
|
|
43247
45769
|
type: string
|
|
43248
45770
|
metadata:
|
|
45771
|
+
description: Optional contextWindowTokens declares this route model window as a positive integer token count. Missing or invalid values mean unknown capacity; model names are never used to guess it.
|
|
43249
45772
|
type: object
|
|
43250
45773
|
additionalProperties: true
|
|
43251
45774
|
additionalProperties: false
|