@opensoha/contracts 0.1.23 → 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 +3 -2
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/connectors/connector-action.schema.json +138 -0
- package/fixtures/json-schema/connector-action/invalid/empty-values.json +11 -0
- package/fixtures/json-schema/connector-action/invalid/invalid-expiry.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/lowercase-alias.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/unknown-entry-field.json +17 -0
- package/fixtures/json-schema/connector-action/invalid/unknown-frame-field.json +17 -0
- package/fixtures/json-schema/connector-action/invalid/unknown-version.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/unversioned-reference.json +16 -0
- package/fixtures/json-schema/connector-action/invalid/zero-version.json +16 -0
- package/fixtures/json-schema/connector-action/valid/pinned.json +16 -0
- package/fixtures/json-schema/connector-definition/invalid/credential-userinfo.json +8 -0
- package/fixtures/json-schema/connector-definition/invalid/reference-traversal.json +8 -0
- package/fixtures/json-schema/connector-definition/invalid/zero-version.json +8 -0
- package/fixtures/json-schema/connector-definition/valid/canonical.json +8 -0
- package/fixtures/json-schema/connector-definition/valid/pinned.json +8 -0
- package/fixtures/json-schema/personal-browser-network-request/invalid/bounded.json +4 -0
- package/fixtures/json-schema/personal-browser-network-request/valid/bounded.json +4 -0
- package/fixtures/json-schema/personal-browser-network-response/invalid/bounded.json +5 -0
- package/fixtures/json-schema/personal-browser-network-response/valid/bounded.json +5 -0
- package/fixtures/json-schema/personal-environment-export/invalid/extra.json +11 -0
- package/fixtures/json-schema/personal-environment-export/invalid/ownerId.json +10 -0
- package/fixtures/json-schema/personal-environment-export/invalid/sha256.json +10 -0
- package/fixtures/json-schema/personal-environment-export/invalid/sizeBytes.json +10 -0
- package/fixtures/json-schema/personal-environment-export/valid/complete.json +10 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/disk.json +11 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/network.json +11 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/node.json +12 -0
- package/fixtures/json-schema/personal-environment-preflight-request/invalid/owner.json +12 -0
- package/fixtures/json-schema/personal-environment-preflight-request/valid/bounded.json +11 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/disk.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/network.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/no-hard-quota.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/node.json +16 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/not-ready.json +15 -0
- package/fixtures/json-schema/personal-environment-preflight-result/invalid/owner.json +16 -0
- package/fixtures/json-schema/personal-environment-preflight-result/valid/bounded.json +15 -0
- package/fixtures/json-schema/personal-environment-request/invalid/delete-data-argv.json +24 -0
- package/fixtures/json-schema/personal-environment-request/invalid/delete-data-createData.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/delete-data-taskId.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/export-argv.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/export-createData.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/export-taskId.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/extra-command.json +24 -0
- package/fixtures/json-schema/personal-environment-request/invalid/host-workspace.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/image-injection.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/network-egress.json +21 -0
- package/fixtures/json-schema/personal-environment-request/invalid/no-command.json +21 -0
- package/fixtures/json-schema/personal-environment-request/invalid/recreate-on-release.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/relative-command.json +24 -0
- package/fixtures/json-schema/personal-environment-request/invalid/released-identity.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-empty.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-host-path.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-noncanonical.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-null.json +27 -0
- package/fixtures/json-schema/personal-environment-request/invalid/task-on-inspection.json +22 -0
- package/fixtures/json-schema/personal-environment-request/invalid/unbounded-quota.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/acquire.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/delete-data.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/execute.json +26 -0
- package/fixtures/json-schema/personal-environment-request/valid/export-data.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/inspect.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/provision.json +22 -0
- package/fixtures/json-schema/personal-environment-request/valid/release.json +21 -0
- package/fixtures/json-schema/personal-environment-request/valid/task-workspace.json +27 -0
- package/fixtures/json-schema/personal-environment-result/invalid/active-without-observation.json +7 -0
- package/fixtures/json-schema/personal-environment-result/invalid/deleted-output.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/deleted-snapshot.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/deleted-taskId.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/private-handle.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/stopped-fake-observation.json +20 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-empty.json +22 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-host-path.json +22 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-null.json +22 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-on-stopped.json +8 -0
- package/fixtures/json-schema/personal-environment-result/invalid/task-without-command-output.json +21 -0
- package/fixtures/json-schema/personal-environment-result/valid/active.json +21 -0
- package/fixtures/json-schema/personal-environment-result/valid/deleted.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/expired.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/missing.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/released.json +7 -0
- package/fixtures/json-schema/personal-environment-result/valid/task-workspace.json +22 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/host-path.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/invalid-policy.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/invalid-serial.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/legacy-version.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/missing-generation.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/missing-identity.json +16 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/missing-provider-identity.json +16 -0
- package/fixtures/json-schema/personal-guest-binding/invalid/raw-provider-identity.json +17 -0
- package/fixtures/json-schema/personal-guest-binding/valid/minimal.json +17 -0
- package/fixtures/json-schema/personal-guest-data-plan/invalid/quota.json +1 -0
- package/fixtures/json-schema/personal-guest-data-plan/valid/basic.json +1 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/capabilities.json +7 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/legacy-version.json +4 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/missing-identity.json +3 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/ownerId.json +5 -0
- package/fixtures/json-schema/personal-guest-enrollment/invalid/token.json +5 -0
- package/fixtures/json-schema/personal-guest-enrollment/valid/minimal.json +4 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/argv.json +11 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/legacy-version.json +8 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/missing-identity.json +7 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/owner.json +9 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/self-ready.json +9 -0
- package/fixtures/json-schema/personal-guest-heartbeat/invalid/zero-sequence.json +8 -0
- package/fixtures/json-schema/personal-guest-heartbeat/valid/minimal.json +8 -0
- package/fixtures/json-schema/personal-guest-provisioning/invalid/network.json +1 -0
- package/fixtures/json-schema/personal-guest-provisioning/valid/basic.json +1 -0
- package/fixtures/json-schema/personal-guest-renewal/invalid/unknown.json +1 -0
- package/fixtures/json-schema/personal-guest-renewal/valid/basic.json +1 -0
- package/fixtures/json-schema/personal-guest-runtime/invalid/minimal.json +45 -0
- package/fixtures/json-schema/personal-guest-runtime/valid/minimal.json +45 -0
- package/fixtures/json-schema/personal-guest-runtime-result/invalid/minimal.json +28 -0
- package/fixtures/json-schema/personal-guest-runtime-result/valid/minimal.json +27 -0
- package/fixtures/json-schema/personal-guest-tools/invalid/minimal.json +31 -0
- package/fixtures/json-schema/personal-guest-tools/valid/minimal.json +30 -0
- package/fixtures/json-schema/source-import-policy/invalid/case-variant-scope.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/case-variant-version.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/duplicate-grant.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/empty-id.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/future-version.json +4 -0
- package/fixtures/json-schema/source-import-policy/invalid/unknown-field.json +4 -0
- package/fixtures/json-schema/source-import-policy/valid/deny-all.json +4 -0
- package/fixtures/json-schema/source-import-policy/valid/shared.json +4 -0
- package/fixtures/json-schema/token-claims/invalid/authz-negative.json +23 -0
- package/fixtures/json-schema/token-claims/invalid/authz-string.json +23 -0
- package/fixtures/json-schema/token-claims/invalid/authz-zero.json +23 -0
- package/fixtures/json-schema/token-claims/valid/versioned-session.json +23 -0
- package/fixtures/openapi/AgentRunEventListEnvelope/invalid/basic.json +8 -0
- package/fixtures/openapi/AgentRunEventListEnvelope/valid/basic.json +8 -0
- package/fixtures/openapi/AgentRunEventListEnvelope/valid/native.json +1 -0
- package/fixtures/openapi/AgentRunResumeRequest/invalid/basic.json +3 -0
- package/fixtures/openapi/AgentRunResumeRequest/valid/basic.json +3 -0
- package/fixtures/openapi/AgentSSHCommandRequest/invalid/task51.json +24 -0
- package/fixtures/openapi/AgentSSHCommandRequest/valid/task51.json +23 -0
- package/fixtures/openapi/AgentSSHCommandResult/invalid/task51.json +8 -0
- package/fixtures/openapi/AgentSSHCommandResult/valid/task51.json +7 -0
- package/fixtures/openapi/AgentSSHSessionRequest/invalid/task51.json +20 -0
- package/fixtures/openapi/AgentSSHSessionRequest/valid/task51.json +19 -0
- package/fixtures/openapi/CapabilityTaskInput/invalid/duplicate-scope.json +36 -0
- package/fixtures/openapi/CapabilityTaskInput/valid/scoped.json +32 -0
- package/fixtures/openapi/DockerQuickCreateHostInput/invalid/guest-access.json +7 -0
- package/fixtures/openapi/DockerQuickCreateHostInput/valid/guest-access.json +9 -0
- package/fixtures/openapi/KnowledgeSourceDocument/invalid/tombstone-with-content.json +1 -0
- package/fixtures/openapi/KnowledgeSourceDocument/valid/tombstone.json +1 -0
- package/fixtures/openapi/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 +2195 -205
- package/gen/go/sohaapi/vm_disk_test.go +21 -0
- package/gen/ts/sohaapi/index.ts +3427 -485
- 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 +12645 -7451
- package/openapi/soha-api.yaml +1806 -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]
|
|
@@ -11244,6 +12098,32 @@ paths:
|
|
|
11244
12098
|
$ref: "#/components/responses/Error"
|
|
11245
12099
|
"404":
|
|
11246
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"
|
|
11247
12127
|
/secrets/{secretID}/versions:
|
|
11248
12128
|
get:
|
|
11249
12129
|
tags: [Secrets]
|
|
@@ -24417,9 +25297,13 @@ components:
|
|
|
24417
25297
|
name: { type: string, minLength: 1, maxLength: 160 }
|
|
24418
25298
|
kind: { type: string, enum: [inline, http, git, object] }
|
|
24419
25299
|
version: { type: string, maxLength: 64 }
|
|
24420
|
-
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."
|
|
24421
25304
|
config:
|
|
24422
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.
|
|
24423
25307
|
additionalProperties: true
|
|
24424
25308
|
syncPolicy: { $ref: "#/components/schemas/KnowledgeSyncPolicy" }
|
|
24425
25309
|
additionalProperties: false
|
|
@@ -24785,6 +25669,7 @@ components:
|
|
|
24785
25669
|
sourceType: { type: string, enum: [explicit_user, curated_extractor] }
|
|
24786
25670
|
sourceRefs:
|
|
24787
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.'
|
|
24788
25673
|
maxItems: 32
|
|
24789
25674
|
items: { type: string }
|
|
24790
25675
|
confidence: { type: number, minimum: 0, maximum: 1 }
|
|
@@ -25050,14 +25935,53 @@ components:
|
|
|
25050
25935
|
createdAt: { type: string, format: date-time }
|
|
25051
25936
|
updatedAt: { type: string, format: date-time }
|
|
25052
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
|
|
25053
25972
|
AIEnvironmentTemplateInput:
|
|
25054
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.
|
|
25055
25975
|
required: [id, name, backend, isolationMode]
|
|
25056
25976
|
properties:
|
|
25057
25977
|
id: { type: string, minLength: 1 }
|
|
25058
25978
|
name: { type: string, minLength: 1 }
|
|
25059
|
-
backend: { type: string, enum: [container, kubernetes] }
|
|
25979
|
+
backend: { type: string, enum: [container, kubernetes, vm] }
|
|
25060
25980
|
isolationMode: { type: string, enum: [read-only, disposable-write] }
|
|
25981
|
+
personalDocker:
|
|
25982
|
+
$ref: "#/components/schemas/PersonalDockerEnvironmentPolicy"
|
|
25983
|
+
personalVM:
|
|
25984
|
+
$ref: "#/components/schemas/PersonalVMEnvironmentPolicy"
|
|
25061
25985
|
resourcePolicy:
|
|
25062
25986
|
type: object
|
|
25063
25987
|
additionalProperties: true
|
|
@@ -25067,12 +25991,17 @@ components:
|
|
|
25067
25991
|
additionalProperties: false
|
|
25068
25992
|
AIEnvironmentTemplate:
|
|
25069
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.
|
|
25070
25995
|
required: [id, name, backend, isolationMode, status, createdAt, updatedAt]
|
|
25071
25996
|
properties:
|
|
25072
25997
|
id: { type: string, minLength: 1 }
|
|
25073
25998
|
name: { type: string, minLength: 1 }
|
|
25074
|
-
backend: { type: string, enum: [container, kubernetes] }
|
|
25999
|
+
backend: { type: string, enum: [container, kubernetes, vm] }
|
|
25075
26000
|
isolationMode: { type: string, enum: [read-only, disposable-write] }
|
|
26001
|
+
personalDocker:
|
|
26002
|
+
$ref: "#/components/schemas/PersonalDockerEnvironmentPolicy"
|
|
26003
|
+
personalVM:
|
|
26004
|
+
$ref: "#/components/schemas/PersonalVMEnvironmentPolicy"
|
|
25076
26005
|
resourcePolicy:
|
|
25077
26006
|
type: object
|
|
25078
26007
|
additionalProperties: true
|
|
@@ -25319,7 +26248,18 @@ components:
|
|
|
25319
26248
|
content: { type: string }
|
|
25320
26249
|
uri: { type: string }
|
|
25321
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.
|
|
25322
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 }
|
|
25323
26263
|
additionalProperties: false
|
|
25324
26264
|
KnowledgeDocument:
|
|
25325
26265
|
type: object
|
|
@@ -25417,6 +26357,9 @@ components:
|
|
|
25417
26357
|
uri: { type: string }
|
|
25418
26358
|
score: { type: number }
|
|
25419
26359
|
contentHash: { type: string }
|
|
26360
|
+
documentVersionId: { type: string }
|
|
26361
|
+
indexRevisionId: { type: string }
|
|
26362
|
+
retrievedAt: { type: string, format: date-time }
|
|
25420
26363
|
additionalProperties: false
|
|
25421
26364
|
KnowledgeSearchHit:
|
|
25422
26365
|
type: object
|
|
@@ -25447,6 +26390,8 @@ components:
|
|
|
25447
26390
|
timingMs: { type: integer, format: int64, minimum: 0 }
|
|
25448
26391
|
noAnswer: { type: boolean }
|
|
25449
26392
|
traceId: { type: string }
|
|
26393
|
+
retrievalMode: { type: string, enum: [lexical, hybrid] }
|
|
26394
|
+
degradationReason: { type: string }
|
|
25450
26395
|
additionalProperties: false
|
|
25451
26396
|
EvaluationDatasetSample:
|
|
25452
26397
|
type: object
|
|
@@ -26170,10 +27115,32 @@ components:
|
|
|
26170
27115
|
reasoningEfforts:
|
|
26171
27116
|
type: array
|
|
26172
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 }
|
|
26173
27135
|
additionalProperties: false
|
|
26174
27136
|
WorkbenchSessionMetadata:
|
|
26175
27137
|
type: object
|
|
26176
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.
|
|
26177
27144
|
modelPreferences:
|
|
26178
27145
|
$ref: "#/components/schemas/WorkbenchModelPreferences"
|
|
26179
27146
|
mode:
|
|
@@ -26220,6 +27187,340 @@ components:
|
|
|
26220
27187
|
createdAt: { type: string, format: date-time }
|
|
26221
27188
|
updatedAt: { type: string, format: date-time }
|
|
26222
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
|
|
26223
27524
|
WorkbenchCreateSessionRequest:
|
|
26224
27525
|
type: object
|
|
26225
27526
|
properties:
|
|
@@ -26274,9 +27575,11 @@ components:
|
|
|
26274
27575
|
role:
|
|
26275
27576
|
type: string
|
|
26276
27577
|
enum: [user, assistant, system]
|
|
27578
|
+
x-enum-varnames: [WorkbenchMessageRoleUser, WorkbenchMessageRoleAssistant, WorkbenchMessageRoleSystem]
|
|
26277
27579
|
content: { type: string }
|
|
26278
27580
|
metadata:
|
|
26279
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.
|
|
26280
27583
|
additionalProperties: {}
|
|
26281
27584
|
createdAt: { type: string, format: date-time }
|
|
26282
27585
|
additionalProperties: false
|
|
@@ -26886,6 +28189,11 @@ components:
|
|
|
26886
28189
|
rootCauseRunId: { type: string }
|
|
26887
28190
|
createdBy: { type: string }
|
|
26888
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 }
|
|
26889
28197
|
scope:
|
|
26890
28198
|
$ref: "#/components/schemas/WorkbenchSessionScope"
|
|
26891
28199
|
toolset:
|
|
@@ -27337,10 +28645,31 @@ components:
|
|
|
27337
28645
|
ok:
|
|
27338
28646
|
type: boolean
|
|
27339
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
|
|
27340
28660
|
WorkbenchSendMessageStreamRequest:
|
|
27341
28661
|
type: object
|
|
27342
28662
|
required: [content]
|
|
27343
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"
|
|
27344
28673
|
contextSelection:
|
|
27345
28674
|
$ref: "#/components/schemas/WorkbenchContextSelection"
|
|
27346
28675
|
knowledgeContext:
|
|
@@ -27377,10 +28706,82 @@ components:
|
|
|
27377
28706
|
type: object
|
|
27378
28707
|
additionalProperties: {}
|
|
27379
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}
|
|
27380
28780
|
WorkbenchContextSelection:
|
|
27381
|
-
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.
|
|
27382
28782
|
type: object
|
|
27383
28783
|
properties:
|
|
28784
|
+
feedItemId: { type: string, minLength: 1, maxLength: 128, description: Owned personal feed post, reloaded and checked by the server before discussion. }
|
|
27384
28785
|
memoryIds:
|
|
27385
28786
|
type: array
|
|
27386
28787
|
maxItems: 20
|
|
@@ -27397,6 +28798,23 @@ components:
|
|
|
27397
28798
|
maxItems: 8
|
|
27398
28799
|
items:
|
|
27399
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}$'
|
|
27400
28818
|
additionalProperties: false
|
|
27401
28819
|
WorkbenchContextReference:
|
|
27402
28820
|
type: object
|
|
@@ -27570,7 +28988,7 @@ components:
|
|
|
27570
28988
|
type: string
|
|
27571
28989
|
providerKind:
|
|
27572
28990
|
type: string
|
|
27573
|
-
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]
|
|
27574
28992
|
status:
|
|
27575
28993
|
type: string
|
|
27576
28994
|
enum: [queued, running, succeeded, failed, cancelled]
|
|
@@ -27712,6 +29130,7 @@ components:
|
|
|
27712
29130
|
role:
|
|
27713
29131
|
type: string
|
|
27714
29132
|
enum: [assistant]
|
|
29133
|
+
x-enum-varnames: [AgentRunCallbackWorkbenchMessageDeltaEventRoleAssistant]
|
|
27715
29134
|
contentDelta:
|
|
27716
29135
|
type: string
|
|
27717
29136
|
unevaluatedProperties: false
|
|
@@ -27727,6 +29146,7 @@ components:
|
|
|
27727
29146
|
role:
|
|
27728
29147
|
type: string
|
|
27729
29148
|
enum: [assistant]
|
|
29149
|
+
x-enum-varnames: [AgentRunCallbackWorkbenchMessageDeltaEventRoleAssistant]
|
|
27730
29150
|
content:
|
|
27731
29151
|
type: string
|
|
27732
29152
|
metadata:
|
|
@@ -33666,12 +35086,14 @@ components:
|
|
|
33666
35086
|
type: object
|
|
33667
35087
|
properties:
|
|
33668
35088
|
helm: { $ref: "#/components/schemas/HelmExecutionTaskPayload" }
|
|
35089
|
+
sshCommand: { $ref: "#/components/schemas/AgentSSHCommandRequest" }
|
|
33669
35090
|
additionalProperties: true
|
|
33670
35091
|
x-go-type: map[string]any
|
|
33671
35092
|
result:
|
|
33672
35093
|
type: object
|
|
33673
35094
|
properties:
|
|
33674
35095
|
helm: { $ref: "#/components/schemas/HelmExecutionTaskResult" }
|
|
35096
|
+
sshCommand: { $ref: "#/components/schemas/AgentSSHCommandResult" }
|
|
33675
35097
|
additionalProperties: true
|
|
33676
35098
|
x-go-type: map[string]any
|
|
33677
35099
|
x-go-type-skip-optional-pointer: true
|
|
@@ -33795,8 +35217,19 @@ components:
|
|
|
33795
35217
|
name: { type: string }
|
|
33796
35218
|
storage: { type: string }
|
|
33797
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.
|
|
33798
35226
|
sizeGiB: { type: integer, minimum: 1 }
|
|
33799
35227
|
add: { type: boolean }
|
|
35228
|
+
if: { required: [serial] }
|
|
35229
|
+
then:
|
|
35230
|
+
required: [add]
|
|
35231
|
+
properties:
|
|
35232
|
+
add: { const: true }
|
|
33800
35233
|
additionalProperties: false
|
|
33801
35234
|
VirtualMachineNetworkChange:
|
|
33802
35235
|
type: object
|
|
@@ -33895,10 +35328,298 @@ components:
|
|
|
33895
35328
|
poolRevision: { type: integer, minimum: 1 }
|
|
33896
35329
|
idempotencyKey: { type: string, minLength: 8, maxLength: 128 }
|
|
33897
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
|
|
33898
35618
|
VirtualizationCapacityInput:
|
|
33899
35619
|
type: object
|
|
33900
35620
|
required: [connectionId, cpu, memoryMiB, diskGiB]
|
|
33901
35621
|
properties:
|
|
35622
|
+
startAfterCreate: { type: boolean, default: true, x-go-type-skip-optional-pointer: false }
|
|
33902
35623
|
connectionId: { type: string, minLength: 1 }
|
|
33903
35624
|
cpu: { type: integer, minimum: 1, maximum: 65536, description: Dedicated CPU cores for a running VM. }
|
|
33904
35625
|
memoryMiB: { type: integer, minimum: 1, maximum: 1099511627776, description: Guest memory in MiB; configured hypervisor overhead is added by the server. }
|
|
@@ -33913,6 +35634,12 @@ components:
|
|
|
33913
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.
|
|
33914
35635
|
required: [connectionId, status, reason]
|
|
33915
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" }
|
|
33916
35643
|
connectionId: { type: string }
|
|
33917
35644
|
provider: { type: string }
|
|
33918
35645
|
status:
|
|
@@ -33936,12 +35663,13 @@ components:
|
|
|
33936
35663
|
type: object
|
|
33937
35664
|
required: [connectionId, name]
|
|
33938
35665
|
properties:
|
|
35666
|
+
guestAccess: { $ref: "#/components/schemas/VirtualMachineGuestAccessInput" }
|
|
33939
35667
|
connectionId: { type: string, minLength: 1 }
|
|
33940
35668
|
name: { type: string, minLength: 1 }
|
|
33941
35669
|
requireCapacity:
|
|
33942
35670
|
type: boolean
|
|
33943
35671
|
default: false
|
|
33944
|
-
description: Require fresh provider capacity and reserve node CPU, memory and storage atomically with this operation. Missing inventory or unsupported placement fails closed.
|
|
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.
|
|
33945
35673
|
architecture: { type: string }
|
|
33946
35674
|
namespace: { type: string }
|
|
33947
35675
|
node: { type: string }
|
|
@@ -33949,7 +35677,7 @@ components:
|
|
|
33949
35677
|
memoryMiB: { type: integer, minimum: 1 }
|
|
33950
35678
|
bootImageId: { type: string }
|
|
33951
35679
|
imageId: { type: string }
|
|
33952
|
-
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." }
|
|
33953
35681
|
sourceId: { type: string }
|
|
33954
35682
|
flavorId: { type: string }
|
|
33955
35683
|
diskGiB: { type: integer, minimum: 1 }
|
|
@@ -34212,6 +35940,9 @@ components:
|
|
|
34212
35940
|
cpu: { type: integer, minimum: 0 }
|
|
34213
35941
|
memoryMiB: { type: integer, minimum: 0 }
|
|
34214
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.
|
|
34215
35946
|
disks:
|
|
34216
35947
|
type: array
|
|
34217
35948
|
maxItems: 64
|
|
@@ -34343,8 +36074,8 @@ components:
|
|
|
34343
36074
|
architecture: { type: string }
|
|
34344
36075
|
sizeBytes: { type: integer, format: int64, minimum: 0 }
|
|
34345
36076
|
sizeGiB: { type: integer, format: int64, minimum: 0 }
|
|
34346
|
-
sourceKind: { type: string }
|
|
34347
|
-
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." }
|
|
34348
36079
|
namespace: { type: string }
|
|
34349
36080
|
storageClass: { type: string }
|
|
34350
36081
|
url: { type: string }
|
|
@@ -34551,6 +36282,8 @@ components:
|
|
|
34551
36282
|
maxLength: 1048576
|
|
34552
36283
|
description: Sensitive bootstrap content. It is never returned by plan or audit responses.
|
|
34553
36284
|
x-soha-sensitive: true
|
|
36285
|
+
guestAccess:
|
|
36286
|
+
$ref: "#/components/schemas/VirtualMachineGuestAccessInput"
|
|
34554
36287
|
cpuCoreCount: { type: integer, minimum: 1 }
|
|
34555
36288
|
memoryBytes: { type: integer, minimum: 1 }
|
|
34556
36289
|
diskBytes: { type: integer, minimum: 1 }
|
|
@@ -34957,6 +36690,11 @@ components:
|
|
|
34957
36690
|
type: string
|
|
34958
36691
|
status:
|
|
34959
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 }
|
|
34960
36698
|
scope:
|
|
34961
36699
|
type: object
|
|
34962
36700
|
additionalProperties: true
|
|
@@ -42235,6 +43973,19 @@ components:
|
|
|
42235
43973
|
plan: { $ref: "#/components/schemas/CapabilityPlan" }
|
|
42236
43974
|
aiClientId: { type: string }
|
|
42237
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 }
|
|
42238
43989
|
additionalProperties: false
|
|
42239
43990
|
CapabilityTaskRevisionInput:
|
|
42240
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.
|
|
@@ -42255,6 +44006,10 @@ components:
|
|
|
42255
44006
|
status: { type: string }
|
|
42256
44007
|
createdBy: { type: string }
|
|
42257
44008
|
plan: { $ref: "#/components/schemas/CapabilityPlan" }
|
|
44009
|
+
scopeConstraints:
|
|
44010
|
+
type: array
|
|
44011
|
+
maxItems: 20
|
|
44012
|
+
items: { $ref: "#/components/schemas/CapabilityScopeConstraint" }
|
|
42258
44013
|
nodes:
|
|
42259
44014
|
type: array
|
|
42260
44015
|
items: { $ref: "#/components/schemas/CapabilityTaskNode" }
|
|
@@ -42458,10 +44213,11 @@ components:
|
|
|
42458
44213
|
type: object
|
|
42459
44214
|
required: [targetType, targetRef]
|
|
42460
44215
|
properties:
|
|
44216
|
+
purpose: { $ref: "#/components/schemas/SecretPurpose" }
|
|
42461
44217
|
targetType:
|
|
42462
44218
|
type: string
|
|
42463
|
-
enum: [capability, project, connection]
|
|
42464
|
-
x-enum-varnames: [SecretBindingCapability, SecretBindingProject, SecretBindingConnection]
|
|
44219
|
+
enum: [capability, project, connection, vm, vm_create]
|
|
44220
|
+
x-enum-varnames: [SecretBindingCapability, SecretBindingProject, SecretBindingConnection, SecretBindingVM, SecretBindingVMCreate]
|
|
42465
44221
|
targetRef:
|
|
42466
44222
|
type: string
|
|
42467
44223
|
minLength: 1
|
|
@@ -42497,10 +44253,41 @@ components:
|
|
|
42497
44253
|
type: integer
|
|
42498
44254
|
minimum: 1
|
|
42499
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
|
|
42500
44285
|
SecretMetadata:
|
|
42501
44286
|
type: object
|
|
42502
44287
|
required: [id, name, scopeType, scopeId, status, currentVersion, bindings, createdBy, createdAt, updatedAt]
|
|
42503
44288
|
properties:
|
|
44289
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
44290
|
+
publicKey: { $ref: "#/components/schemas/SecretSSHPublicKey" }
|
|
42504
44291
|
id:
|
|
42505
44292
|
type: string
|
|
42506
44293
|
name:
|
|
@@ -42541,6 +44328,8 @@ components:
|
|
|
42541
44328
|
else:
|
|
42542
44329
|
required: [vaultKv2]
|
|
42543
44330
|
properties:
|
|
44331
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
44332
|
+
sshPassphrase: { type: string, maxLength: 4096, writeOnly: true, x-soha-sensitive: true }
|
|
42544
44333
|
name:
|
|
42545
44334
|
type: string
|
|
42546
44335
|
minLength: 1
|
|
@@ -42597,6 +44386,7 @@ components:
|
|
|
42597
44386
|
else:
|
|
42598
44387
|
required: [vaultKv2]
|
|
42599
44388
|
properties:
|
|
44389
|
+
sshPassphrase: { type: string, maxLength: 4096, writeOnly: true, x-soha-sensitive: true }
|
|
42600
44390
|
value:
|
|
42601
44391
|
type: string
|
|
42602
44392
|
minLength: 1
|
|
@@ -42609,6 +44399,8 @@ components:
|
|
|
42609
44399
|
type: object
|
|
42610
44400
|
required: [secretId, version, status, createdBy, createdAt]
|
|
42611
44401
|
properties:
|
|
44402
|
+
kind: { $ref: "#/components/schemas/SecretKind" }
|
|
44403
|
+
publicKey: { $ref: "#/components/schemas/SecretSSHPublicKey" }
|
|
42612
44404
|
secretId:
|
|
42613
44405
|
type: string
|
|
42614
44406
|
version:
|
|
@@ -43192,6 +44984,7 @@ components:
|
|
|
43192
44984
|
rateLimitProfileId:
|
|
43193
44985
|
type: string
|
|
43194
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.
|
|
43195
44988
|
type: object
|
|
43196
44989
|
additionalProperties: true
|
|
43197
44990
|
createdAt:
|
|
@@ -43246,6 +45039,7 @@ components:
|
|
|
43246
45039
|
rateLimitProfileId:
|
|
43247
45040
|
type: string
|
|
43248
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.
|
|
43249
45043
|
type: object
|
|
43250
45044
|
additionalProperties: true
|
|
43251
45045
|
additionalProperties: false
|