@opensoha/contracts 0.1.22 → 0.1.24
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/permission-catalog.json +32 -1
- package/auth/token-claims.schema.json +5 -0
- package/compat/consumer-revisions.json +4 -3
- 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/KubernetesResourceUpdatePlanRequest/invalid/missing-required.json +1 -0
- package/fixtures/openapi/KubernetesResourceYaml/invalid/missing-required.json +1 -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/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/personal_environment_test.go +25 -0
- package/gen/go/sohaapi/types.go +2679 -240
- package/gen/go/sohaapi/types_test.go +30 -30
- package/gen/go/sohaapi/vm_disk_test.go +21 -0
- package/gen/ts/sohaapi/index.ts +4150 -169
- 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 +22230 -15693
- package/openapi/soha-api.yaml +2495 -12
- package/openapi/spec_generated.go +3 -3
- package/package.json +19 -3
- /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.24
|
|
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]
|
|
@@ -7544,6 +8398,40 @@ paths:
|
|
|
7544
8398
|
$ref: "#/components/responses/Error"
|
|
7545
8399
|
"503":
|
|
7546
8400
|
$ref: "#/components/responses/Error"
|
|
8401
|
+
post:
|
|
8402
|
+
tags:
|
|
8403
|
+
- Platform
|
|
8404
|
+
operationId: createKubernetesNamespace
|
|
8405
|
+
x-soha-permissions:
|
|
8406
|
+
mode: all
|
|
8407
|
+
keys:
|
|
8408
|
+
- platform.namespaces.create
|
|
8409
|
+
x-soha-implementation-status: implemented
|
|
8410
|
+
parameters:
|
|
8411
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
8412
|
+
requestBody:
|
|
8413
|
+
required: true
|
|
8414
|
+
content:
|
|
8415
|
+
application/json:
|
|
8416
|
+
schema:
|
|
8417
|
+
$ref: "#/components/schemas/KubernetesNamespaceCreateInput"
|
|
8418
|
+
responses:
|
|
8419
|
+
"201":
|
|
8420
|
+
description: Kubernetes operation result.
|
|
8421
|
+
content:
|
|
8422
|
+
application/json:
|
|
8423
|
+
schema:
|
|
8424
|
+
$ref: "#/components/schemas/KubernetesNamespaceEnvelope"
|
|
8425
|
+
"400":
|
|
8426
|
+
$ref: "#/components/responses/Error"
|
|
8427
|
+
"403":
|
|
8428
|
+
$ref: "#/components/responses/Error"
|
|
8429
|
+
"404":
|
|
8430
|
+
$ref: "#/components/responses/Error"
|
|
8431
|
+
"409":
|
|
8432
|
+
$ref: "#/components/responses/Error"
|
|
8433
|
+
"503":
|
|
8434
|
+
$ref: "#/components/responses/Error"
|
|
7547
8435
|
/clusters/{clusterID}/infrastructure/nodes:
|
|
7548
8436
|
get:
|
|
7549
8437
|
tags: [Platform]
|
|
@@ -9548,6 +10436,39 @@ paths:
|
|
|
9548
10436
|
"403": { $ref: "#/components/responses/Error" }
|
|
9549
10437
|
"404": { $ref: "#/components/responses/Error" }
|
|
9550
10438
|
"503": { $ref: "#/components/responses/Error" }
|
|
10439
|
+
/clusters/{clusterID}/extensions/crds/{crdName}:
|
|
10440
|
+
delete:
|
|
10441
|
+
tags: [Platform]
|
|
10442
|
+
operationId: deleteKubernetesCustomResourceDefinition
|
|
10443
|
+
x-soha-permissions: { mode: all, keys: [platform.extensions.crds.delete] }
|
|
10444
|
+
x-soha-implementation-status: implemented
|
|
10445
|
+
description: Delete one cluster-scoped CRD definition and all of its custom resource instances. This does not uninstall its operator or Helm release. UID and resourceVersion preconditions protect against replacement; finalizers may delay removal.
|
|
10446
|
+
parameters:
|
|
10447
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
10448
|
+
- $ref: "#/components/parameters/KubernetesCRDName"
|
|
10449
|
+
- name: expectedUid
|
|
10450
|
+
in: query
|
|
10451
|
+
required: true
|
|
10452
|
+
description: UID observed in the CRD catalog. A same-name replacement is rejected.
|
|
10453
|
+
schema: { type: string, minLength: 1, maxLength: 128 }
|
|
10454
|
+
responses:
|
|
10455
|
+
"204": { description: Deletion requested. Refresh the catalog to confirm disappearance; finalizers may still be pending. }
|
|
10456
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
10457
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
10458
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
10459
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
10460
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
10461
|
+
/clusters/{clusterID}/extensions/crds/{crdName}/access:
|
|
10462
|
+
get:
|
|
10463
|
+
tags: [Platform]
|
|
10464
|
+
operationId: getKubernetesCustomResourceAccess
|
|
10465
|
+
x-soha-permissions: { mode: all, keys: [platform.extensions.view] }
|
|
10466
|
+
parameters: [{ $ref: "#/components/parameters/ClusterID" }, { $ref: "#/components/parameters/KubernetesCRDName" }, { $ref: "#/components/parameters/KubernetesNamespaceQuery" }]
|
|
10467
|
+
responses:
|
|
10468
|
+
"200": { description: Soha and runtime permissions for this custom resource collection., content: { application/json: { schema: { $ref: "#/components/schemas/KubernetesCustomResourceAccessEnvelope" } } } }
|
|
10469
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
10470
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
10471
|
+
"503": { $ref: "#/components/responses/Error" }
|
|
9551
10472
|
/clusters/{clusterID}/extensions/crds/{crdName}/resources:
|
|
9552
10473
|
get:
|
|
9553
10474
|
tags: [Platform]
|
|
@@ -10193,6 +11114,65 @@ paths:
|
|
|
10193
11114
|
$ref: "#/components/responses/Error"
|
|
10194
11115
|
"409":
|
|
10195
11116
|
$ref: "#/components/responses/Error"
|
|
11117
|
+
/clusters/{clusterID}/agent-upgrade:
|
|
11118
|
+
get:
|
|
11119
|
+
tags: [Platform]
|
|
11120
|
+
operationId: getClusterAgentUpgradeStatus
|
|
11121
|
+
description: Read the running Agent version and standard Agent Deployment rollout through the existing cluster connection.
|
|
11122
|
+
x-soha-permissions:
|
|
11123
|
+
mode: all
|
|
11124
|
+
keys: [platform.clusters.view]
|
|
11125
|
+
parameters:
|
|
11126
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
11127
|
+
responses:
|
|
11128
|
+
"200":
|
|
11129
|
+
description: Agent version, recommended version bundled with this server, and rollout status. The recommendation is not a live latest-release lookup.
|
|
11130
|
+
content:
|
|
11131
|
+
application/json:
|
|
11132
|
+
schema:
|
|
11133
|
+
$ref: "#/components/schemas/ClusterAgentUpgradeStatusEnvelope"
|
|
11134
|
+
"400":
|
|
11135
|
+
$ref: "#/components/responses/Error"
|
|
11136
|
+
"403":
|
|
11137
|
+
$ref: "#/components/responses/Error"
|
|
11138
|
+
"404":
|
|
11139
|
+
$ref: "#/components/responses/Error"
|
|
11140
|
+
"409":
|
|
11141
|
+
$ref: "#/components/responses/Error"
|
|
11142
|
+
"503":
|
|
11143
|
+
$ref: "#/components/responses/Error"
|
|
11144
|
+
post:
|
|
11145
|
+
tags: [Platform]
|
|
11146
|
+
operationId: upgradeClusterAgent
|
|
11147
|
+
description: Update only the standard Agent container to an explicit official release version using the Agent connection. Kubernetes owns the rollout; HTTP 202 means the image update was accepted, not that rollout completed. Non-direct resource owners must use their owning delivery tool.
|
|
11148
|
+
x-soha-permissions:
|
|
11149
|
+
mode: all
|
|
11150
|
+
keys: [platform.clusters.update]
|
|
11151
|
+
parameters:
|
|
11152
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
11153
|
+
requestBody:
|
|
11154
|
+
required: true
|
|
11155
|
+
content:
|
|
11156
|
+
application/json:
|
|
11157
|
+
schema:
|
|
11158
|
+
$ref: "#/components/schemas/ClusterAgentUpgradeInput"
|
|
11159
|
+
responses:
|
|
11160
|
+
"202":
|
|
11161
|
+
description: Image update accepted. Read upgrade status until the target version reconnects and rollout is healthy.
|
|
11162
|
+
content:
|
|
11163
|
+
application/json:
|
|
11164
|
+
schema:
|
|
11165
|
+
$ref: "#/components/schemas/ClusterAgentUpgradeResultEnvelope"
|
|
11166
|
+
"400":
|
|
11167
|
+
$ref: "#/components/responses/Error"
|
|
11168
|
+
"403":
|
|
11169
|
+
$ref: "#/components/responses/Error"
|
|
11170
|
+
"404":
|
|
11171
|
+
$ref: "#/components/responses/Error"
|
|
11172
|
+
"409":
|
|
11173
|
+
$ref: "#/components/responses/Error"
|
|
11174
|
+
"503":
|
|
11175
|
+
$ref: "#/components/responses/Error"
|
|
10196
11176
|
/kubernetes/agent-installations/{installTicket}/manifest.yaml:
|
|
10197
11177
|
get:
|
|
10198
11178
|
tags: [Platform]
|
|
@@ -11118,6 +12098,32 @@ paths:
|
|
|
11118
12098
|
$ref: "#/components/responses/Error"
|
|
11119
12099
|
"404":
|
|
11120
12100
|
$ref: "#/components/responses/Error"
|
|
12101
|
+
/secrets/{secretID}/references:
|
|
12102
|
+
get:
|
|
12103
|
+
tags: [Secrets]
|
|
12104
|
+
operationId: listSecretReferences
|
|
12105
|
+
x-soha-implementation-status: implemented
|
|
12106
|
+
security:
|
|
12107
|
+
- bearerAuth: []
|
|
12108
|
+
parameters:
|
|
12109
|
+
- name: secretID
|
|
12110
|
+
in: path
|
|
12111
|
+
required: true
|
|
12112
|
+
schema:
|
|
12113
|
+
type: string
|
|
12114
|
+
responses:
|
|
12115
|
+
"200":
|
|
12116
|
+
description: Visible VM login bindings and initialization operations using fixed secret versions; no secret values.
|
|
12117
|
+
content:
|
|
12118
|
+
application/json:
|
|
12119
|
+
schema:
|
|
12120
|
+
$ref: "#/components/schemas/SecretReferenceUsageListEnvelope"
|
|
12121
|
+
"401":
|
|
12122
|
+
$ref: "#/components/responses/Error"
|
|
12123
|
+
"403":
|
|
12124
|
+
$ref: "#/components/responses/Error"
|
|
12125
|
+
"404":
|
|
12126
|
+
$ref: "#/components/responses/Error"
|
|
11121
12127
|
/secrets/{secretID}/versions:
|
|
11122
12128
|
get:
|
|
11123
12129
|
tags: [Secrets]
|
|
@@ -17740,6 +18746,141 @@ paths:
|
|
|
17740
18746
|
schema: { $ref: "#/components/schemas/OperationStatus" }
|
|
17741
18747
|
"403": { $ref: "#/components/responses/Error" }
|
|
17742
18748
|
"404": { $ref: "#/components/responses/Error" }
|
|
18749
|
+
/network-access/proxy-instances:
|
|
18750
|
+
get:
|
|
18751
|
+
tags: [Network Access]
|
|
18752
|
+
operationId: listNetworkProxyInstances
|
|
18753
|
+
x-soha-permissions:
|
|
18754
|
+
mode: all
|
|
18755
|
+
keys: [network_access.proxy_instances.view]
|
|
18756
|
+
parameters:
|
|
18757
|
+
- { name: search, in: query, schema: { type: string, maxLength: 200 } }
|
|
18758
|
+
- { name: engine, in: query, schema: { $ref: "#/components/schemas/NetworkProxyEngine" } }
|
|
18759
|
+
- { name: limit, in: query, schema: { type: integer, minimum: 1, maximum: 200, default: 100 } }
|
|
18760
|
+
responses:
|
|
18761
|
+
"200":
|
|
18762
|
+
description: Registered server proxy instances and observed state.
|
|
18763
|
+
content:
|
|
18764
|
+
application/json:
|
|
18765
|
+
schema: { $ref: "#/components/schemas/NetworkProxyInstanceListEnvelope" }
|
|
18766
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18767
|
+
post:
|
|
18768
|
+
tags: [Network Access]
|
|
18769
|
+
operationId: createNetworkProxyInstance
|
|
18770
|
+
x-soha-permissions:
|
|
18771
|
+
mode: all
|
|
18772
|
+
keys: [network_access.proxy_instances.create]
|
|
18773
|
+
requestBody:
|
|
18774
|
+
required: true
|
|
18775
|
+
content:
|
|
18776
|
+
application/json:
|
|
18777
|
+
schema: { $ref: "#/components/schemas/NetworkProxyInstanceInput" }
|
|
18778
|
+
responses:
|
|
18779
|
+
"201":
|
|
18780
|
+
description: Created proxy instance. A separate one-time proxy runtime enrollment is required before it can report state.
|
|
18781
|
+
content:
|
|
18782
|
+
application/json:
|
|
18783
|
+
schema: { $ref: "#/components/schemas/NetworkProxyInstanceEnvelope" }
|
|
18784
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
18785
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18786
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
18787
|
+
/network-access/proxy-instances/{instanceID}:
|
|
18788
|
+
get:
|
|
18789
|
+
tags: [Network Access]
|
|
18790
|
+
operationId: getNetworkProxyInstance
|
|
18791
|
+
x-soha-permissions:
|
|
18792
|
+
mode: all
|
|
18793
|
+
keys: [network_access.proxy_instances.view]
|
|
18794
|
+
parameters:
|
|
18795
|
+
- { name: instanceID, in: path, required: true, schema: { type: string, minLength: 1, maxLength: 128 } }
|
|
18796
|
+
responses:
|
|
18797
|
+
"200":
|
|
18798
|
+
description: Proxy instance metadata. Configuration contents and controller credentials are excluded.
|
|
18799
|
+
content:
|
|
18800
|
+
application/json:
|
|
18801
|
+
schema: { $ref: "#/components/schemas/NetworkProxyInstanceEnvelope" }
|
|
18802
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18803
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
18804
|
+
/network-access/proxy-instances/{instanceID}/configuration:
|
|
18805
|
+
put:
|
|
18806
|
+
tags: [Network Access]
|
|
18807
|
+
operationId: updateNetworkProxyConfiguration
|
|
18808
|
+
x-soha-permissions:
|
|
18809
|
+
mode: all
|
|
18810
|
+
keys: [network_access.proxy_instances.update]
|
|
18811
|
+
parameters:
|
|
18812
|
+
- { name: instanceID, in: path, required: true, schema: { type: string, minLength: 1, maxLength: 128 } }
|
|
18813
|
+
requestBody:
|
|
18814
|
+
required: true
|
|
18815
|
+
content:
|
|
18816
|
+
application/json:
|
|
18817
|
+
schema: { $ref: "#/components/schemas/NetworkProxyConfigurationInput" }
|
|
18818
|
+
responses:
|
|
18819
|
+
"200":
|
|
18820
|
+
description: Desired revision saved; runtime application is asynchronous. Configuration contents are not returned.
|
|
18821
|
+
content:
|
|
18822
|
+
application/json:
|
|
18823
|
+
schema: { $ref: "#/components/schemas/NetworkProxyInstanceEnvelope" }
|
|
18824
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
18825
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18826
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
18827
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
18828
|
+
/network-access/proxy-instances/{instanceID}/traffic:
|
|
18829
|
+
get:
|
|
18830
|
+
tags: [Network Access]
|
|
18831
|
+
operationId: getNetworkProxyTraffic
|
|
18832
|
+
x-soha-permissions:
|
|
18833
|
+
mode: all
|
|
18834
|
+
keys: [network_access.proxy_instances.view]
|
|
18835
|
+
parameters:
|
|
18836
|
+
- { name: instanceID, in: path, required: true, schema: { type: string, minLength: 1, maxLength: 128 } }
|
|
18837
|
+
- { name: from, in: query, schema: { type: string, format: date-time } }
|
|
18838
|
+
- { name: to, in: query, schema: { type: string, format: date-time } }
|
|
18839
|
+
responses:
|
|
18840
|
+
"200":
|
|
18841
|
+
description: Bounded samples; speed is derived from adjacent cumulative counters within one runtime uptime epoch.
|
|
18842
|
+
content:
|
|
18843
|
+
application/json:
|
|
18844
|
+
schema: { $ref: "#/components/schemas/NetworkProxyTrafficEnvelope" }
|
|
18845
|
+
"400": { $ref: "#/components/responses/Error" }
|
|
18846
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18847
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
18848
|
+
/network-access/proxy-instances/{instanceID}/connections:
|
|
18849
|
+
get:
|
|
18850
|
+
tags: [Network Access]
|
|
18851
|
+
operationId: getNetworkProxyConnections
|
|
18852
|
+
x-soha-permissions:
|
|
18853
|
+
mode: all
|
|
18854
|
+
keys: [network_access.proxy_connections.view]
|
|
18855
|
+
parameters:
|
|
18856
|
+
- { name: instanceID, in: path, required: true, schema: { type: string, minLength: 1, maxLength: 128 } }
|
|
18857
|
+
responses:
|
|
18858
|
+
"200":
|
|
18859
|
+
description: Latest short-lived connection snapshot, or an explicit unsupported/unavailable state.
|
|
18860
|
+
content:
|
|
18861
|
+
application/json:
|
|
18862
|
+
schema: { $ref: "#/components/schemas/NetworkProxyConnectionsEnvelope" }
|
|
18863
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18864
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
18865
|
+
/network-access/proxy-instances/{instanceID}/connections/{connectionID}/close:
|
|
18866
|
+
post:
|
|
18867
|
+
tags: [Network Access]
|
|
18868
|
+
operationId: closeNetworkProxyConnection
|
|
18869
|
+
x-soha-permissions:
|
|
18870
|
+
mode: all
|
|
18871
|
+
keys: [network_access.proxy_connections.close]
|
|
18872
|
+
parameters:
|
|
18873
|
+
- { name: instanceID, in: path, required: true, schema: { type: string, minLength: 1, maxLength: 128 } }
|
|
18874
|
+
- { name: connectionID, in: path, required: true, schema: { type: string, minLength: 1, maxLength: 128 } }
|
|
18875
|
+
responses:
|
|
18876
|
+
"202":
|
|
18877
|
+
description: Expiring close command queued for the enrolled runtime. The action is audited.
|
|
18878
|
+
content:
|
|
18879
|
+
application/json:
|
|
18880
|
+
schema: { $ref: "#/components/schemas/NetworkProxyCloseCommandEnvelope" }
|
|
18881
|
+
"403": { $ref: "#/components/responses/Error" }
|
|
18882
|
+
"404": { $ref: "#/components/responses/Error" }
|
|
18883
|
+
"409": { $ref: "#/components/responses/Error" }
|
|
17743
18884
|
/network-access/connection-options:
|
|
17744
18885
|
get:
|
|
17745
18886
|
tags: [Network Access]
|
|
@@ -18458,6 +19599,434 @@ paths:
|
|
|
18458
19599
|
"400": { $ref: "#/components/responses/Error" }
|
|
18459
19600
|
"403": { $ref: "#/components/responses/Error" }
|
|
18460
19601
|
"404": { $ref: "#/components/responses/Error" }
|
|
19602
|
+
/clusters/{clusterID}/namespaces/{namespaceName}:
|
|
19603
|
+
put:
|
|
19604
|
+
tags:
|
|
19605
|
+
- Platform
|
|
19606
|
+
operationId: updateKubernetesNamespace
|
|
19607
|
+
x-soha-permissions:
|
|
19608
|
+
mode: all
|
|
19609
|
+
keys:
|
|
19610
|
+
- platform.namespaces.update
|
|
19611
|
+
x-soha-implementation-status: implemented
|
|
19612
|
+
parameters:
|
|
19613
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19614
|
+
- &a1
|
|
19615
|
+
name: namespaceName
|
|
19616
|
+
in: path
|
|
19617
|
+
required: true
|
|
19618
|
+
schema:
|
|
19619
|
+
type: string
|
|
19620
|
+
minLength: 1
|
|
19621
|
+
requestBody:
|
|
19622
|
+
required: true
|
|
19623
|
+
content:
|
|
19624
|
+
application/json:
|
|
19625
|
+
schema:
|
|
19626
|
+
$ref: "#/components/schemas/KubernetesNamespaceInput"
|
|
19627
|
+
responses:
|
|
19628
|
+
"200":
|
|
19629
|
+
description: Kubernetes operation result.
|
|
19630
|
+
content:
|
|
19631
|
+
application/json:
|
|
19632
|
+
schema:
|
|
19633
|
+
$ref: "#/components/schemas/KubernetesNamespaceEnvelope"
|
|
19634
|
+
"400":
|
|
19635
|
+
$ref: "#/components/responses/Error"
|
|
19636
|
+
"403":
|
|
19637
|
+
$ref: "#/components/responses/Error"
|
|
19638
|
+
"404":
|
|
19639
|
+
$ref: "#/components/responses/Error"
|
|
19640
|
+
"409":
|
|
19641
|
+
$ref: "#/components/responses/Error"
|
|
19642
|
+
"503":
|
|
19643
|
+
$ref: "#/components/responses/Error"
|
|
19644
|
+
delete:
|
|
19645
|
+
tags:
|
|
19646
|
+
- Platform
|
|
19647
|
+
operationId: deleteKubernetesNamespace
|
|
19648
|
+
x-soha-permissions:
|
|
19649
|
+
mode: all
|
|
19650
|
+
keys:
|
|
19651
|
+
- platform.namespaces.delete
|
|
19652
|
+
x-soha-implementation-status: implemented
|
|
19653
|
+
parameters:
|
|
19654
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19655
|
+
- *a1
|
|
19656
|
+
responses:
|
|
19657
|
+
"204":
|
|
19658
|
+
description: Operation completed.
|
|
19659
|
+
"400":
|
|
19660
|
+
$ref: "#/components/responses/Error"
|
|
19661
|
+
"403":
|
|
19662
|
+
$ref: "#/components/responses/Error"
|
|
19663
|
+
"404":
|
|
19664
|
+
$ref: "#/components/responses/Error"
|
|
19665
|
+
"409":
|
|
19666
|
+
$ref: "#/components/responses/Error"
|
|
19667
|
+
"503":
|
|
19668
|
+
$ref: "#/components/responses/Error"
|
|
19669
|
+
/clusters/{clusterID}/infrastructure/nodes/{nodeName}:
|
|
19670
|
+
put:
|
|
19671
|
+
tags:
|
|
19672
|
+
- Platform
|
|
19673
|
+
operationId: updateKubernetesNode
|
|
19674
|
+
x-soha-permissions:
|
|
19675
|
+
mode: all
|
|
19676
|
+
keys:
|
|
19677
|
+
- platform.nodes.update
|
|
19678
|
+
x-soha-implementation-status: implemented
|
|
19679
|
+
parameters:
|
|
19680
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19681
|
+
- $ref: "#/components/parameters/KubernetesNodeName"
|
|
19682
|
+
requestBody:
|
|
19683
|
+
required: true
|
|
19684
|
+
content:
|
|
19685
|
+
application/json:
|
|
19686
|
+
schema:
|
|
19687
|
+
$ref: "#/components/schemas/KubernetesNodeUpdateInput"
|
|
19688
|
+
responses:
|
|
19689
|
+
"200":
|
|
19690
|
+
description: Kubernetes operation result.
|
|
19691
|
+
content:
|
|
19692
|
+
application/json:
|
|
19693
|
+
schema:
|
|
19694
|
+
$ref: "#/components/schemas/KubernetesNodeDetailEnvelope"
|
|
19695
|
+
"400":
|
|
19696
|
+
$ref: "#/components/responses/Error"
|
|
19697
|
+
"403":
|
|
19698
|
+
$ref: "#/components/responses/Error"
|
|
19699
|
+
"404":
|
|
19700
|
+
$ref: "#/components/responses/Error"
|
|
19701
|
+
"409":
|
|
19702
|
+
$ref: "#/components/responses/Error"
|
|
19703
|
+
"503":
|
|
19704
|
+
$ref: "#/components/responses/Error"
|
|
19705
|
+
delete:
|
|
19706
|
+
tags:
|
|
19707
|
+
- Platform
|
|
19708
|
+
operationId: deleteKubernetesNode
|
|
19709
|
+
x-soha-permissions:
|
|
19710
|
+
mode: all
|
|
19711
|
+
keys:
|
|
19712
|
+
- platform.nodes.delete
|
|
19713
|
+
x-soha-implementation-status: implemented
|
|
19714
|
+
parameters:
|
|
19715
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19716
|
+
- $ref: "#/components/parameters/KubernetesNodeName"
|
|
19717
|
+
responses:
|
|
19718
|
+
"204":
|
|
19719
|
+
description: Operation completed.
|
|
19720
|
+
"400":
|
|
19721
|
+
$ref: "#/components/responses/Error"
|
|
19722
|
+
"403":
|
|
19723
|
+
$ref: "#/components/responses/Error"
|
|
19724
|
+
"404":
|
|
19725
|
+
$ref: "#/components/responses/Error"
|
|
19726
|
+
"409":
|
|
19727
|
+
$ref: "#/components/responses/Error"
|
|
19728
|
+
"503":
|
|
19729
|
+
$ref: "#/components/responses/Error"
|
|
19730
|
+
/clusters/{clusterID}/infrastructure/nodes/{nodeName}/schedulability:
|
|
19731
|
+
put:
|
|
19732
|
+
tags:
|
|
19733
|
+
- Platform
|
|
19734
|
+
operationId: setKubernetesNodeSchedulability
|
|
19735
|
+
x-soha-permissions:
|
|
19736
|
+
mode: all
|
|
19737
|
+
keys:
|
|
19738
|
+
- platform.nodes.update
|
|
19739
|
+
x-soha-implementation-status: implemented
|
|
19740
|
+
parameters:
|
|
19741
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19742
|
+
- $ref: "#/components/parameters/KubernetesNodeName"
|
|
19743
|
+
requestBody:
|
|
19744
|
+
required: true
|
|
19745
|
+
content:
|
|
19746
|
+
application/json:
|
|
19747
|
+
schema:
|
|
19748
|
+
$ref: "#/components/schemas/KubernetesNodeSchedulabilityInput"
|
|
19749
|
+
responses:
|
|
19750
|
+
"204":
|
|
19751
|
+
description: Operation completed.
|
|
19752
|
+
"400":
|
|
19753
|
+
$ref: "#/components/responses/Error"
|
|
19754
|
+
"403":
|
|
19755
|
+
$ref: "#/components/responses/Error"
|
|
19756
|
+
"404":
|
|
19757
|
+
$ref: "#/components/responses/Error"
|
|
19758
|
+
"409":
|
|
19759
|
+
$ref: "#/components/responses/Error"
|
|
19760
|
+
"503":
|
|
19761
|
+
$ref: "#/components/responses/Error"
|
|
19762
|
+
/clusters/{clusterID}/infrastructure/nodes/{nodeName}/drain:
|
|
19763
|
+
post:
|
|
19764
|
+
tags:
|
|
19765
|
+
- Platform
|
|
19766
|
+
operationId: drainKubernetesNode
|
|
19767
|
+
x-soha-permissions:
|
|
19768
|
+
mode: all
|
|
19769
|
+
keys:
|
|
19770
|
+
- platform.nodes.drain
|
|
19771
|
+
x-soha-implementation-status: implemented
|
|
19772
|
+
parameters:
|
|
19773
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19774
|
+
- $ref: "#/components/parameters/KubernetesNodeName"
|
|
19775
|
+
requestBody:
|
|
19776
|
+
required: true
|
|
19777
|
+
content:
|
|
19778
|
+
application/json:
|
|
19779
|
+
schema:
|
|
19780
|
+
$ref: "#/components/schemas/KubernetesNodeDrainInput"
|
|
19781
|
+
responses:
|
|
19782
|
+
"204":
|
|
19783
|
+
description: Operation completed.
|
|
19784
|
+
"400":
|
|
19785
|
+
$ref: "#/components/responses/Error"
|
|
19786
|
+
"403":
|
|
19787
|
+
$ref: "#/components/responses/Error"
|
|
19788
|
+
"404":
|
|
19789
|
+
$ref: "#/components/responses/Error"
|
|
19790
|
+
"409":
|
|
19791
|
+
$ref: "#/components/responses/Error"
|
|
19792
|
+
"503":
|
|
19793
|
+
$ref: "#/components/responses/Error"
|
|
19794
|
+
/clusters/{clusterID}/infrastructure/nodes/{nodeName}/yaml:
|
|
19795
|
+
get:
|
|
19796
|
+
tags:
|
|
19797
|
+
- Platform
|
|
19798
|
+
operationId: getKubernetesNodeYaml
|
|
19799
|
+
x-soha-permissions:
|
|
19800
|
+
mode: all
|
|
19801
|
+
keys:
|
|
19802
|
+
- platform.nodes.view
|
|
19803
|
+
x-soha-implementation-status: implemented
|
|
19804
|
+
parameters:
|
|
19805
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19806
|
+
- $ref: "#/components/parameters/KubernetesNodeName"
|
|
19807
|
+
responses:
|
|
19808
|
+
"200":
|
|
19809
|
+
description: Kubernetes operation result.
|
|
19810
|
+
content:
|
|
19811
|
+
application/json:
|
|
19812
|
+
schema:
|
|
19813
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
19814
|
+
"400":
|
|
19815
|
+
$ref: "#/components/responses/Error"
|
|
19816
|
+
"403":
|
|
19817
|
+
$ref: "#/components/responses/Error"
|
|
19818
|
+
"404":
|
|
19819
|
+
$ref: "#/components/responses/Error"
|
|
19820
|
+
"409":
|
|
19821
|
+
$ref: "#/components/responses/Error"
|
|
19822
|
+
"503":
|
|
19823
|
+
$ref: "#/components/responses/Error"
|
|
19824
|
+
put:
|
|
19825
|
+
tags:
|
|
19826
|
+
- Platform
|
|
19827
|
+
operationId: applyKubernetesNodeYaml
|
|
19828
|
+
x-soha-permissions:
|
|
19829
|
+
mode: all
|
|
19830
|
+
keys:
|
|
19831
|
+
- platform.nodes.update
|
|
19832
|
+
x-soha-implementation-status: implemented
|
|
19833
|
+
parameters:
|
|
19834
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19835
|
+
- $ref: "#/components/parameters/KubernetesNodeName"
|
|
19836
|
+
requestBody:
|
|
19837
|
+
required: true
|
|
19838
|
+
content:
|
|
19839
|
+
application/json:
|
|
19840
|
+
schema:
|
|
19841
|
+
$ref: "#/components/schemas/KubernetesResourceYamlInput"
|
|
19842
|
+
responses:
|
|
19843
|
+
"200":
|
|
19844
|
+
description: Kubernetes operation result.
|
|
19845
|
+
content:
|
|
19846
|
+
application/json:
|
|
19847
|
+
schema:
|
|
19848
|
+
$ref: "#/components/schemas/KubernetesResourceYamlEnvelope"
|
|
19849
|
+
"400":
|
|
19850
|
+
$ref: "#/components/responses/Error"
|
|
19851
|
+
"403":
|
|
19852
|
+
$ref: "#/components/responses/Error"
|
|
19853
|
+
"404":
|
|
19854
|
+
$ref: "#/components/responses/Error"
|
|
19855
|
+
"409":
|
|
19856
|
+
$ref: "#/components/responses/Error"
|
|
19857
|
+
"503":
|
|
19858
|
+
$ref: "#/components/responses/Error"
|
|
19859
|
+
/clusters/{clusterID}/configuration/configmaps/{name}/data:
|
|
19860
|
+
put:
|
|
19861
|
+
tags:
|
|
19862
|
+
- Platform
|
|
19863
|
+
operationId: updateKubernetesConfigMapData
|
|
19864
|
+
x-soha-permissions:
|
|
19865
|
+
mode: all
|
|
19866
|
+
keys:
|
|
19867
|
+
- platform.configuration.config-maps.update
|
|
19868
|
+
x-soha-implementation-status: implemented
|
|
19869
|
+
parameters:
|
|
19870
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19871
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
19872
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
19873
|
+
requestBody:
|
|
19874
|
+
required: true
|
|
19875
|
+
content:
|
|
19876
|
+
application/json:
|
|
19877
|
+
schema:
|
|
19878
|
+
$ref: "#/components/schemas/KubernetesConfigMapDataInput"
|
|
19879
|
+
responses:
|
|
19880
|
+
"200":
|
|
19881
|
+
description: Kubernetes operation result.
|
|
19882
|
+
content:
|
|
19883
|
+
application/json:
|
|
19884
|
+
schema:
|
|
19885
|
+
$ref: "#/components/schemas/KubernetesConfigMapDetailEnvelope"
|
|
19886
|
+
"400":
|
|
19887
|
+
$ref: "#/components/responses/Error"
|
|
19888
|
+
"403":
|
|
19889
|
+
$ref: "#/components/responses/Error"
|
|
19890
|
+
"404":
|
|
19891
|
+
$ref: "#/components/responses/Error"
|
|
19892
|
+
"409":
|
|
19893
|
+
$ref: "#/components/responses/Error"
|
|
19894
|
+
"503":
|
|
19895
|
+
$ref: "#/components/responses/Error"
|
|
19896
|
+
/clusters/{clusterID}/configuration/secrets/{name}/detail:
|
|
19897
|
+
get:
|
|
19898
|
+
tags:
|
|
19899
|
+
- Platform
|
|
19900
|
+
operationId: getKubernetesSecretDetail
|
|
19901
|
+
x-soha-permissions:
|
|
19902
|
+
mode: all
|
|
19903
|
+
keys:
|
|
19904
|
+
- platform.configuration.secret-data.view
|
|
19905
|
+
- platform.configuration.secrets.view
|
|
19906
|
+
x-soha-implementation-status: implemented
|
|
19907
|
+
parameters:
|
|
19908
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19909
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
19910
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
19911
|
+
responses:
|
|
19912
|
+
"200":
|
|
19913
|
+
description: Kubernetes operation result.
|
|
19914
|
+
content:
|
|
19915
|
+
application/json:
|
|
19916
|
+
schema:
|
|
19917
|
+
$ref: "#/components/schemas/KubernetesSecretDetailEnvelope"
|
|
19918
|
+
"400":
|
|
19919
|
+
$ref: "#/components/responses/Error"
|
|
19920
|
+
"403":
|
|
19921
|
+
$ref: "#/components/responses/Error"
|
|
19922
|
+
"404":
|
|
19923
|
+
$ref: "#/components/responses/Error"
|
|
19924
|
+
"409":
|
|
19925
|
+
$ref: "#/components/responses/Error"
|
|
19926
|
+
"503":
|
|
19927
|
+
$ref: "#/components/responses/Error"
|
|
19928
|
+
/clusters/{clusterID}/configuration/secrets/{name}/data:
|
|
19929
|
+
put:
|
|
19930
|
+
tags:
|
|
19931
|
+
- Platform
|
|
19932
|
+
operationId: updateKubernetesSecretData
|
|
19933
|
+
x-soha-permissions:
|
|
19934
|
+
mode: all
|
|
19935
|
+
keys:
|
|
19936
|
+
- platform.configuration.secret-data.view
|
|
19937
|
+
- platform.configuration.secrets.update
|
|
19938
|
+
x-soha-implementation-status: implemented
|
|
19939
|
+
parameters:
|
|
19940
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19941
|
+
- $ref: "#/components/parameters/KubernetesResourceName"
|
|
19942
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
19943
|
+
requestBody:
|
|
19944
|
+
required: true
|
|
19945
|
+
content:
|
|
19946
|
+
application/json:
|
|
19947
|
+
schema:
|
|
19948
|
+
$ref: "#/components/schemas/KubernetesSecretDataInput"
|
|
19949
|
+
responses:
|
|
19950
|
+
"200":
|
|
19951
|
+
description: Kubernetes operation result.
|
|
19952
|
+
content:
|
|
19953
|
+
application/json:
|
|
19954
|
+
schema:
|
|
19955
|
+
$ref: "#/components/schemas/KubernetesSecretDetailEnvelope"
|
|
19956
|
+
"400":
|
|
19957
|
+
$ref: "#/components/responses/Error"
|
|
19958
|
+
"403":
|
|
19959
|
+
$ref: "#/components/responses/Error"
|
|
19960
|
+
"404":
|
|
19961
|
+
$ref: "#/components/responses/Error"
|
|
19962
|
+
"409":
|
|
19963
|
+
$ref: "#/components/responses/Error"
|
|
19964
|
+
"503":
|
|
19965
|
+
$ref: "#/components/responses/Error"
|
|
19966
|
+
/clusters/{clusterID}/workloads/pods/{podName}:
|
|
19967
|
+
delete:
|
|
19968
|
+
tags:
|
|
19969
|
+
- Platform
|
|
19970
|
+
operationId: deleteKubernetesPod
|
|
19971
|
+
x-soha-permissions:
|
|
19972
|
+
mode: all
|
|
19973
|
+
keys:
|
|
19974
|
+
- platform.pods.delete
|
|
19975
|
+
x-soha-implementation-status: implemented
|
|
19976
|
+
parameters:
|
|
19977
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
19978
|
+
- $ref: "#/components/parameters/KubernetesPodName"
|
|
19979
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
19980
|
+
responses:
|
|
19981
|
+
"204":
|
|
19982
|
+
description: Operation completed.
|
|
19983
|
+
"400":
|
|
19984
|
+
$ref: "#/components/responses/Error"
|
|
19985
|
+
"403":
|
|
19986
|
+
$ref: "#/components/responses/Error"
|
|
19987
|
+
"404":
|
|
19988
|
+
$ref: "#/components/responses/Error"
|
|
19989
|
+
"409":
|
|
19990
|
+
$ref: "#/components/responses/Error"
|
|
19991
|
+
"503":
|
|
19992
|
+
$ref: "#/components/responses/Error"
|
|
19993
|
+
/clusters/{clusterID}/workloads/cronjobs/{cronJobName}/suspend:
|
|
19994
|
+
post:
|
|
19995
|
+
tags:
|
|
19996
|
+
- Platform
|
|
19997
|
+
operationId: setKubernetesCronJobSuspend
|
|
19998
|
+
x-soha-permissions:
|
|
19999
|
+
mode: all
|
|
20000
|
+
keys:
|
|
20001
|
+
- platform.workloads.cron-jobs.suspend
|
|
20002
|
+
x-soha-implementation-status: implemented
|
|
20003
|
+
parameters:
|
|
20004
|
+
- $ref: "#/components/parameters/ClusterID"
|
|
20005
|
+
- $ref: "#/components/parameters/KubernetesCronJobName"
|
|
20006
|
+
- $ref: "#/components/parameters/KubernetesNamespaceQuery"
|
|
20007
|
+
requestBody:
|
|
20008
|
+
required: true
|
|
20009
|
+
content:
|
|
20010
|
+
application/json:
|
|
20011
|
+
schema:
|
|
20012
|
+
$ref: "#/components/schemas/KubernetesCronJobSuspendInput"
|
|
20013
|
+
responses:
|
|
20014
|
+
"200":
|
|
20015
|
+
description: Kubernetes operation result.
|
|
20016
|
+
content:
|
|
20017
|
+
application/json:
|
|
20018
|
+
schema:
|
|
20019
|
+
$ref: "#/components/schemas/KubernetesCronJobDetailEnvelope"
|
|
20020
|
+
"400":
|
|
20021
|
+
$ref: "#/components/responses/Error"
|
|
20022
|
+
"403":
|
|
20023
|
+
$ref: "#/components/responses/Error"
|
|
20024
|
+
"404":
|
|
20025
|
+
$ref: "#/components/responses/Error"
|
|
20026
|
+
"409":
|
|
20027
|
+
$ref: "#/components/responses/Error"
|
|
20028
|
+
"503":
|
|
20029
|
+
$ref: "#/components/responses/Error"
|
|
18461
20030
|
components:
|
|
18462
20031
|
securitySchemes:
|
|
18463
20032
|
bearerAuth:
|
|
@@ -23728,9 +25297,13 @@ components:
|
|
|
23728
25297
|
name: { type: string, minLength: 1, maxLength: 160 }
|
|
23729
25298
|
kind: { type: string, enum: [inline, http, git, object] }
|
|
23730
25299
|
version: { type: string, maxLength: 64 }
|
|
23731
|
-
secretRef:
|
|
25300
|
+
secretRef:
|
|
25301
|
+
type: string
|
|
25302
|
+
maxLength: 512
|
|
25303
|
+
description: "Gateway execution uses soha://secrets/<id> with an optional /versions/<n>. Legacy secret: references remain readable but require explicit configuration migration before execution."
|
|
23732
25304
|
config:
|
|
23733
25305
|
type: object
|
|
25306
|
+
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.
|
|
23734
25307
|
additionalProperties: true
|
|
23735
25308
|
syncPolicy: { $ref: "#/components/schemas/KnowledgeSyncPolicy" }
|
|
23736
25309
|
additionalProperties: false
|
|
@@ -24096,6 +25669,7 @@ components:
|
|
|
24096
25669
|
sourceType: { type: string, enum: [explicit_user, curated_extractor] }
|
|
24097
25670
|
sourceRefs:
|
|
24098
25671
|
type: array
|
|
25672
|
+
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.'
|
|
24099
25673
|
maxItems: 32
|
|
24100
25674
|
items: { type: string }
|
|
24101
25675
|
confidence: { type: number, minimum: 0, maximum: 1 }
|
|
@@ -24361,14 +25935,53 @@ components:
|
|
|
24361
25935
|
createdAt: { type: string, format: date-time }
|
|
24362
25936
|
updatedAt: { type: string, format: date-time }
|
|
24363
25937
|
additionalProperties: false
|
|
25938
|
+
PersonalDockerEnvironmentPolicy:
|
|
25939
|
+
type: object
|
|
25940
|
+
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.
|
|
25941
|
+
required: [agentClusterId, quota, leaseSeconds]
|
|
25942
|
+
properties:
|
|
25943
|
+
agentClusterId: { type: string, format: uuid }
|
|
25944
|
+
quota:
|
|
25945
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
25946
|
+
leaseSeconds: { type: integer, minimum: 60, maximum: 3600 }
|
|
25947
|
+
additionalProperties: false
|
|
25948
|
+
PersonalVMEnvironmentPolicy:
|
|
25949
|
+
type: object
|
|
25950
|
+
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.
|
|
25951
|
+
required: [ownerId, computeRef, provider, dataDiskSerial, dataDiskBytes, quota, leaseSeconds]
|
|
25952
|
+
properties:
|
|
25953
|
+
ownerId: { type: string, format: uuid }
|
|
25954
|
+
computeRef: { type: string, format: uuid, description: Soha VM ID, not a provider VM number. }
|
|
25955
|
+
provider: { type: string, enum: [pve] }
|
|
25956
|
+
dataDiskSerial: { type: string, pattern: '^[A-Za-z0-9_-]{1,20}$' }
|
|
25957
|
+
dataDiskBytes: { type: integer, format: int64, minimum: 1073741824, maximum: 1099511627776, multipleOf: 1073741824, description: Exact independent disk size in whole GiB. }
|
|
25958
|
+
quota:
|
|
25959
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
25960
|
+
leaseSeconds: { type: integer, minimum: 60, maximum: 3600 }
|
|
25961
|
+
additionalProperties: false
|
|
25962
|
+
PersonalEnvironmentQuota:
|
|
25963
|
+
type: object
|
|
25964
|
+
required: [diskBytes, memoryBytes, cpuUnits, maxProcesses, networkEgress]
|
|
25965
|
+
properties:
|
|
25966
|
+
diskBytes: { type: integer, format: int64, minimum: 16777216, maximum: 1099511627776, description: Hard charged persistent-data bytes; temporary mounts charge memory instead. }
|
|
25967
|
+
memoryBytes: { type: integer, format: int64, minimum: 33554432, maximum: 17179869184 }
|
|
25968
|
+
cpuUnits: { type: integer, format: int64, minimum: 1, maximum: 8000, description: CPU millicores; 1000 is one CPU. }
|
|
25969
|
+
maxProcesses: { type: integer, minimum: 4, maximum: 256 }
|
|
25970
|
+
networkEgress: { type: boolean, const: false, description: Direct network access is not supported by this personal environment policy. }
|
|
25971
|
+
additionalProperties: false
|
|
24364
25972
|
AIEnvironmentTemplateInput:
|
|
24365
25973
|
type: object
|
|
25974
|
+
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.
|
|
24366
25975
|
required: [id, name, backend, isolationMode]
|
|
24367
25976
|
properties:
|
|
24368
25977
|
id: { type: string, minLength: 1 }
|
|
24369
25978
|
name: { type: string, minLength: 1 }
|
|
24370
|
-
backend: { type: string, enum: [container, kubernetes] }
|
|
25979
|
+
backend: { type: string, enum: [container, kubernetes, vm] }
|
|
24371
25980
|
isolationMode: { type: string, enum: [read-only, disposable-write] }
|
|
25981
|
+
personalDocker:
|
|
25982
|
+
$ref: "#/components/schemas/PersonalDockerEnvironmentPolicy"
|
|
25983
|
+
personalVM:
|
|
25984
|
+
$ref: "#/components/schemas/PersonalVMEnvironmentPolicy"
|
|
24372
25985
|
resourcePolicy:
|
|
24373
25986
|
type: object
|
|
24374
25987
|
additionalProperties: true
|
|
@@ -24378,12 +25991,17 @@ components:
|
|
|
24378
25991
|
additionalProperties: false
|
|
24379
25992
|
AIEnvironmentTemplate:
|
|
24380
25993
|
type: object
|
|
25994
|
+
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.
|
|
24381
25995
|
required: [id, name, backend, isolationMode, status, createdAt, updatedAt]
|
|
24382
25996
|
properties:
|
|
24383
25997
|
id: { type: string, minLength: 1 }
|
|
24384
25998
|
name: { type: string, minLength: 1 }
|
|
24385
|
-
backend: { type: string, enum: [container, kubernetes] }
|
|
25999
|
+
backend: { type: string, enum: [container, kubernetes, vm] }
|
|
24386
26000
|
isolationMode: { type: string, enum: [read-only, disposable-write] }
|
|
26001
|
+
personalDocker:
|
|
26002
|
+
$ref: "#/components/schemas/PersonalDockerEnvironmentPolicy"
|
|
26003
|
+
personalVM:
|
|
26004
|
+
$ref: "#/components/schemas/PersonalVMEnvironmentPolicy"
|
|
24387
26005
|
resourcePolicy:
|
|
24388
26006
|
type: object
|
|
24389
26007
|
additionalProperties: true
|
|
@@ -24630,7 +26248,18 @@ components:
|
|
|
24630
26248
|
content: { type: string }
|
|
24631
26249
|
uri: { type: string }
|
|
24632
26250
|
version: { type: string }
|
|
26251
|
+
deleted:
|
|
26252
|
+
type: boolean
|
|
26253
|
+
description: Explicit source tombstone for this externalId. Missing documents in a partial fetch do not imply deletion. A tombstone has empty content.
|
|
24633
26254
|
acl: { $ref: "#/components/schemas/KnowledgeAccessScope" }
|
|
26255
|
+
allOf:
|
|
26256
|
+
- if:
|
|
26257
|
+
required: [deleted]
|
|
26258
|
+
properties:
|
|
26259
|
+
deleted: { const: true }
|
|
26260
|
+
then:
|
|
26261
|
+
properties:
|
|
26262
|
+
content: { maxLength: 0 }
|
|
24634
26263
|
additionalProperties: false
|
|
24635
26264
|
KnowledgeDocument:
|
|
24636
26265
|
type: object
|
|
@@ -24728,6 +26357,9 @@ components:
|
|
|
24728
26357
|
uri: { type: string }
|
|
24729
26358
|
score: { type: number }
|
|
24730
26359
|
contentHash: { type: string }
|
|
26360
|
+
documentVersionId: { type: string }
|
|
26361
|
+
indexRevisionId: { type: string }
|
|
26362
|
+
retrievedAt: { type: string, format: date-time }
|
|
24731
26363
|
additionalProperties: false
|
|
24732
26364
|
KnowledgeSearchHit:
|
|
24733
26365
|
type: object
|
|
@@ -24758,6 +26390,8 @@ components:
|
|
|
24758
26390
|
timingMs: { type: integer, format: int64, minimum: 0 }
|
|
24759
26391
|
noAnswer: { type: boolean }
|
|
24760
26392
|
traceId: { type: string }
|
|
26393
|
+
retrievalMode: { type: string, enum: [lexical, hybrid] }
|
|
26394
|
+
degradationReason: { type: string }
|
|
24761
26395
|
additionalProperties: false
|
|
24762
26396
|
EvaluationDatasetSample:
|
|
24763
26397
|
type: object
|
|
@@ -25481,10 +27115,32 @@ components:
|
|
|
25481
27115
|
reasoningEfforts:
|
|
25482
27116
|
type: array
|
|
25483
27117
|
items: { type: string, enum: [low, medium, high] }
|
|
27118
|
+
contextWindowTokens:
|
|
27119
|
+
type: integer
|
|
27120
|
+
format: int64
|
|
27121
|
+
minimum: 1
|
|
27122
|
+
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.
|
|
27123
|
+
additionalProperties: false
|
|
27124
|
+
WorkbenchContextUsage:
|
|
27125
|
+
type: object
|
|
27126
|
+
required: [measurement]
|
|
27127
|
+
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.
|
|
27128
|
+
properties:
|
|
27129
|
+
measurement: { type: string, enum: [reported, estimated, unavailable] }
|
|
27130
|
+
model: { type: string }
|
|
27131
|
+
inputTokens: { type: integer, format: int64, minimum: 0 }
|
|
27132
|
+
outputTokens: { type: integer, format: int64, minimum: 0 }
|
|
27133
|
+
totalTokens: { type: integer, format: int64, minimum: 0 }
|
|
27134
|
+
contextWindowTokens: { type: integer, format: int64, minimum: 1 }
|
|
25484
27135
|
additionalProperties: false
|
|
25485
27136
|
WorkbenchSessionMetadata:
|
|
25486
27137
|
type: object
|
|
25487
27138
|
properties:
|
|
27139
|
+
conversationKind:
|
|
27140
|
+
type: string
|
|
27141
|
+
enum: [main, side, personal_main, personal_side]
|
|
27142
|
+
readOnly: true
|
|
27143
|
+
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.
|
|
25488
27144
|
modelPreferences:
|
|
25489
27145
|
$ref: "#/components/schemas/WorkbenchModelPreferences"
|
|
25490
27146
|
mode:
|
|
@@ -25531,6 +27187,340 @@ components:
|
|
|
25531
27187
|
createdAt: { type: string, format: date-time }
|
|
25532
27188
|
updatedAt: { type: string, format: date-time }
|
|
25533
27189
|
additionalProperties: false
|
|
27190
|
+
PersonalAgentAccess:
|
|
27191
|
+
type: object
|
|
27192
|
+
required: [userId, status, version]
|
|
27193
|
+
properties:
|
|
27194
|
+
userId: { type: string }
|
|
27195
|
+
status:
|
|
27196
|
+
type: string
|
|
27197
|
+
enum: [not_requested, pending, approved, rejected, revoked]
|
|
27198
|
+
version: { type: integer, format: int64, minimum: 0 }
|
|
27199
|
+
requestedAt: { type: string, format: date-time }
|
|
27200
|
+
decidedAt: { type: string, format: date-time }
|
|
27201
|
+
decidedBy: { type: string }
|
|
27202
|
+
additionalProperties: false
|
|
27203
|
+
PersonalAgentAccessDecision:
|
|
27204
|
+
type: object
|
|
27205
|
+
required: [status, version]
|
|
27206
|
+
properties:
|
|
27207
|
+
status: { type: string, enum: [approved, rejected, revoked] }
|
|
27208
|
+
version: { type: integer, format: int64, minimum: 1 }
|
|
27209
|
+
additionalProperties: false
|
|
27210
|
+
PersonalAgentAccessEnvelope:
|
|
27211
|
+
type: object
|
|
27212
|
+
required: [data]
|
|
27213
|
+
properties:
|
|
27214
|
+
data: { $ref: "#/components/schemas/PersonalAgentAccess" }
|
|
27215
|
+
additionalProperties: false
|
|
27216
|
+
PersonalAgentAccessListEnvelope:
|
|
27217
|
+
type: object
|
|
27218
|
+
required: [data]
|
|
27219
|
+
properties:
|
|
27220
|
+
data:
|
|
27221
|
+
type: array
|
|
27222
|
+
items: { $ref: "#/components/schemas/PersonalAgentAccess" }
|
|
27223
|
+
additionalProperties: false
|
|
27224
|
+
PersonalAssistant:
|
|
27225
|
+
type: object
|
|
27226
|
+
required: [id, name, mainSessionId, createdAt, updatedAt]
|
|
27227
|
+
properties:
|
|
27228
|
+
id: { type: string, readOnly: true }
|
|
27229
|
+
name: { type: string, minLength: 1, maxLength: 60 }
|
|
27230
|
+
avatarUrl:
|
|
27231
|
+
description: Bounded raster data URL belonging to this assistant, not the login account. Empty or absent uses the default image.
|
|
27232
|
+
type: string
|
|
27233
|
+
maxLength: 700000
|
|
27234
|
+
avatarPosterUrl:
|
|
27235
|
+
description: Static PNG/JPEG data URL used when motion is disabled or reduced.
|
|
27236
|
+
type: string
|
|
27237
|
+
maxLength: 150000
|
|
27238
|
+
avatarMotion: { type: string, enum: [auto, off] }
|
|
27239
|
+
mainSessionId: { type: string, readOnly: true }
|
|
27240
|
+
createdAt: { type: string, format: date-time, readOnly: true }
|
|
27241
|
+
updatedAt: { type: string, format: date-time, readOnly: true }
|
|
27242
|
+
additionalProperties: false
|
|
27243
|
+
PersonalAssistantAvatarRequest:
|
|
27244
|
+
type: object
|
|
27245
|
+
required: [avatarUrl]
|
|
27246
|
+
properties:
|
|
27247
|
+
avatarUrl:
|
|
27248
|
+
type: string
|
|
27249
|
+
maxLength: 700000
|
|
27250
|
+
pattern: '^(data:image/(png|jpeg|gif|webp);base64,[A-Za-z0-9+/]+={0,2})?$'
|
|
27251
|
+
avatarPosterUrl:
|
|
27252
|
+
type: string
|
|
27253
|
+
maxLength: 150000
|
|
27254
|
+
pattern: '^(data:image/(png|jpeg);base64,[A-Za-z0-9+/]+={0,2})?$'
|
|
27255
|
+
avatarMotion: { type: string, enum: [auto, off], default: auto }
|
|
27256
|
+
additionalProperties: false
|
|
27257
|
+
PersonalEnvironmentActionRequest:
|
|
27258
|
+
type: object
|
|
27259
|
+
required: [action]
|
|
27260
|
+
properties:
|
|
27261
|
+
action: { type: string, enum: [wake, sleep, reconcile] }
|
|
27262
|
+
templateId:
|
|
27263
|
+
description: Required on first wake; may only select the already bound template afterward. Only wake accepts this field.
|
|
27264
|
+
type: string
|
|
27265
|
+
minLength: 1
|
|
27266
|
+
maxLength: 128
|
|
27267
|
+
additionalProperties: false
|
|
27268
|
+
PersonalEnvironmentUsage:
|
|
27269
|
+
type: object
|
|
27270
|
+
required: [diskBytes, memoryBytes, cpuTimeNanos, processes]
|
|
27271
|
+
properties:
|
|
27272
|
+
diskBytes: { type: integer, format: int64, minimum: 0 }
|
|
27273
|
+
memoryBytes: { type: integer, format: int64, minimum: 0 }
|
|
27274
|
+
cpuTimeNanos: { type: integer, format: int64, minimum: 0 }
|
|
27275
|
+
processes: { type: integer, minimum: 0 }
|
|
27276
|
+
additionalProperties: false
|
|
27277
|
+
PersonalEnvironment:
|
|
27278
|
+
type: object
|
|
27279
|
+
required: [assistantId, state, version, dataInitialized]
|
|
27280
|
+
properties:
|
|
27281
|
+
assistantId: { type: string, minLength: 1, readOnly: true }
|
|
27282
|
+
templateId: { type: string, minLength: 1, maxLength: 128, readOnly: true }
|
|
27283
|
+
backend: { type: string, enum: [container, vm], readOnly: true, description: Frozen execution backend of this binding; never inferred from the current template. }
|
|
27284
|
+
provider: { type: string, enum: [docker, pve, kubevirt], readOnly: true }
|
|
27285
|
+
policyRevision: { type: string, minLength: 1, maxLength: 128, readOnly: true, description: Frozen policy identity. legacy-docker-v1 preserves the original stored lease and quota. }
|
|
27286
|
+
computeRef: { type: string, minLength: 1, maxLength: 128, readOnly: true, description: Opaque execution reference; not a physical handle or readiness proof. }
|
|
27287
|
+
computeGeneration: { type: integer, format: int64, minimum: 0, readOnly: true, description: Reserved execution generation; zero means no execution has been reserved. }
|
|
27288
|
+
dataRef: { type: string, minLength: 1, maxLength: 128, readOnly: true, description: Stable logical personal-data identity. Existence requires a fresh authorized receipt. }
|
|
27289
|
+
state:
|
|
27290
|
+
type: string
|
|
27291
|
+
enum: [unprovisioned, pending, ready, sleeping, missing, expired, unknown, quota_exceeded, deleting, deletion_unknown, deleted]
|
|
27292
|
+
readOnly: true
|
|
27293
|
+
version: { type: integer, format: int64, minimum: 0, readOnly: true }
|
|
27294
|
+
dataInitialized:
|
|
27295
|
+
description: A successful past data receipt; does not prove that data currently exists or that the environment is ready.
|
|
27296
|
+
type: boolean
|
|
27297
|
+
readOnly: true
|
|
27298
|
+
quota:
|
|
27299
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
27300
|
+
usage:
|
|
27301
|
+
$ref: "#/components/schemas/PersonalEnvironmentUsage"
|
|
27302
|
+
observedAt: { type: string, format: date-time, readOnly: true }
|
|
27303
|
+
expiresAt: { type: string, format: date-time, readOnly: true }
|
|
27304
|
+
updatedAt: { type: string, format: date-time, readOnly: true }
|
|
27305
|
+
additionalProperties: false
|
|
27306
|
+
PersonalEnvironmentTemplate:
|
|
27307
|
+
type: object
|
|
27308
|
+
required: [id, name, mode, leaseSeconds, quota]
|
|
27309
|
+
properties:
|
|
27310
|
+
id: { type: string, minLength: 1, maxLength: 128 }
|
|
27311
|
+
name: { type: string, minLength: 1, maxLength: 200 }
|
|
27312
|
+
backend: { type: string, enum: [container, vm] }
|
|
27313
|
+
provider: { type: string, enum: [docker, pve, kubevirt] }
|
|
27314
|
+
policyRevision: { type: string, minLength: 1, maxLength: 128 }
|
|
27315
|
+
mode: { type: string, enum: [observe-only, restricted-write] }
|
|
27316
|
+
leaseSeconds: { type: integer, minimum: 60, maximum: 3600 }
|
|
27317
|
+
quota:
|
|
27318
|
+
$ref: "#/components/schemas/PersonalEnvironmentQuota"
|
|
27319
|
+
additionalProperties: false
|
|
27320
|
+
PersonalEnvironmentTemplateListEnvelope:
|
|
27321
|
+
type: object
|
|
27322
|
+
required: [data]
|
|
27323
|
+
properties:
|
|
27324
|
+
data:
|
|
27325
|
+
type: array
|
|
27326
|
+
maxItems: 100
|
|
27327
|
+
items:
|
|
27328
|
+
$ref: "#/components/schemas/PersonalEnvironmentTemplate"
|
|
27329
|
+
additionalProperties: false
|
|
27330
|
+
PersonalEnvironmentEnvelope:
|
|
27331
|
+
type: object
|
|
27332
|
+
required: [data]
|
|
27333
|
+
properties:
|
|
27334
|
+
data:
|
|
27335
|
+
$ref: "#/components/schemas/PersonalEnvironment"
|
|
27336
|
+
additionalProperties: false
|
|
27337
|
+
PersonalGuestRuntimeInput:
|
|
27338
|
+
type: object
|
|
27339
|
+
additionalProperties: false
|
|
27340
|
+
required: [environmentVersion, idempotencyKey, kind]
|
|
27341
|
+
properties:
|
|
27342
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27343
|
+
idempotencyKey: { type: string, minLength: 8, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }
|
|
27344
|
+
kind: { type: string, enum: [execute, file_read, file_write, docker, browser] }
|
|
27345
|
+
argv:
|
|
27346
|
+
type: array
|
|
27347
|
+
minItems: 1
|
|
27348
|
+
maxItems: 64
|
|
27349
|
+
items: { type: string, maxLength: 4096 }
|
|
27350
|
+
file:
|
|
27351
|
+
type: object
|
|
27352
|
+
additionalProperties: false
|
|
27353
|
+
required: [path]
|
|
27354
|
+
properties:
|
|
27355
|
+
path: { type: string, minLength: 1, maxLength: 1024 }
|
|
27356
|
+
contentBase64: { type: string, maxLength: 60076 }
|
|
27357
|
+
expectedSHA256: { type: string, pattern: "^[a-f0-9]{64}$" }
|
|
27358
|
+
browser:
|
|
27359
|
+
type: object
|
|
27360
|
+
additionalProperties: false
|
|
27361
|
+
required: [action]
|
|
27362
|
+
properties:
|
|
27363
|
+
action: { type: string, enum: [acquire, snapshot, navigate, click, type, pointer, takeover, return, release] }
|
|
27364
|
+
controlId: { type: string, format: uuid }
|
|
27365
|
+
generation: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27366
|
+
url: { type: string, maxLength: 4096 }
|
|
27367
|
+
selector: { type: string, maxLength: 2048 }
|
|
27368
|
+
text: { type: string, maxLength: 4096 }
|
|
27369
|
+
x: { type: integer, minimum: 0, maximum: 799 }
|
|
27370
|
+
y: { type: integer, minimum: 0, maximum: 599 }
|
|
27371
|
+
PersonalGuestRuntime:
|
|
27372
|
+
type: object
|
|
27373
|
+
additionalProperties: false
|
|
27374
|
+
required: [id, kind, status, assistantId, environmentVersion]
|
|
27375
|
+
properties:
|
|
27376
|
+
id: { type: string, format: uuid }
|
|
27377
|
+
kind: { type: string, enum: [execute, file_read, file_write, docker, browser] }
|
|
27378
|
+
status: { type: string, enum: [queued, running, succeeded, failed, canceled, unknown] }
|
|
27379
|
+
assistantId: { type: string, format: uuid }
|
|
27380
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27381
|
+
output: { type: string, maxLength: 65536 }
|
|
27382
|
+
exitCode: { type: integer, minimum: 0, maximum: 255 }
|
|
27383
|
+
file:
|
|
27384
|
+
type: object
|
|
27385
|
+
additionalProperties: false
|
|
27386
|
+
required: [path, sha256, size]
|
|
27387
|
+
properties:
|
|
27388
|
+
path: { type: string, maxLength: 1024 }
|
|
27389
|
+
contentBase64: { type: string, maxLength: 60076 }
|
|
27390
|
+
sha256: { type: string, pattern: "^[a-f0-9]{64}$" }
|
|
27391
|
+
size: { type: integer, format: int64, minimum: 0, maximum: 45056 }
|
|
27392
|
+
browser:
|
|
27393
|
+
type: object
|
|
27394
|
+
additionalProperties: false
|
|
27395
|
+
required: [controlId, generation, instanceId, width, height]
|
|
27396
|
+
properties:
|
|
27397
|
+
controlId: { type: string, format: uuid }
|
|
27398
|
+
generation: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27399
|
+
instanceId: { type: string, format: uuid }
|
|
27400
|
+
url: { type: string, maxLength: 4096 }
|
|
27401
|
+
title: { type: string, maxLength: 512 }
|
|
27402
|
+
text: { type: string, maxLength: 4096 }
|
|
27403
|
+
jpegBase64: { type: string, maxLength: 49152 }
|
|
27404
|
+
width: { type: integer, const: 800 }
|
|
27405
|
+
height: { type: integer, const: 600 }
|
|
27406
|
+
PersonalWorkspaceRuntime:
|
|
27407
|
+
type: object
|
|
27408
|
+
additionalProperties: false
|
|
27409
|
+
required: [assistantId, environmentVersion]
|
|
27410
|
+
properties:
|
|
27411
|
+
assistantId: { type: string, format: uuid }
|
|
27412
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27413
|
+
latest: { $ref: "#/components/schemas/PersonalGuestRuntime" }
|
|
27414
|
+
browserControl:
|
|
27415
|
+
type: object
|
|
27416
|
+
additionalProperties: false
|
|
27417
|
+
required: [controlId, generation, owner, expiresAt]
|
|
27418
|
+
properties:
|
|
27419
|
+
controlId: { type: string, format: uuid }
|
|
27420
|
+
generation: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27421
|
+
owner: { type: string, enum: [user, agent, released] }
|
|
27422
|
+
taskId: { type: string, format: uuid }
|
|
27423
|
+
instanceId: { type: string, format: uuid }
|
|
27424
|
+
expiresAt: { type: string, format: date-time }
|
|
27425
|
+
PersonalWorkspaceRuntimeEnvelope:
|
|
27426
|
+
type: object
|
|
27427
|
+
additionalProperties: false
|
|
27428
|
+
required: [data]
|
|
27429
|
+
properties:
|
|
27430
|
+
data: { $ref: "#/components/schemas/PersonalWorkspaceRuntime" }
|
|
27431
|
+
PersonalGuestRuntimeEnvelope:
|
|
27432
|
+
type: object
|
|
27433
|
+
additionalProperties: false
|
|
27434
|
+
required: [data]
|
|
27435
|
+
properties:
|
|
27436
|
+
data: { $ref: "#/components/schemas/PersonalGuestRuntime" }
|
|
27437
|
+
PersonalGuestToolsInput:
|
|
27438
|
+
type: object
|
|
27439
|
+
additionalProperties: false
|
|
27440
|
+
required: [environmentVersion, idempotencyKey]
|
|
27441
|
+
properties:
|
|
27442
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27443
|
+
idempotencyKey: { type: string, minLength: 8, maxLength: 128, pattern: "^[a-zA-Z0-9_-]+$" }
|
|
27444
|
+
PersonalGuestPreparationInput:
|
|
27445
|
+
type: object
|
|
27446
|
+
required: [environmentVersion, csrPEM]
|
|
27447
|
+
properties:
|
|
27448
|
+
environmentVersion: { type: integer, format: int64, minimum: 1, maximum: 9007199254740991 }
|
|
27449
|
+
csrPEM: { type: string, minLength: 1, maxLength: 4096, description: Signed Ed25519 CSR containing only a public key. Requested subject and identity never grant authority. }
|
|
27450
|
+
additionalProperties: false
|
|
27451
|
+
PersonalGuestPreparation:
|
|
27452
|
+
type: object
|
|
27453
|
+
required: [bindingId, enrollmentId, challenge, endpoint, certificatePEM, clientCAPEM, expiresAt]
|
|
27454
|
+
properties:
|
|
27455
|
+
bindingId: { type: string, format: uuid }
|
|
27456
|
+
enrollmentId: { type: string, format: uuid }
|
|
27457
|
+
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. }
|
|
27458
|
+
endpoint: { type: string, format: uri, maxLength: 512, description: Core-configured HTTPS guest endpoint; never a caller-selected destination. }
|
|
27459
|
+
certificatePEM: { type: string, minLength: 1, maxLength: 8192 }
|
|
27460
|
+
clientCAPEM: { type: string, minLength: 1, maxLength: 8192 }
|
|
27461
|
+
expiresAt: { type: string, format: date-time, description: The bootstrap challenge expiry, not an environment readiness or execution lease. }
|
|
27462
|
+
additionalProperties: false
|
|
27463
|
+
PersonalGuestPreparationEnvelope:
|
|
27464
|
+
type: object
|
|
27465
|
+
required: [data]
|
|
27466
|
+
properties:
|
|
27467
|
+
data: { $ref: "#/components/schemas/PersonalGuestPreparation" }
|
|
27468
|
+
additionalProperties: false
|
|
27469
|
+
PersonalEnvironmentDataExportRequest:
|
|
27470
|
+
type: object
|
|
27471
|
+
required: [assistantId, environmentVersion]
|
|
27472
|
+
properties:
|
|
27473
|
+
assistantId: { type: string, minLength: 1, maxLength: 128 }
|
|
27474
|
+
environmentVersion: { type: integer, format: int64, minimum: 1 }
|
|
27475
|
+
additionalProperties: false
|
|
27476
|
+
PersonalEnvironmentDataDeletionRequest:
|
|
27477
|
+
type: object
|
|
27478
|
+
required: [assistantId, environmentVersion, confirmationName]
|
|
27479
|
+
properties:
|
|
27480
|
+
assistantId: { type: string, minLength: 1, maxLength: 128 }
|
|
27481
|
+
environmentVersion: { type: integer, format: int64, minimum: 1 }
|
|
27482
|
+
confirmationName: { type: string, minLength: 1, maxLength: 60 }
|
|
27483
|
+
additionalProperties: false
|
|
27484
|
+
PersonalAssistantUpdateRequest:
|
|
27485
|
+
type: object
|
|
27486
|
+
required: [name]
|
|
27487
|
+
properties:
|
|
27488
|
+
name: { type: string, minLength: 1, maxLength: 60 }
|
|
27489
|
+
additionalProperties: false
|
|
27490
|
+
PersonalAssistantArtifact:
|
|
27491
|
+
type: object
|
|
27492
|
+
required: [id, artifact, createdAt]
|
|
27493
|
+
properties:
|
|
27494
|
+
id: { type: string, readOnly: true }
|
|
27495
|
+
sessionId: { type: string, readOnly: true }
|
|
27496
|
+
messageId: { type: string, readOnly: true }
|
|
27497
|
+
taskId: { type: string, readOnly: true }
|
|
27498
|
+
artifact:
|
|
27499
|
+
$ref: "#/components/schemas/WorkbenchAnalysisArtifact"
|
|
27500
|
+
createdAt: { type: string, format: date-time, readOnly: true }
|
|
27501
|
+
additionalProperties: false
|
|
27502
|
+
PersonalAssistantArtifactListEnvelope:
|
|
27503
|
+
type: object
|
|
27504
|
+
required: [data]
|
|
27505
|
+
properties:
|
|
27506
|
+
data:
|
|
27507
|
+
type: array
|
|
27508
|
+
maxItems: 50
|
|
27509
|
+
items:
|
|
27510
|
+
$ref: "#/components/schemas/PersonalAssistantArtifact"
|
|
27511
|
+
additionalProperties: false
|
|
27512
|
+
PersonalAssistantEnvelope:
|
|
27513
|
+
type: object
|
|
27514
|
+
required: [data]
|
|
27515
|
+
properties:
|
|
27516
|
+
data:
|
|
27517
|
+
$ref: "#/components/schemas/PersonalAssistant"
|
|
27518
|
+
additionalProperties: false
|
|
27519
|
+
WorkbenchMainSessionRequest:
|
|
27520
|
+
type: object
|
|
27521
|
+
properties:
|
|
27522
|
+
agentProviderId: { type: string, maxLength: 200 }
|
|
27523
|
+
additionalProperties: false
|
|
25534
27524
|
WorkbenchCreateSessionRequest:
|
|
25535
27525
|
type: object
|
|
25536
27526
|
properties:
|
|
@@ -25585,9 +27575,11 @@ components:
|
|
|
25585
27575
|
role:
|
|
25586
27576
|
type: string
|
|
25587
27577
|
enum: [user, assistant, system]
|
|
27578
|
+
x-enum-varnames: [WorkbenchMessageRoleUser, WorkbenchMessageRoleAssistant, WorkbenchMessageRoleSystem]
|
|
25588
27579
|
content: { type: string }
|
|
25589
27580
|
metadata:
|
|
25590
27581
|
type: object
|
|
27582
|
+
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.
|
|
25591
27583
|
additionalProperties: {}
|
|
25592
27584
|
createdAt: { type: string, format: date-time }
|
|
25593
27585
|
additionalProperties: false
|
|
@@ -26197,6 +28189,11 @@ components:
|
|
|
26197
28189
|
rootCauseRunId: { type: string }
|
|
26198
28190
|
createdBy: { type: string }
|
|
26199
28191
|
status: { type: string }
|
|
28192
|
+
executionOwner: { type: string, enum: [native, external] }
|
|
28193
|
+
phase: { type: string }
|
|
28194
|
+
stopReason: { type: string }
|
|
28195
|
+
eventSequence: { type: integer, minimum: 0 }
|
|
28196
|
+
usageKnown: { type: boolean }
|
|
26200
28197
|
scope:
|
|
26201
28198
|
$ref: "#/components/schemas/WorkbenchSessionScope"
|
|
26202
28199
|
toolset:
|
|
@@ -26648,10 +28645,31 @@ components:
|
|
|
26648
28645
|
ok:
|
|
26649
28646
|
type: boolean
|
|
26650
28647
|
additionalProperties: false
|
|
28648
|
+
WorkbenchAssistantTask:
|
|
28649
|
+
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.
|
|
28650
|
+
type: object
|
|
28651
|
+
required: [kind]
|
|
28652
|
+
properties:
|
|
28653
|
+
kind: { type: string, enum: [avatar, undo] }
|
|
28654
|
+
image:
|
|
28655
|
+
$ref: "#/components/schemas/PersonalAssistantAvatarRequest"
|
|
28656
|
+
useCurrentAvatar: { type: boolean }
|
|
28657
|
+
publicModel: { type: string, minLength: 1, maxLength: 128 }
|
|
28658
|
+
messageId: { type: string, minLength: 1, maxLength: 128 }
|
|
28659
|
+
additionalProperties: false
|
|
26651
28660
|
WorkbenchSendMessageStreamRequest:
|
|
26652
28661
|
type: object
|
|
26653
28662
|
required: [content]
|
|
26654
28663
|
properties:
|
|
28664
|
+
requestId:
|
|
28665
|
+
type: string
|
|
28666
|
+
minLength: 1
|
|
28667
|
+
maxLength: 128
|
|
28668
|
+
description: A stable per-turn idempotency key. Reusing it with different content or selections is rejected.
|
|
28669
|
+
taskIntent:
|
|
28670
|
+
$ref: "#/components/schemas/WorkbenchTaskIntent"
|
|
28671
|
+
assistantTask:
|
|
28672
|
+
$ref: "#/components/schemas/WorkbenchAssistantTask"
|
|
26655
28673
|
contextSelection:
|
|
26656
28674
|
$ref: "#/components/schemas/WorkbenchContextSelection"
|
|
26657
28675
|
knowledgeContext:
|
|
@@ -26688,10 +28706,82 @@ components:
|
|
|
26688
28706
|
type: object
|
|
26689
28707
|
additionalProperties: {}
|
|
26690
28708
|
additionalProperties: false
|
|
28709
|
+
WorkbenchTaskIntent:
|
|
28710
|
+
description: Capability preferences and explicit query parameters for this turn only. Does not change session mode, grant permission, or create scheduled inspections.
|
|
28711
|
+
type: object
|
|
28712
|
+
properties:
|
|
28713
|
+
capabilities:
|
|
28714
|
+
type: array
|
|
28715
|
+
maxItems: 4
|
|
28716
|
+
uniqueItems: true
|
|
28717
|
+
items: { type: string, enum: [root_cause, performance, trace, inspection_review] }
|
|
28718
|
+
dataSourceId:
|
|
28719
|
+
description: Legacy shared selection. A capability-specific data source takes precedence for that capability.
|
|
28720
|
+
type: string
|
|
28721
|
+
maxLength: 256
|
|
28722
|
+
performanceDataSourceId: { type: string, maxLength: 256 }
|
|
28723
|
+
traceDataSourceId: { type: string, maxLength: 256 }
|
|
28724
|
+
rootCauseProfileId: { type: string, maxLength: 256 }
|
|
28725
|
+
metricKey: { type: string, maxLength: 256 }
|
|
28726
|
+
traceId: { type: string, maxLength: 256 }
|
|
28727
|
+
minDurationMs: { type: integer, minimum: 0, maximum: 86400000, x-go-type-skip-optional-pointer: false }
|
|
28728
|
+
inspectionRunIds:
|
|
28729
|
+
type: array
|
|
28730
|
+
maxItems: 20
|
|
28731
|
+
uniqueItems: true
|
|
28732
|
+
items: { type: string, minLength: 1, maxLength: 128 }
|
|
28733
|
+
additionalProperties: false
|
|
28734
|
+
WorkbenchProfessionalCapabilityInput:
|
|
28735
|
+
type: object
|
|
28736
|
+
required: [sessionId, question, scope, intent]
|
|
28737
|
+
properties:
|
|
28738
|
+
sessionId: { type: string, minLength: 1, maxLength: 128 }
|
|
28739
|
+
question: { type: string, minLength: 1, maxLength: 16384 }
|
|
28740
|
+
locale: { type: string, maxLength: 35 }
|
|
28741
|
+
scope: { $ref: "#/components/schemas/WorkbenchSessionScope" }
|
|
28742
|
+
toolset: { $ref: "#/components/schemas/WorkbenchSessionToolset" }
|
|
28743
|
+
intent: { $ref: "#/components/schemas/WorkbenchTaskIntent" }
|
|
28744
|
+
additionalProperties: false
|
|
28745
|
+
AgentRunResumeRequest:
|
|
28746
|
+
type: object
|
|
28747
|
+
properties:
|
|
28748
|
+
input: { type: string, maxLength: 16384 }
|
|
28749
|
+
additionalProperties: false
|
|
28750
|
+
AgentRunEventListEnvelope:
|
|
28751
|
+
type: object
|
|
28752
|
+
required: [data]
|
|
28753
|
+
properties:
|
|
28754
|
+
data: { $ref: "#/components/schemas/AgentRunEventPage" }
|
|
28755
|
+
additionalProperties: false
|
|
28756
|
+
AgentRunEventPage:
|
|
28757
|
+
type: object
|
|
28758
|
+
required: [items, nextSequence, hasMore, resyncRequired]
|
|
28759
|
+
properties:
|
|
28760
|
+
items:
|
|
28761
|
+
type: array
|
|
28762
|
+
items: { $ref: "#/components/schemas/WorkbenchStreamEvent" }
|
|
28763
|
+
nextSequence: { type: integer, minimum: 0 }
|
|
28764
|
+
hasMore: { type: boolean }
|
|
28765
|
+
resyncRequired: { type: boolean }
|
|
28766
|
+
additionalProperties: false
|
|
28767
|
+
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}
|
|
28768
|
+
WorkbenchMessageSearchPage: {"type":"object","required":["items"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkbenchMessageSearchHit"}},"nextCursor":{"type":"string","maxLength":512}},"additionalProperties":false}
|
|
28769
|
+
WorkbenchMessageSearchEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkbenchMessageSearchPage"}},"additionalProperties":false}
|
|
28770
|
+
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}
|
|
28771
|
+
WorkbenchMessageWindowEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkbenchMessageWindow"}},"additionalProperties":false}
|
|
28772
|
+
PersonalFeedSettings: {"type":"object","required":["instructions","searchTool","autoUpdate"],"properties":{"instructions":{"type":"string","maxLength":2000},"searchTool":{"type":"string","maxLength":256},"autoUpdate":{"type":"boolean"}},"additionalProperties":false}
|
|
28773
|
+
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}
|
|
28774
|
+
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}
|
|
28775
|
+
PersonalFeedSearchTool: {"type":"object","required":["name","title"],"properties":{"name":{"type":"string","maxLength":256},"title":{"type":"string","maxLength":256}},"additionalProperties":false}
|
|
28776
|
+
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}
|
|
28777
|
+
PersonalFeedEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PersonalFeedPage"}},"additionalProperties":false}
|
|
28778
|
+
PersonalFeedItemEnvelope: {"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/PersonalFeedItem"}},"additionalProperties":false}
|
|
28779
|
+
PersonalFeedFeedback: {"type":"object","required":[],"properties":{"liked":{"type":"boolean"},"hidden":{"type":"boolean"}},"additionalProperties":false}
|
|
26691
28780
|
WorkbenchContextSelection:
|
|
26692
|
-
description: Explicit references
|
|
28781
|
+
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.
|
|
26693
28782
|
type: object
|
|
26694
28783
|
properties:
|
|
28784
|
+
feedItemId: { type: string, minLength: 1, maxLength: 128, description: Owned personal feed post, reloaded and checked by the server before discussion. }
|
|
26695
28785
|
memoryIds:
|
|
26696
28786
|
type: array
|
|
26697
28787
|
maxItems: 20
|
|
@@ -26708,6 +28798,23 @@ components:
|
|
|
26708
28798
|
maxItems: 8
|
|
26709
28799
|
items:
|
|
26710
28800
|
$ref: "#/components/schemas/WorkbenchTextAttachment"
|
|
28801
|
+
images:
|
|
28802
|
+
type: array
|
|
28803
|
+
maxItems: 1
|
|
28804
|
+
items:
|
|
28805
|
+
$ref: "#/components/schemas/WorkbenchImageAttachment"
|
|
28806
|
+
additionalProperties: false
|
|
28807
|
+
WorkbenchImageAttachment:
|
|
28808
|
+
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.
|
|
28809
|
+
type: object
|
|
28810
|
+
required: [id, name, dataUrl]
|
|
28811
|
+
properties:
|
|
28812
|
+
id: { type: string, minLength: 1, maxLength: 128 }
|
|
28813
|
+
name: { type: string, minLength: 1, maxLength: 256 }
|
|
28814
|
+
dataUrl:
|
|
28815
|
+
type: string
|
|
28816
|
+
maxLength: 700000
|
|
28817
|
+
pattern: '^data:image/(png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$'
|
|
26711
28818
|
additionalProperties: false
|
|
26712
28819
|
WorkbenchContextReference:
|
|
26713
28820
|
type: object
|
|
@@ -26881,7 +28988,7 @@ components:
|
|
|
26881
28988
|
type: string
|
|
26882
28989
|
providerKind:
|
|
26883
28990
|
type: string
|
|
26884
|
-
enum: [internal, hermes, openclaw, general, openai, anthropic, openai-compatible, deepseek, qwen, openrouter, azure-openai, gemini, cohere]
|
|
28991
|
+
enum: [internal, native, hermes, openclaw, general, openai, anthropic, openai-compatible, deepseek, qwen, openrouter, azure-openai, gemini, cohere]
|
|
26885
28992
|
status:
|
|
26886
28993
|
type: string
|
|
26887
28994
|
enum: [queued, running, succeeded, failed, cancelled]
|
|
@@ -27023,6 +29130,7 @@ components:
|
|
|
27023
29130
|
role:
|
|
27024
29131
|
type: string
|
|
27025
29132
|
enum: [assistant]
|
|
29133
|
+
x-enum-varnames: [AgentRunCallbackWorkbenchMessageDeltaEventRoleAssistant]
|
|
27026
29134
|
contentDelta:
|
|
27027
29135
|
type: string
|
|
27028
29136
|
unevaluatedProperties: false
|
|
@@ -27038,6 +29146,7 @@ components:
|
|
|
27038
29146
|
role:
|
|
27039
29147
|
type: string
|
|
27040
29148
|
enum: [assistant]
|
|
29149
|
+
x-enum-varnames: [AgentRunCallbackWorkbenchMessageDeltaEventRoleAssistant]
|
|
27041
29150
|
content:
|
|
27042
29151
|
type: string
|
|
27043
29152
|
metadata:
|
|
@@ -32977,12 +35086,14 @@ components:
|
|
|
32977
35086
|
type: object
|
|
32978
35087
|
properties:
|
|
32979
35088
|
helm: { $ref: "#/components/schemas/HelmExecutionTaskPayload" }
|
|
35089
|
+
sshCommand: { $ref: "#/components/schemas/AgentSSHCommandRequest" }
|
|
32980
35090
|
additionalProperties: true
|
|
32981
35091
|
x-go-type: map[string]any
|
|
32982
35092
|
result:
|
|
32983
35093
|
type: object
|
|
32984
35094
|
properties:
|
|
32985
35095
|
helm: { $ref: "#/components/schemas/HelmExecutionTaskResult" }
|
|
35096
|
+
sshCommand: { $ref: "#/components/schemas/AgentSSHCommandResult" }
|
|
32986
35097
|
additionalProperties: true
|
|
32987
35098
|
x-go-type: map[string]any
|
|
32988
35099
|
x-go-type-skip-optional-pointer: true
|
|
@@ -33106,8 +35217,19 @@ components:
|
|
|
33106
35217
|
name: { type: string }
|
|
33107
35218
|
storage: { type: string }
|
|
33108
35219
|
bus: { type: string }
|
|
35220
|
+
serial:
|
|
35221
|
+
type: string
|
|
35222
|
+
minLength: 1
|
|
35223
|
+
maxLength: 20
|
|
35224
|
+
pattern: '^[A-Za-z0-9_-]+$'
|
|
35225
|
+
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.
|
|
33109
35226
|
sizeGiB: { type: integer, minimum: 1 }
|
|
33110
35227
|
add: { type: boolean }
|
|
35228
|
+
if: { required: [serial] }
|
|
35229
|
+
then:
|
|
35230
|
+
required: [add]
|
|
35231
|
+
properties:
|
|
35232
|
+
add: { const: true }
|
|
33111
35233
|
additionalProperties: false
|
|
33112
35234
|
VirtualMachineNetworkChange:
|
|
33113
35235
|
type: object
|
|
@@ -33206,10 +35328,298 @@ components:
|
|
|
33206
35328
|
poolRevision: { type: integer, minimum: 1 }
|
|
33207
35329
|
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
|
|
33208
35330
|
additionalProperties: false
|
|
35331
|
+
VirtualizationCapacityPolicyMode:
|
|
35332
|
+
type: string
|
|
35333
|
+
enum: [unconfigured, observing, enforced]
|
|
35334
|
+
x-enum-varnames: [CapacityPolicyUnconfigured, CapacityPolicyObserving, CapacityPolicyEnforced]
|
|
35335
|
+
VirtualizationOvercommitPolicy:
|
|
35336
|
+
type: object
|
|
35337
|
+
required: [enabled, percent]
|
|
35338
|
+
properties:
|
|
35339
|
+
enabled: { type: boolean }
|
|
35340
|
+
percent: { type: integer, minimum: 100, maximum: 800 }
|
|
35341
|
+
additionalProperties: false
|
|
35342
|
+
VirtualizationMemoryOvercommitPolicy:
|
|
35343
|
+
type: object
|
|
35344
|
+
required: [enabled, percent]
|
|
35345
|
+
properties:
|
|
35346
|
+
enabled: { type: boolean }
|
|
35347
|
+
percent: { type: integer, minimum: 100, maximum: 150 }
|
|
35348
|
+
additionalProperties: false
|
|
35349
|
+
VirtualizationCapacityPolicyInput:
|
|
35350
|
+
type: object
|
|
35351
|
+
required: [expectedRevision, mode, cpu, memory]
|
|
35352
|
+
properties:
|
|
35353
|
+
expectedRevision: { type: integer, minimum: 0 }
|
|
35354
|
+
physicalSourceId:
|
|
35355
|
+
type: string
|
|
35356
|
+
minLength: 1
|
|
35357
|
+
maxLength: 128
|
|
35358
|
+
pattern: "^[A-Za-z0-9][A-Za-z0-9._-]*$"
|
|
35359
|
+
description: Administrator-confirmed identity of one physical PVE source. All aliases must join this identity before admission. Ordinary VM callers cannot choose a source.
|
|
35360
|
+
mode: { type: string, enum: [observing, enforced], x-enum-varnames: [CapacityPolicyInputObserving, CapacityPolicyInputEnforced] }
|
|
35361
|
+
cpu: { $ref: "#/components/schemas/VirtualizationOvercommitPolicy" }
|
|
35362
|
+
memory: { $ref: "#/components/schemas/VirtualizationMemoryOvercommitPolicy" }
|
|
35363
|
+
additionalProperties: false
|
|
35364
|
+
VirtualizationCapacityPolicy:
|
|
35365
|
+
type: object
|
|
35366
|
+
required: [sourceId, revision, mode, cpu, memory]
|
|
35367
|
+
properties:
|
|
35368
|
+
sourceConfirmed: { type: boolean, description: New PVE sources use a strict 100 percent policy and cannot admit until an administrator confirms their physical source identity. }
|
|
35369
|
+
sourceId: { type: string }
|
|
35370
|
+
revision: { type: integer, minimum: 0 }
|
|
35371
|
+
mode: { $ref: "#/components/schemas/VirtualizationCapacityPolicyMode" }
|
|
35372
|
+
cpu: { $ref: "#/components/schemas/VirtualizationOvercommitPolicy" }
|
|
35373
|
+
memory: { $ref: "#/components/schemas/VirtualizationMemoryOvercommitPolicy" }
|
|
35374
|
+
updatedAt: { type: string, format: date-time }
|
|
35375
|
+
updatedBy: { type: string }
|
|
35376
|
+
additionalProperties: false
|
|
35377
|
+
VirtualizationCapacityPolicyEnvelope:
|
|
35378
|
+
type: object
|
|
35379
|
+
required: [data]
|
|
35380
|
+
properties:
|
|
35381
|
+
data: { $ref: "#/components/schemas/VirtualizationCapacityPolicy" }
|
|
35382
|
+
additionalProperties: false
|
|
35383
|
+
VirtualizationCapacityCheckDiagnostic:
|
|
35384
|
+
type: object
|
|
35385
|
+
required: [check, dimension, status, limit, committed, pending, demand, available, reason]
|
|
35386
|
+
properties:
|
|
35387
|
+
check: { type: string, enum: [budget, runtime, storage], x-enum-varnames: [VirtualizationCapacityCheckDiagnosticCheckBudget, VirtualizationCapacityCheckDiagnosticCheckRuntime, VirtualizationCapacityCheckDiagnosticCheckStorage] }
|
|
35388
|
+
dimension: { type: string, enum: [cpu, memory, disk], x-enum-varnames: [VirtualizationCapacityCheckDiagnosticDimensionCpu, VirtualizationCapacityCheckDiagnosticDimensionMemory, VirtualizationCapacityCheckDiagnosticDimensionDisk] }
|
|
35389
|
+
status: { type: string, enum: [available, unavailable, unknown], x-enum-varnames: [VirtualizationCapacityCheckDiagnosticStatusAvailable, VirtualizationCapacityCheckDiagnosticStatusUnavailable, VirtualizationCapacityCheckDiagnosticStatusUnknown] }
|
|
35390
|
+
limit: { type: integer, minimum: 0 }
|
|
35391
|
+
committed: { type: integer, minimum: 0 }
|
|
35392
|
+
pending: { type: integer, minimum: 0 }
|
|
35393
|
+
demand: { type: integer, minimum: 0 }
|
|
35394
|
+
available: { type: integer, minimum: 0 }
|
|
35395
|
+
reason: { type: string }
|
|
35396
|
+
additionalProperties: false
|
|
35397
|
+
VirtualizationCapacityNodeDiagnostic:
|
|
35398
|
+
type: object
|
|
35399
|
+
required: [node, checks]
|
|
35400
|
+
properties:
|
|
35401
|
+
node: { type: string }
|
|
35402
|
+
storage: { type: string }
|
|
35403
|
+
checks:
|
|
35404
|
+
type: array
|
|
35405
|
+
items: { $ref: "#/components/schemas/VirtualizationCapacityCheckDiagnostic" }
|
|
35406
|
+
additionalProperties: false
|
|
35407
|
+
SecretKind:
|
|
35408
|
+
type: string
|
|
35409
|
+
enum: [opaque, ssh_keypair, ssh_public_key, ssh_password]
|
|
35410
|
+
x-enum-varnames: [SecretKindOpaque, SecretKindSSHKeypair, SecretKindSSHPublicKey, SecretKindSSHPassword]
|
|
35411
|
+
SecretPurpose:
|
|
35412
|
+
type: string
|
|
35413
|
+
enum: [vm_cloud_init, vm_auth, vm_exec]
|
|
35414
|
+
x-enum-varnames: [SecretPurposeVMCloudInit, SecretPurposeVMAuth, SecretPurposeVMExec]
|
|
35415
|
+
SecretSSHPublicKey:
|
|
35416
|
+
type: object
|
|
35417
|
+
required: [authorizedKey, algorithm, fingerprint]
|
|
35418
|
+
properties:
|
|
35419
|
+
authorizedKey: { type: string, maxLength: 16384 }
|
|
35420
|
+
algorithm: { type: string }
|
|
35421
|
+
fingerprint: { type: string }
|
|
35422
|
+
additionalProperties: false
|
|
35423
|
+
SecretGenerateSSHKeyRequest:
|
|
35424
|
+
type: object
|
|
35425
|
+
required: [name, scopeType, scopeId, bindings]
|
|
35426
|
+
properties:
|
|
35427
|
+
name: { type: string, minLength: 1, maxLength: 128 }
|
|
35428
|
+
description: { type: string, maxLength: 1024 }
|
|
35429
|
+
scopeType: { $ref: "#/components/schemas/SecretScopeType" }
|
|
35430
|
+
scopeId: { type: string, minLength: 1, maxLength: 128 }
|
|
35431
|
+
bindings:
|
|
35432
|
+
type: array
|
|
35433
|
+
minItems: 1
|
|
35434
|
+
maxItems: 100
|
|
35435
|
+
items: { $ref: "#/components/schemas/SecretBinding" }
|
|
35436
|
+
additionalProperties: false
|
|
35437
|
+
VirtualMachineGuestAccessInput:
|
|
35438
|
+
type: object
|
|
35439
|
+
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.
|
|
35440
|
+
required: [username, publicKeyRefs]
|
|
35441
|
+
properties:
|
|
35442
|
+
username: { type: string, pattern: "^[a-z_][a-z0-9_-]{0,31}$" }
|
|
35443
|
+
publicKeyRefs:
|
|
35444
|
+
type: array
|
|
35445
|
+
minItems: 1
|
|
35446
|
+
maxItems: 16
|
|
35447
|
+
uniqueItems: true
|
|
35448
|
+
items: { type: string, pattern: "^soha://secrets/[A-Za-z0-9._-]+(?:/versions/[1-9][0-9]*)?$" }
|
|
35449
|
+
additionalProperties: false
|
|
35450
|
+
VirtualMachineAccessBindingInput:
|
|
35451
|
+
type: object
|
|
35452
|
+
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.
|
|
35453
|
+
required: [expectedRevision, username, port, address, credentialRef, executionClusterId, executionAgentId, trustedHostKey]
|
|
35454
|
+
properties:
|
|
35455
|
+
expectedRevision: { type: integer, minimum: 0 }
|
|
35456
|
+
username: { type: string, pattern: "^[a-z_][a-z0-9_-]{0,31}$" }
|
|
35457
|
+
port: { type: integer, minimum: 1, maximum: 65535 }
|
|
35458
|
+
address: { type: string, minLength: 1, maxLength: 253 }
|
|
35459
|
+
credentialRef: { type: string, pattern: "^soha://secrets/[A-Za-z0-9._-]+(?:/versions/[1-9][0-9]*)?$" }
|
|
35460
|
+
executionClusterId: { type: string, minLength: 1 }
|
|
35461
|
+
executionAgentId: { type: string, minLength: 1 }
|
|
35462
|
+
trustedHostKey: { type: string, minLength: 1, maxLength: 16384 }
|
|
35463
|
+
additionalProperties: false
|
|
35464
|
+
VirtualMachineAccessBinding:
|
|
35465
|
+
type: object
|
|
35466
|
+
required: [vmId, revision, providerVmId, sourceId, generation, username, port, address, credentialRef, executionClusterId, executionAgentId, hostKeyFingerprint, status]
|
|
35467
|
+
properties:
|
|
35468
|
+
vmId: { type: string }
|
|
35469
|
+
revision: { type: integer, minimum: 1 }
|
|
35470
|
+
providerVmId: { type: string }
|
|
35471
|
+
sourceId: { type: string }
|
|
35472
|
+
generation: { type: string }
|
|
35473
|
+
username: { type: string }
|
|
35474
|
+
port: { type: integer }
|
|
35475
|
+
address: { type: string }
|
|
35476
|
+
credentialRef: { type: string }
|
|
35477
|
+
executionClusterId: { type: string }
|
|
35478
|
+
executionAgentId: { type: string }
|
|
35479
|
+
hostKeyFingerprint: { type: string }
|
|
35480
|
+
status: { type: string, enum: [ready, unavailable, stale], x-enum-varnames: [VirtualMachineAccessBindingStatusReady, VirtualMachineAccessBindingStatusUnavailable, VirtualMachineAccessBindingStatusStale] }
|
|
35481
|
+
reason: { type: string }
|
|
35482
|
+
updatedAt: { type: string, format: date-time }
|
|
35483
|
+
additionalProperties: false
|
|
35484
|
+
VirtualMachineAccessBindingEnvelope:
|
|
35485
|
+
type: object
|
|
35486
|
+
required: [data]
|
|
35487
|
+
properties:
|
|
35488
|
+
data: { $ref: "#/components/schemas/VirtualMachineAccessBinding" }
|
|
35489
|
+
additionalProperties: false
|
|
35490
|
+
VirtualMachineSSHSessionInput:
|
|
35491
|
+
type: object
|
|
35492
|
+
required: [bindingRevision]
|
|
35493
|
+
properties:
|
|
35494
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
35495
|
+
cols: { type: integer, minimum: 1, maximum: 512, default: 80 }
|
|
35496
|
+
rows: { type: integer, minimum: 1, maximum: 512, default: 24 }
|
|
35497
|
+
additionalProperties: false
|
|
35498
|
+
VirtualMachineSSHSession:
|
|
35499
|
+
type: object
|
|
35500
|
+
required: [id, vmId, bindingRevision, status, expiresAt]
|
|
35501
|
+
properties:
|
|
35502
|
+
id: { type: string }
|
|
35503
|
+
vmId: { type: string }
|
|
35504
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
35505
|
+
status: { type: string, enum: [pending, active, closed, revoked, unknown], x-enum-varnames: [VirtualMachineSSHSessionStatusPending, VirtualMachineSSHSessionStatusActive, VirtualMachineSSHSessionStatusClosed, VirtualMachineSSHSessionStatusRevoked, VirtualMachineSSHSessionStatusUnknown] }
|
|
35506
|
+
expiresAt: { type: string, format: date-time }
|
|
35507
|
+
reason: { type: string }
|
|
35508
|
+
additionalProperties: false
|
|
35509
|
+
VirtualMachineSSHSessionEnvelope:
|
|
35510
|
+
type: object
|
|
35511
|
+
required: [data]
|
|
35512
|
+
properties:
|
|
35513
|
+
data: { $ref: "#/components/schemas/VirtualMachineSSHSession" }
|
|
35514
|
+
additionalProperties: false
|
|
35515
|
+
VirtualMachineSSHCommandInput:
|
|
35516
|
+
type: object
|
|
35517
|
+
required: [bindingRevision, command, idempotencyKey]
|
|
35518
|
+
properties:
|
|
35519
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
35520
|
+
command: { type: string, minLength: 1, maxLength: 16384, x-soha-sensitive: true }
|
|
35521
|
+
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
|
|
35522
|
+
timeoutSeconds: { type: integer, minimum: 1, maximum: 300, default: 60 }
|
|
35523
|
+
additionalProperties: false
|
|
35524
|
+
VirtualMachineSSHCommand:
|
|
35525
|
+
type: object
|
|
35526
|
+
required: [id, vmId, bindingRevision, status, outcome, terminal]
|
|
35527
|
+
properties:
|
|
35528
|
+
id: { type: string }
|
|
35529
|
+
vmId: { type: string }
|
|
35530
|
+
bindingRevision: { type: integer, minimum: 1 }
|
|
35531
|
+
status: { type: string }
|
|
35532
|
+
outcome: { type: string, enum: [unknown, succeeded, failed, canceled], x-enum-varnames: [VirtualMachineSSHCommandOutcomeUnknown, VirtualMachineSSHCommandOutcomeSucceeded, VirtualMachineSSHCommandOutcomeFailed, VirtualMachineSSHCommandOutcomeCanceled] }
|
|
35533
|
+
terminal: { type: boolean }
|
|
35534
|
+
exitCode: { type: integer, minimum: 0, maximum: 255, x-go-type-skip-optional-pointer: false }
|
|
35535
|
+
stdout: { type: string, maxLength: 1048576 }
|
|
35536
|
+
stderr: { type: string, maxLength: 1048576 }
|
|
35537
|
+
outputDigest: { type: string }
|
|
35538
|
+
outputTruncated: { type: boolean }
|
|
35539
|
+
finishedAt: { type: string, format: date-time }
|
|
35540
|
+
additionalProperties: false
|
|
35541
|
+
VirtualMachineSSHCommandEnvelope:
|
|
35542
|
+
type: object
|
|
35543
|
+
required: [data]
|
|
35544
|
+
properties:
|
|
35545
|
+
data: { $ref: "#/components/schemas/VirtualMachineSSHCommand" }
|
|
35546
|
+
additionalProperties: false
|
|
35547
|
+
AgentSSHCommandRequest:
|
|
35548
|
+
type: object
|
|
35549
|
+
required: [session, command, timeoutSeconds]
|
|
35550
|
+
properties:
|
|
35551
|
+
session: { $ref: "#/components/schemas/AgentSSHSessionRequest" }
|
|
35552
|
+
command: { type: string, minLength: 1, maxLength: 16384, x-soha-sensitive: true }
|
|
35553
|
+
timeoutSeconds: { type: integer, minimum: 1, maximum: 300 }
|
|
35554
|
+
additionalProperties: false
|
|
35555
|
+
AgentSSHCommandResult:
|
|
35556
|
+
type: object
|
|
35557
|
+
required: [sessionId, agentId, commandDigest, effect, stopped]
|
|
35558
|
+
properties:
|
|
35559
|
+
sessionId: { type: string }
|
|
35560
|
+
agentId: { type: string }
|
|
35561
|
+
commandDigest: { type: string }
|
|
35562
|
+
effect: { type: string, enum: [not_started, exited, unknown], x-enum-varnames: [AgentSSHCommandResultEffectNotStarted, AgentSSHCommandResultEffectExited, AgentSSHCommandResultEffectUnknown] }
|
|
35563
|
+
stopped: { type: boolean }
|
|
35564
|
+
exitCode: { type: integer, minimum: 0, maximum: 255, x-go-type-skip-optional-pointer: false }
|
|
35565
|
+
stdout: { type: string, maxLength: 1048576 }
|
|
35566
|
+
stderr: { type: string, maxLength: 1048576 }
|
|
35567
|
+
outputTruncated: { type: boolean }
|
|
35568
|
+
outputDigest: { type: string }
|
|
35569
|
+
additionalProperties: false
|
|
35570
|
+
VirtualMachineSSHFrame:
|
|
35571
|
+
type: object
|
|
35572
|
+
required: [type]
|
|
35573
|
+
properties:
|
|
35574
|
+
type: { type: string, enum: [input, resize, output, error, close], x-enum-varnames: [VirtualMachineSSHFrameTypeInput, VirtualMachineSSHFrameTypeResize, VirtualMachineSSHFrameTypeOutput, VirtualMachineSSHFrameTypeError, VirtualMachineSSHFrameTypeClose] }
|
|
35575
|
+
data: { type: string, maxLength: 87384 }
|
|
35576
|
+
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. }
|
|
35577
|
+
exitCode: { type: integer, minimum: 0, maximum: 255, x-go-type-skip-optional-pointer: false }
|
|
35578
|
+
cols: { type: integer, minimum: 1, maximum: 512 }
|
|
35579
|
+
rows: { type: integer, minimum: 1, maximum: 512 }
|
|
35580
|
+
message: { type: string, maxLength: 1024 }
|
|
35581
|
+
additionalProperties: false
|
|
35582
|
+
AgentSSHSessionRequest:
|
|
35583
|
+
type: object
|
|
35584
|
+
required: [sessionId, agentId, executionClusterId, address, port, username, trustedHostKey, credentialKind, lease, controlPlaneEndpoint, expiresAt, cols, rows]
|
|
35585
|
+
properties:
|
|
35586
|
+
sessionId: { type: string }
|
|
35587
|
+
agentId: { type: string }
|
|
35588
|
+
executionClusterId: { type: string, minLength: 1 }
|
|
35589
|
+
address: { type: string }
|
|
35590
|
+
port: { type: integer, minimum: 1, maximum: 65535 }
|
|
35591
|
+
username: { type: string }
|
|
35592
|
+
trustedHostKey: { type: string, maxLength: 16384 }
|
|
35593
|
+
credentialKind: { $ref: "#/components/schemas/SecretKind" }
|
|
35594
|
+
lease: { $ref: "#/components/schemas/SecretLeaseGrant" }
|
|
35595
|
+
controlPlaneEndpoint: { type: string, format: uri }
|
|
35596
|
+
expiresAt: { type: string, format: date-time }
|
|
35597
|
+
cols: { type: integer, minimum: 1, maximum: 512 }
|
|
35598
|
+
rows: { type: integer, minimum: 1, maximum: 512 }
|
|
35599
|
+
additionalProperties: false
|
|
35600
|
+
VMSSHCredentialRedemptionInput:
|
|
35601
|
+
type: object
|
|
35602
|
+
required: [clusterId, agentId, leaseId, token]
|
|
35603
|
+
properties:
|
|
35604
|
+
clusterId: { type: string, minLength: 1 }
|
|
35605
|
+
agentId: { type: string, minLength: 1 }
|
|
35606
|
+
leaseId: { type: string, minLength: 1 }
|
|
35607
|
+
token: { type: string, minLength: 16, maxLength: 256, writeOnly: true }
|
|
35608
|
+
additionalProperties: false
|
|
35609
|
+
AgentSSHCapability:
|
|
35610
|
+
type: object
|
|
35611
|
+
required: [agentId, protocolVersion, available]
|
|
35612
|
+
properties:
|
|
35613
|
+
agentId: { type: string }
|
|
35614
|
+
protocolVersion: { type: integer, const: 1 }
|
|
35615
|
+
available: { type: boolean }
|
|
35616
|
+
commandsAvailable: { type: boolean }
|
|
35617
|
+
additionalProperties: false
|
|
33209
35618
|
VirtualizationCapacityInput:
|
|
33210
35619
|
type: object
|
|
33211
35620
|
required: [connectionId, cpu, memoryMiB, diskGiB]
|
|
33212
35621
|
properties:
|
|
35622
|
+
startAfterCreate: { type: boolean, default: true, x-go-type-skip-optional-pointer: false }
|
|
33213
35623
|
connectionId: { type: string, minLength: 1 }
|
|
33214
35624
|
cpu: { type: integer, minimum: 1, maximum: 65536, description: Dedicated CPU cores for a running VM. }
|
|
33215
35625
|
memoryMiB: { type: integer, minimum: 1, maximum: 1099511627776, description: Guest memory in MiB; configured hypervisor overhead is added by the server. }
|
|
@@ -33224,6 +35634,12 @@ components:
|
|
|
33224
35634
|
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.
|
|
33225
35635
|
required: [connectionId, status, reason]
|
|
33226
35636
|
properties:
|
|
35637
|
+
sourceId: { type: string }
|
|
35638
|
+
policyRevision: { type: integer, minimum: 0 }
|
|
35639
|
+
policyMode: { $ref: "#/components/schemas/VirtualizationCapacityPolicyMode" }
|
|
35640
|
+
diagnostics:
|
|
35641
|
+
type: array
|
|
35642
|
+
items: { $ref: "#/components/schemas/VirtualizationCapacityNodeDiagnostic" }
|
|
33227
35643
|
connectionId: { type: string }
|
|
33228
35644
|
provider: { type: string }
|
|
33229
35645
|
status:
|
|
@@ -33247,12 +35663,13 @@ components:
|
|
|
33247
35663
|
type: object
|
|
33248
35664
|
required: [connectionId, name]
|
|
33249
35665
|
properties:
|
|
35666
|
+
guestAccess: { $ref: "#/components/schemas/VirtualMachineGuestAccessInput" }
|
|
33250
35667
|
connectionId: { type: string, minLength: 1 }
|
|
33251
35668
|
name: { type: string, minLength: 1 }
|
|
33252
35669
|
requireCapacity:
|
|
33253
35670
|
type: boolean
|
|
33254
35671
|
default: false
|
|
33255
|
-
description: Require fresh provider capacity and reserve node CPU, memory and storage atomically with this operation. Missing inventory or unsupported placement fails closed.
|
|
35672
|
+
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.
|
|
33256
35673
|
architecture: { type: string }
|
|
33257
35674
|
namespace: { type: string }
|
|
33258
35675
|
node: { type: string }
|
|
@@ -33260,7 +35677,7 @@ components:
|
|
|
33260
35677
|
memoryMiB: { type: integer, minimum: 1 }
|
|
33261
35678
|
bootImageId: { type: string }
|
|
33262
35679
|
imageId: { type: string }
|
|
33263
|
-
sourceMode: { type: string }
|
|
35680
|
+
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." }
|
|
33264
35681
|
sourceId: { type: string }
|
|
33265
35682
|
flavorId: { type: string }
|
|
33266
35683
|
diskGiB: { type: integer, minimum: 1 }
|
|
@@ -33523,6 +35940,9 @@ components:
|
|
|
33523
35940
|
cpu: { type: integer, minimum: 0 }
|
|
33524
35941
|
memoryMiB: { type: integer, minimum: 0 }
|
|
33525
35942
|
diskGiB: { type: integer, minimum: 0 }
|
|
35943
|
+
requireCapacity:
|
|
35944
|
+
type: boolean
|
|
35945
|
+
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.
|
|
33526
35946
|
disks:
|
|
33527
35947
|
type: array
|
|
33528
35948
|
maxItems: 64
|
|
@@ -33654,8 +36074,8 @@ components:
|
|
|
33654
36074
|
architecture: { type: string }
|
|
33655
36075
|
sizeBytes: { type: integer, format: int64, minimum: 0 }
|
|
33656
36076
|
sizeGiB: { type: integer, format: int64, minimum: 0 }
|
|
33657
|
-
sourceKind: { type: string }
|
|
33658
|
-
sourceRef: { type: string }
|
|
36077
|
+
sourceKind: { type: string, description: "PVE cloud_image declares an already staged QCOW2 import volume. cloudInitSupported must be explicitly true for managed guest initialization." }
|
|
36078
|
+
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." }
|
|
33659
36079
|
namespace: { type: string }
|
|
33660
36080
|
storageClass: { type: string }
|
|
33661
36081
|
url: { type: string }
|
|
@@ -33862,6 +36282,8 @@ components:
|
|
|
33862
36282
|
maxLength: 1048576
|
|
33863
36283
|
description: Sensitive bootstrap content. It is never returned by plan or audit responses.
|
|
33864
36284
|
x-soha-sensitive: true
|
|
36285
|
+
guestAccess:
|
|
36286
|
+
$ref: "#/components/schemas/VirtualMachineGuestAccessInput"
|
|
33865
36287
|
cpuCoreCount: { type: integer, minimum: 1 }
|
|
33866
36288
|
memoryBytes: { type: integer, minimum: 1 }
|
|
33867
36289
|
diskBytes: { type: integer, minimum: 1 }
|
|
@@ -34268,6 +36690,11 @@ components:
|
|
|
34268
36690
|
type: string
|
|
34269
36691
|
status:
|
|
34270
36692
|
type: string
|
|
36693
|
+
executionOwner: { type: string, enum: [native, external] }
|
|
36694
|
+
phase: { type: string }
|
|
36695
|
+
stopReason: { type: string }
|
|
36696
|
+
eventSequence: { type: integer, minimum: 0 }
|
|
36697
|
+
usageKnown: { type: boolean }
|
|
34271
36698
|
scope:
|
|
34272
36699
|
type: object
|
|
34273
36700
|
additionalProperties: true
|
|
@@ -41546,6 +43973,19 @@ components:
|
|
|
41546
43973
|
plan: { $ref: "#/components/schemas/CapabilityPlan" }
|
|
41547
43974
|
aiClientId: { type: string }
|
|
41548
43975
|
skillId: { type: string }
|
|
43976
|
+
scopeConstraints:
|
|
43977
|
+
type: array
|
|
43978
|
+
maxItems: 20
|
|
43979
|
+
uniqueItems: true
|
|
43980
|
+
description: Immutable exact target constraints for every resolved invocation, approval replay, status read and cancellation. These narrow scope and never grant permission.
|
|
43981
|
+
items: { $ref: "#/components/schemas/CapabilityScopeConstraint" }
|
|
43982
|
+
additionalProperties: false
|
|
43983
|
+
CapabilityScopeConstraint:
|
|
43984
|
+
type: object
|
|
43985
|
+
required: [dimension, value]
|
|
43986
|
+
properties:
|
|
43987
|
+
dimension: { type: string, minLength: 1, maxLength: 64, pattern: '^[A-Za-z][A-Za-z0-9_]{0,63}$' }
|
|
43988
|
+
value: { type: string, minLength: 1, maxLength: 512 }
|
|
41549
43989
|
additionalProperties: false
|
|
41550
43990
|
CapabilityTaskRevisionInput:
|
|
41551
43991
|
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.
|
|
@@ -41566,6 +44006,10 @@ components:
|
|
|
41566
44006
|
status: { type: string }
|
|
41567
44007
|
createdBy: { type: string }
|
|
41568
44008
|
plan: { $ref: "#/components/schemas/CapabilityPlan" }
|
|
44009
|
+
scopeConstraints:
|
|
44010
|
+
type: array
|
|
44011
|
+
maxItems: 20
|
|
44012
|
+
items: { $ref: "#/components/schemas/CapabilityScopeConstraint" }
|
|
41569
44013
|
nodes:
|
|
41570
44014
|
type: array
|
|
41571
44015
|
items: { $ref: "#/components/schemas/CapabilityTaskNode" }
|
|
@@ -41769,10 +44213,11 @@ components:
|
|
|
41769
44213
|
type: object
|
|
41770
44214
|
required: [targetType, targetRef]
|
|
41771
44215
|
properties:
|
|
44216
|
+
purpose: { $ref: "#/components/schemas/SecretPurpose" }
|
|
41772
44217
|
targetType:
|
|
41773
44218
|
type: string
|
|
41774
|
-
enum: [capability, project, connection]
|
|
41775
|
-
x-enum-varnames: [SecretBindingCapability, SecretBindingProject, SecretBindingConnection]
|
|
44219
|
+
enum: [capability, project, connection, vm, vm_create]
|
|
44220
|
+
x-enum-varnames: [SecretBindingCapability, SecretBindingProject, SecretBindingConnection, SecretBindingVM, SecretBindingVMCreate]
|
|
41776
44221
|
targetRef:
|
|
41777
44222
|
type: string
|
|
41778
44223
|
minLength: 1
|
|
@@ -41808,10 +44253,41 @@ components:
|
|
|
41808
44253
|
type: integer
|
|
41809
44254
|
minimum: 1
|
|
41810
44255
|
additionalProperties: false
|
|
44256
|
+
SecretReferenceUsage:
|
|
44257
|
+
type: object
|
|
44258
|
+
required: [targetId, usage, version, status]
|
|
44259
|
+
properties:
|
|
44260
|
+
targetId:
|
|
44261
|
+
type: string
|
|
44262
|
+
vmId:
|
|
44263
|
+
type: string
|
|
44264
|
+
usage:
|
|
44265
|
+
type: string
|
|
44266
|
+
description: login_binding, ssh_session or cloud_init_operation. Historical initialization does not assert that the guest still trusts this key.
|
|
44267
|
+
version:
|
|
44268
|
+
type: integer
|
|
44269
|
+
minimum: 1
|
|
44270
|
+
bindingRevision:
|
|
44271
|
+
type: integer
|
|
44272
|
+
minimum: 1
|
|
44273
|
+
status:
|
|
44274
|
+
type: string
|
|
44275
|
+
additionalProperties: false
|
|
44276
|
+
SecretReferenceUsageListEnvelope:
|
|
44277
|
+
type: object
|
|
44278
|
+
required: [items]
|
|
44279
|
+
properties:
|
|
44280
|
+
items:
|
|
44281
|
+
type: array
|
|
44282
|
+
items:
|
|
44283
|
+
$ref: "#/components/schemas/SecretReferenceUsage"
|
|
44284
|
+
additionalProperties: false
|
|
41811
44285
|
SecretMetadata:
|
|
41812
44286
|
type: object
|
|
41813
44287
|
required: [id, name, scopeType, scopeId, status, currentVersion, bindings, createdBy, createdAt, updatedAt]
|
|
41814
44288
|
properties:
|
|
44289
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
44290
|
+
publicKey: { $ref: "#/components/schemas/SecretSSHPublicKey" }
|
|
41815
44291
|
id:
|
|
41816
44292
|
type: string
|
|
41817
44293
|
name:
|
|
@@ -41852,6 +44328,8 @@ components:
|
|
|
41852
44328
|
else:
|
|
41853
44329
|
required: [vaultKv2]
|
|
41854
44330
|
properties:
|
|
44331
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
44332
|
+
sshPassphrase: { type: string, maxLength: 4096, writeOnly: true, x-soha-sensitive: true }
|
|
41855
44333
|
name:
|
|
41856
44334
|
type: string
|
|
41857
44335
|
minLength: 1
|
|
@@ -41908,6 +44386,7 @@ components:
|
|
|
41908
44386
|
else:
|
|
41909
44387
|
required: [vaultKv2]
|
|
41910
44388
|
properties:
|
|
44389
|
+
sshPassphrase: { type: string, maxLength: 4096, writeOnly: true, x-soha-sensitive: true }
|
|
41911
44390
|
value:
|
|
41912
44391
|
type: string
|
|
41913
44392
|
minLength: 1
|
|
@@ -41920,6 +44399,8 @@ components:
|
|
|
41920
44399
|
type: object
|
|
41921
44400
|
required: [secretId, version, status, createdBy, createdAt]
|
|
41922
44401
|
properties:
|
|
44402
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
44403
|
+
publicKey: { $ref: "#/components/schemas/SecretSSHPublicKey" }
|
|
41923
44404
|
secretId:
|
|
41924
44405
|
type: string
|
|
41925
44406
|
version:
|
|
@@ -42503,6 +44984,7 @@ components:
|
|
|
42503
44984
|
rateLimitProfileId:
|
|
42504
44985
|
type: string
|
|
42505
44986
|
metadata:
|
|
44987
|
+
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.
|
|
42506
44988
|
type: object
|
|
42507
44989
|
additionalProperties: true
|
|
42508
44990
|
createdAt:
|
|
@@ -42557,6 +45039,7 @@ components:
|
|
|
42557
45039
|
rateLimitProfileId:
|
|
42558
45040
|
type: string
|
|
42559
45041
|
metadata:
|
|
45042
|
+
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.
|
|
42560
45043
|
type: object
|
|
42561
45044
|
additionalProperties: true
|
|
42562
45045
|
additionalProperties: false
|