mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
client: regenerate from hanzoai/[email protected] (3.2.6)
The ai door composes, so hanzoai/ai's own contracts reach this client for the first time: 101 new model modules, 93 write operations that took an untyped bag now take a declared body, and the fleet document types 1428 of its 2463 operations. 2624 generated modules import clean.
This commit is contained in:
+2
-2
@@ -1,4 +1,4 @@
|
||||
ref=v1.801.498
|
||||
sha256=92086aff143fcce33bdaa37a558ecb6724d5c8fde8b137e9182c38c5118c4e1e
|
||||
ref=5a5552b2b0a8ecbc71b2a63da550e3e9d67fe557
|
||||
sha256=c2f0679bb0773dafc41e631cb6da1fb861e8f208c0be92008e89ca817320b0d8
|
||||
repo=hanzoai/cloud
|
||||
path=openapi.yaml
|
||||
|
||||
@@ -235,6 +235,7 @@ __all__ = [
|
||||
"ActionsView",
|
||||
"ActivationReq",
|
||||
"ActivationSet",
|
||||
"Activity",
|
||||
"ActivityFeed",
|
||||
"ActivityOut",
|
||||
"ActivityPoint",
|
||||
@@ -270,9 +271,9 @@ __all__ = [
|
||||
"AgentBinding",
|
||||
"AgentDetail",
|
||||
"AgentList",
|
||||
"AgentMcpTools",
|
||||
"AgentRunView",
|
||||
"AgentView",
|
||||
"AiEnvelope",
|
||||
"AiMCPApp",
|
||||
"AiMCPSurface",
|
||||
"AiMetrics",
|
||||
@@ -301,7 +302,10 @@ __all__ = [
|
||||
"ApiKeyList",
|
||||
"AppView",
|
||||
"Application",
|
||||
"ApplicationConfigOption",
|
||||
"ApplicationEvent",
|
||||
"ApplicationList",
|
||||
"ApplicationView",
|
||||
"ApplyRequest",
|
||||
"Approval",
|
||||
"ApprovePairingIn",
|
||||
@@ -333,6 +337,7 @@ __all__ = [
|
||||
"ArgoSyncWindows",
|
||||
"ArgoTree",
|
||||
"Arm",
|
||||
"Article",
|
||||
"Artifact",
|
||||
"ArtifactOut",
|
||||
"ArtifactsOut",
|
||||
@@ -340,6 +345,7 @@ __all__ = [
|
||||
"AskPostIn",
|
||||
"AskRequest",
|
||||
"AskResponse",
|
||||
"Asset",
|
||||
"Assignment",
|
||||
"Attempt",
|
||||
"AttributeRequest",
|
||||
@@ -347,6 +353,7 @@ __all__ = [
|
||||
"Audience",
|
||||
"AudienceList",
|
||||
"AudiencePreview",
|
||||
"Audit",
|
||||
"AuditList",
|
||||
"AuthorData",
|
||||
"AuthorProgramSummary",
|
||||
@@ -384,6 +391,7 @@ __all__ = [
|
||||
"BindingList",
|
||||
"Blob",
|
||||
"BlobJSON",
|
||||
"Block",
|
||||
"Blog",
|
||||
"Blueprint",
|
||||
"BlueprintCounts",
|
||||
@@ -497,6 +505,7 @@ __all__ = [
|
||||
"ChannelResult",
|
||||
"ChannelSpec",
|
||||
"ChannelView",
|
||||
"Chat",
|
||||
"ChatChannels",
|
||||
"ChatRequest",
|
||||
"ChatResponse",
|
||||
@@ -544,6 +553,7 @@ __all__ = [
|
||||
"ConnectIn",
|
||||
"ConnectOut",
|
||||
"ConnectRequest",
|
||||
"Connection",
|
||||
"ConnectionOut",
|
||||
"ConnectionView",
|
||||
"ConnectorAction",
|
||||
@@ -567,6 +577,7 @@ __all__ = [
|
||||
"ContactList",
|
||||
"ContactReq",
|
||||
"Contacts",
|
||||
"ContainerDetail",
|
||||
"ContextBundle",
|
||||
"ContextIn",
|
||||
"ControlCommandView",
|
||||
@@ -641,12 +652,14 @@ __all__ = [
|
||||
"Definition",
|
||||
"DefsOut",
|
||||
"DeletedOut",
|
||||
"Delivery",
|
||||
"DeliveryList",
|
||||
"DeliveryRow",
|
||||
"DeployLogs",
|
||||
"DeployRecord",
|
||||
"DeployReq",
|
||||
"DeployRequest",
|
||||
"DeploymentDetail",
|
||||
"DeploymentView",
|
||||
"DestinationDisconnected",
|
||||
"DestinationField",
|
||||
@@ -703,6 +716,8 @@ __all__ = [
|
||||
"EntitlementsView",
|
||||
"Entry",
|
||||
"EnvVarJSON",
|
||||
"EnvVariable",
|
||||
"Envelope",
|
||||
"EnvironmentBoard",
|
||||
"EnvironmentRow",
|
||||
"ErrorList",
|
||||
@@ -715,6 +730,7 @@ __all__ = [
|
||||
"Event",
|
||||
"EventList",
|
||||
"EventView",
|
||||
"ExampleQuestion",
|
||||
"Exception",
|
||||
"Experiment",
|
||||
"ExperimentList",
|
||||
@@ -722,6 +738,7 @@ __all__ = [
|
||||
"Extracted",
|
||||
"FetchQuery",
|
||||
"Figure",
|
||||
"File",
|
||||
"FileContent",
|
||||
"FileInput",
|
||||
"FileJSON",
|
||||
@@ -764,6 +781,8 @@ __all__ = [
|
||||
"FlowUpdate",
|
||||
"FlowVersion",
|
||||
"FnList",
|
||||
"Form",
|
||||
"FormItem",
|
||||
"Formation",
|
||||
"FormationView",
|
||||
"Founder",
|
||||
@@ -780,6 +799,30 @@ __all__ = [
|
||||
"GenerateRequest",
|
||||
"GenerateResult",
|
||||
"Genesis",
|
||||
"GetV1AiActivities200Response",
|
||||
"GetV1AiArticles200Response",
|
||||
"GetV1AiAssets200Response",
|
||||
"GetV1AiChats200Response",
|
||||
"GetV1AiDeployments200Response",
|
||||
"GetV1AiFiles200Response",
|
||||
"GetV1AiForms200Response",
|
||||
"GetV1AiGraphs200Response",
|
||||
"GetV1AiMessages200Response",
|
||||
"GetV1AiNodes200Response",
|
||||
"GetV1AiProviders200Response",
|
||||
"GetV1AiRecords200Response",
|
||||
"GetV1AiRemoteConnections200Response",
|
||||
"GetV1AiRoutes200Response",
|
||||
"GetV1AiScales200Response",
|
||||
"GetV1AiScans200Response",
|
||||
"GetV1AiSigninSessions200Response",
|
||||
"GetV1AiStores200Response",
|
||||
"GetV1AiTasks200Response",
|
||||
"GetV1AiTemplates200Response",
|
||||
"GetV1AiUsages200Response",
|
||||
"GetV1AiVectors200Response",
|
||||
"GetV1AiVideos200Response",
|
||||
"GetV1AiWorkflows200Response",
|
||||
"GitOpsApp",
|
||||
"GitOpsDeploy",
|
||||
"GitOpsOperation",
|
||||
@@ -790,6 +833,8 @@ __all__ = [
|
||||
"GithubBackfillResult",
|
||||
"GithubClaimIn",
|
||||
"GithubClaimOut",
|
||||
"GithubForkOut",
|
||||
"GithubForkReq",
|
||||
"GithubImportIn",
|
||||
"GithubImportOut",
|
||||
"GithubInstallationView",
|
||||
@@ -803,6 +848,9 @@ __all__ = [
|
||||
"GithubPagesView",
|
||||
"GithubRepoView",
|
||||
"GithubReposOut",
|
||||
"GithubSearchHit",
|
||||
"GithubSearchOut",
|
||||
"GithubSearchReq",
|
||||
"GpuAlertList",
|
||||
"GpuJob",
|
||||
"GpuList",
|
||||
@@ -813,6 +861,7 @@ __all__ = [
|
||||
"GrantResult",
|
||||
"GrantRow",
|
||||
"GrantsOut",
|
||||
"Graph",
|
||||
"GraphEdge",
|
||||
"GraphNode",
|
||||
"GraphOut",
|
||||
@@ -980,6 +1029,8 @@ __all__ = [
|
||||
"InvoicesOut",
|
||||
"InvokeReq",
|
||||
"IssueEdit",
|
||||
"IssueHit",
|
||||
"IssueHits",
|
||||
"IssueRequest",
|
||||
"IssueResponse",
|
||||
"IssueView",
|
||||
@@ -1011,6 +1062,7 @@ __all__ = [
|
||||
"KycStartOut",
|
||||
"LLM",
|
||||
"LLMOverview",
|
||||
"Label",
|
||||
"LastEventView",
|
||||
"LatencyStat",
|
||||
"LbList",
|
||||
@@ -1047,6 +1099,7 @@ __all__ = [
|
||||
"MCPPackage",
|
||||
"MCPRemote",
|
||||
"MCPServer",
|
||||
"Machine",
|
||||
"MachineList",
|
||||
"MachineView",
|
||||
"MakeIn",
|
||||
@@ -1081,8 +1134,11 @@ __all__ = [
|
||||
"MlResource",
|
||||
"MlResourceList",
|
||||
"ModelField",
|
||||
"ModelRoute",
|
||||
"ModelRow",
|
||||
"ModelSearchResult",
|
||||
"ModelStat",
|
||||
"ModelToolCall",
|
||||
"ModuleInfo",
|
||||
"ModuleList",
|
||||
"ModuleState",
|
||||
@@ -1926,6 +1982,7 @@ __all__ = [
|
||||
"OverviewData",
|
||||
"OverviewOut",
|
||||
"OverviewView",
|
||||
"Page",
|
||||
"PagesBuildConfig",
|
||||
"PagesD1Binding",
|
||||
"PagesDeploy",
|
||||
@@ -1939,6 +1996,7 @@ __all__ = [
|
||||
"PairingApproved",
|
||||
"PairingQueue",
|
||||
"PairingView",
|
||||
"Patch",
|
||||
"PatchApplicationIn",
|
||||
"PatchFlowIn",
|
||||
"PatchIn",
|
||||
@@ -1985,6 +2043,29 @@ __all__ = [
|
||||
"PopulatedFlow",
|
||||
"Position",
|
||||
"PostList",
|
||||
"PostV1AiArticles200Response",
|
||||
"PostV1AiAssets200Response",
|
||||
"PostV1AiChats200Response",
|
||||
"PostV1AiDeployments200Response",
|
||||
"PostV1AiFiles200Response",
|
||||
"PostV1AiForms200Response",
|
||||
"PostV1AiGraphs200Response",
|
||||
"PostV1AiMessages200Response",
|
||||
"PostV1AiNodes200Response",
|
||||
"PostV1AiProviders200Response",
|
||||
"PostV1AiRecords200Response",
|
||||
"PostV1AiRemoteConnections200Response",
|
||||
"PostV1AiRoutes200Response",
|
||||
"PostV1AiScales200Response",
|
||||
"PostV1AiScans200Response",
|
||||
"PostV1AiSigninSessions200Response",
|
||||
"PostV1AiStores200Response",
|
||||
"PostV1AiTasks200Response",
|
||||
"PostV1AiTemplates200Response",
|
||||
"PostV1AiTreeFiles200Response",
|
||||
"PostV1AiVectors200Response",
|
||||
"PostV1AiVideos200Response",
|
||||
"PostV1AiWorkflows200Response",
|
||||
"PostV1EventRequest",
|
||||
"Posting",
|
||||
"PrefsView",
|
||||
@@ -2045,6 +2126,8 @@ __all__ = [
|
||||
"PromptMeta",
|
||||
"PromptReq",
|
||||
"PropSpec",
|
||||
"Properties",
|
||||
"Provider",
|
||||
"ProviderBreakdown",
|
||||
"ProviderCard",
|
||||
"ProviderCredit",
|
||||
@@ -2137,7 +2220,9 @@ __all__ = [
|
||||
"ReleaseRow",
|
||||
"ReleaseState",
|
||||
"ReloadIn",
|
||||
"Remark",
|
||||
"Remittance",
|
||||
"RemoteApp",
|
||||
"RenewReq",
|
||||
"RenewResult",
|
||||
"ReplaceKitIn",
|
||||
@@ -2154,6 +2239,8 @@ __all__ = [
|
||||
"ResearchTotals",
|
||||
"ResolveReferenceIn",
|
||||
"ResolveReferenceOut",
|
||||
"ResourceMetrics",
|
||||
"ResourceRequests",
|
||||
"ResourceUsage",
|
||||
"RestartRef",
|
||||
"Restarted",
|
||||
@@ -2271,6 +2358,7 @@ __all__ = [
|
||||
"SbomHealth",
|
||||
"SbomIngest",
|
||||
"SbomIngested",
|
||||
"Scale",
|
||||
"ScaleIn",
|
||||
"Scan",
|
||||
"ScanDetail",
|
||||
@@ -2308,13 +2396,16 @@ __all__ = [
|
||||
"SeriesLine",
|
||||
"SeriesPoint",
|
||||
"Service",
|
||||
"ServiceDetail",
|
||||
"ServiceInput",
|
||||
"ServiceList",
|
||||
"ServiceModeIn",
|
||||
"ServiceOne",
|
||||
"ServiceOut",
|
||||
"ServicePort",
|
||||
"ServiceView",
|
||||
"ServicesOut",
|
||||
"Session",
|
||||
"SessionDetail",
|
||||
"SessionList",
|
||||
"SessionUser",
|
||||
@@ -2376,6 +2467,7 @@ __all__ = [
|
||||
"StorageFleet",
|
||||
"StorageSnapshot",
|
||||
"StorageVolume",
|
||||
"Store",
|
||||
"StorefrontResult",
|
||||
"Strategy",
|
||||
"StrategyView",
|
||||
@@ -2431,8 +2523,10 @@ __all__ = [
|
||||
"TargetList",
|
||||
"TargetReq",
|
||||
"TargetView",
|
||||
"Task",
|
||||
"Template",
|
||||
"TemplateCatalog",
|
||||
"TemplateConfigOption",
|
||||
"TemplateOverride",
|
||||
"TemplateReply",
|
||||
"TemplateView",
|
||||
@@ -2460,6 +2554,7 @@ __all__ = [
|
||||
"TreasuryReport",
|
||||
"TreeEntry",
|
||||
"TreeEntryJSON",
|
||||
"TreeFile",
|
||||
"TreeJSON",
|
||||
"TreeNode",
|
||||
"Trial",
|
||||
@@ -2475,6 +2570,7 @@ __all__ = [
|
||||
"UpdateAgentIn",
|
||||
"UpdateCampaignIn",
|
||||
"UpdateEndpointIn",
|
||||
"Upstream",
|
||||
"Usage",
|
||||
"UsageAnalyticsAccess",
|
||||
"UsageAnalyticsGrant",
|
||||
@@ -2499,8 +2595,10 @@ __all__ = [
|
||||
"ValidatorClaim",
|
||||
"ValidatorList",
|
||||
"Variant",
|
||||
"Vector",
|
||||
"VectorCollection",
|
||||
"VectorCollectionList",
|
||||
"VectorScore",
|
||||
"VectorStats",
|
||||
"Vendor",
|
||||
"VendorRow",
|
||||
@@ -2517,6 +2615,7 @@ __all__ = [
|
||||
"VersionMeta",
|
||||
"VersionPage",
|
||||
"VersionView",
|
||||
"Video",
|
||||
"Volume",
|
||||
"VolumeIn",
|
||||
"VolumeSnapshotOut",
|
||||
@@ -2539,6 +2638,7 @@ __all__ = [
|
||||
"Wire",
|
||||
"WorkerList",
|
||||
"WorkerScriptPut",
|
||||
"Workflow",
|
||||
"WorldIndex",
|
||||
"WorldWire",
|
||||
"WriteIn",
|
||||
@@ -2768,6 +2868,7 @@ from hanzoai.cloud.models.action_record import ActionRecord as ActionRecord
|
||||
from hanzoai.cloud.models.actions_view import ActionsView as ActionsView
|
||||
from hanzoai.cloud.models.activation_req import ActivationReq as ActivationReq
|
||||
from hanzoai.cloud.models.activation_set import ActivationSet as ActivationSet
|
||||
from hanzoai.cloud.models.activity import Activity as Activity
|
||||
from hanzoai.cloud.models.activity_feed import ActivityFeed as ActivityFeed
|
||||
from hanzoai.cloud.models.activity_out import ActivityOut as ActivityOut
|
||||
from hanzoai.cloud.models.activity_point import ActivityPoint as ActivityPoint
|
||||
@@ -2803,9 +2904,9 @@ from hanzoai.cloud.models.affiliate_standing import AffiliateStanding as Affilia
|
||||
from hanzoai.cloud.models.agent_binding import AgentBinding as AgentBinding
|
||||
from hanzoai.cloud.models.agent_detail import AgentDetail as AgentDetail
|
||||
from hanzoai.cloud.models.agent_list import AgentList as AgentList
|
||||
from hanzoai.cloud.models.agent_mcp_tools import AgentMcpTools as AgentMcpTools
|
||||
from hanzoai.cloud.models.agent_run_view import AgentRunView as AgentRunView
|
||||
from hanzoai.cloud.models.agent_view import AgentView as AgentView
|
||||
from hanzoai.cloud.models.ai_envelope import AiEnvelope as AiEnvelope
|
||||
from hanzoai.cloud.models.ai_mcp_app import AiMCPApp as AiMCPApp
|
||||
from hanzoai.cloud.models.ai_mcp_surface import AiMCPSurface as AiMCPSurface
|
||||
from hanzoai.cloud.models.ai_metrics import AiMetrics as AiMetrics
|
||||
@@ -2834,7 +2935,10 @@ from hanzoai.cloud.models.api_key import ApiKey as ApiKey
|
||||
from hanzoai.cloud.models.api_key_list import ApiKeyList as ApiKeyList
|
||||
from hanzoai.cloud.models.app_view import AppView as AppView
|
||||
from hanzoai.cloud.models.application import Application as Application
|
||||
from hanzoai.cloud.models.application_config_option import ApplicationConfigOption as ApplicationConfigOption
|
||||
from hanzoai.cloud.models.application_event import ApplicationEvent as ApplicationEvent
|
||||
from hanzoai.cloud.models.application_list import ApplicationList as ApplicationList
|
||||
from hanzoai.cloud.models.application_view import ApplicationView as ApplicationView
|
||||
from hanzoai.cloud.models.apply_request import ApplyRequest as ApplyRequest
|
||||
from hanzoai.cloud.models.approval import Approval as Approval
|
||||
from hanzoai.cloud.models.approve_pairing_in import ApprovePairingIn as ApprovePairingIn
|
||||
@@ -2866,6 +2970,7 @@ from hanzoai.cloud.models.argo_sync_status import ArgoSyncStatus as ArgoSyncStat
|
||||
from hanzoai.cloud.models.argo_sync_windows import ArgoSyncWindows as ArgoSyncWindows
|
||||
from hanzoai.cloud.models.argo_tree import ArgoTree as ArgoTree
|
||||
from hanzoai.cloud.models.arm import Arm as Arm
|
||||
from hanzoai.cloud.models.article import Article as Article
|
||||
from hanzoai.cloud.models.artifact import Artifact as Artifact
|
||||
from hanzoai.cloud.models.artifact_out import ArtifactOut as ArtifactOut
|
||||
from hanzoai.cloud.models.artifacts_out import ArtifactsOut as ArtifactsOut
|
||||
@@ -2873,6 +2978,7 @@ from hanzoai.cloud.models.ask_answer import AskAnswer as AskAnswer
|
||||
from hanzoai.cloud.models.ask_post_in import AskPostIn as AskPostIn
|
||||
from hanzoai.cloud.models.ask_request import AskRequest as AskRequest
|
||||
from hanzoai.cloud.models.ask_response import AskResponse as AskResponse
|
||||
from hanzoai.cloud.models.asset import Asset as Asset
|
||||
from hanzoai.cloud.models.assignment import Assignment as Assignment
|
||||
from hanzoai.cloud.models.attempt import Attempt as Attempt
|
||||
from hanzoai.cloud.models.attribute_request import AttributeRequest as AttributeRequest
|
||||
@@ -2880,6 +2986,7 @@ from hanzoai.cloud.models.attribution import Attribution as Attribution
|
||||
from hanzoai.cloud.models.audience import Audience as Audience
|
||||
from hanzoai.cloud.models.audience_list import AudienceList as AudienceList
|
||||
from hanzoai.cloud.models.audience_preview import AudiencePreview as AudiencePreview
|
||||
from hanzoai.cloud.models.audit import Audit as Audit
|
||||
from hanzoai.cloud.models.audit_list import AuditList as AuditList
|
||||
from hanzoai.cloud.models.author_data import AuthorData as AuthorData
|
||||
from hanzoai.cloud.models.author_program_summary import AuthorProgramSummary as AuthorProgramSummary
|
||||
@@ -2917,6 +3024,7 @@ from hanzoai.cloud.models.bind_agent_req import BindAgentReq as BindAgentReq
|
||||
from hanzoai.cloud.models.binding_list import BindingList as BindingList
|
||||
from hanzoai.cloud.models.blob import Blob as Blob
|
||||
from hanzoai.cloud.models.blob_json import BlobJSON as BlobJSON
|
||||
from hanzoai.cloud.models.block import Block as Block
|
||||
from hanzoai.cloud.models.blog import Blog as Blog
|
||||
from hanzoai.cloud.models.blueprint import Blueprint as Blueprint
|
||||
from hanzoai.cloud.models.blueprint_counts import BlueprintCounts as BlueprintCounts
|
||||
@@ -3030,6 +3138,7 @@ from hanzoai.cloud.models.channel_metric import ChannelMetric as ChannelMetric
|
||||
from hanzoai.cloud.models.channel_result import ChannelResult as ChannelResult
|
||||
from hanzoai.cloud.models.channel_spec import ChannelSpec as ChannelSpec
|
||||
from hanzoai.cloud.models.channel_view import ChannelView as ChannelView
|
||||
from hanzoai.cloud.models.chat import Chat as Chat
|
||||
from hanzoai.cloud.models.chat_channels import ChatChannels as ChatChannels
|
||||
from hanzoai.cloud.models.chat_request import ChatRequest as ChatRequest
|
||||
from hanzoai.cloud.models.chat_response import ChatResponse as ChatResponse
|
||||
@@ -3077,6 +3186,7 @@ from hanzoai.cloud.models.conn_view import ConnView as ConnView
|
||||
from hanzoai.cloud.models.connect_in import ConnectIn as ConnectIn
|
||||
from hanzoai.cloud.models.connect_out import ConnectOut as ConnectOut
|
||||
from hanzoai.cloud.models.connect_request import ConnectRequest as ConnectRequest
|
||||
from hanzoai.cloud.models.connection import Connection as Connection
|
||||
from hanzoai.cloud.models.connection_out import ConnectionOut as ConnectionOut
|
||||
from hanzoai.cloud.models.connection_view import ConnectionView as ConnectionView
|
||||
from hanzoai.cloud.models.connector_action import ConnectorAction as ConnectorAction
|
||||
@@ -3100,6 +3210,7 @@ from hanzoai.cloud.models.contact import Contact as Contact
|
||||
from hanzoai.cloud.models.contact_list import ContactList as ContactList
|
||||
from hanzoai.cloud.models.contact_req import ContactReq as ContactReq
|
||||
from hanzoai.cloud.models.contacts import Contacts as Contacts
|
||||
from hanzoai.cloud.models.container_detail import ContainerDetail as ContainerDetail
|
||||
from hanzoai.cloud.models.context_bundle import ContextBundle as ContextBundle
|
||||
from hanzoai.cloud.models.context_in import ContextIn as ContextIn
|
||||
from hanzoai.cloud.models.control_command_view import ControlCommandView as ControlCommandView
|
||||
@@ -3174,12 +3285,14 @@ from hanzoai.cloud.models.def_row import DefRow as DefRow
|
||||
from hanzoai.cloud.models.definition import Definition as Definition
|
||||
from hanzoai.cloud.models.defs_out import DefsOut as DefsOut
|
||||
from hanzoai.cloud.models.deleted_out import DeletedOut as DeletedOut
|
||||
from hanzoai.cloud.models.delivery import Delivery as Delivery
|
||||
from hanzoai.cloud.models.delivery_list import DeliveryList as DeliveryList
|
||||
from hanzoai.cloud.models.delivery_row import DeliveryRow as DeliveryRow
|
||||
from hanzoai.cloud.models.deploy_logs import DeployLogs as DeployLogs
|
||||
from hanzoai.cloud.models.deploy_record import DeployRecord as DeployRecord
|
||||
from hanzoai.cloud.models.deploy_req import DeployReq as DeployReq
|
||||
from hanzoai.cloud.models.deploy_request import DeployRequest as DeployRequest
|
||||
from hanzoai.cloud.models.deployment_detail import DeploymentDetail as DeploymentDetail
|
||||
from hanzoai.cloud.models.deployment_view import DeploymentView as DeploymentView
|
||||
from hanzoai.cloud.models.destination_disconnected import DestinationDisconnected as DestinationDisconnected
|
||||
from hanzoai.cloud.models.destination_field import DestinationField as DestinationField
|
||||
@@ -3236,6 +3349,8 @@ from hanzoai.cloud.models.enrolment import Enrolment as Enrolment
|
||||
from hanzoai.cloud.models.entitlements_view import EntitlementsView as EntitlementsView
|
||||
from hanzoai.cloud.models.entry import Entry as Entry
|
||||
from hanzoai.cloud.models.env_var_json import EnvVarJSON as EnvVarJSON
|
||||
from hanzoai.cloud.models.env_variable import EnvVariable as EnvVariable
|
||||
from hanzoai.cloud.models.envelope import Envelope as Envelope
|
||||
from hanzoai.cloud.models.environment_board import EnvironmentBoard as EnvironmentBoard
|
||||
from hanzoai.cloud.models.environment_row import EnvironmentRow as EnvironmentRow
|
||||
from hanzoai.cloud.models.error_list import ErrorList as ErrorList
|
||||
@@ -3248,6 +3363,7 @@ from hanzoai.cloud.models.evaluator_view import EvaluatorView as EvaluatorView
|
||||
from hanzoai.cloud.models.event import Event as Event
|
||||
from hanzoai.cloud.models.event_list import EventList as EventList
|
||||
from hanzoai.cloud.models.event_view import EventView as EventView
|
||||
from hanzoai.cloud.models.example_question import ExampleQuestion as ExampleQuestion
|
||||
from hanzoai.cloud.models.exception import Exception as Exception
|
||||
from hanzoai.cloud.models.experiment import Experiment as Experiment
|
||||
from hanzoai.cloud.models.experiment_list import ExperimentList as ExperimentList
|
||||
@@ -3255,6 +3371,7 @@ from hanzoai.cloud.models.experiments_out import ExperimentsOut as ExperimentsOu
|
||||
from hanzoai.cloud.models.extracted import Extracted as Extracted
|
||||
from hanzoai.cloud.models.fetch_query import FetchQuery as FetchQuery
|
||||
from hanzoai.cloud.models.figure import Figure as Figure
|
||||
from hanzoai.cloud.models.file import File as File
|
||||
from hanzoai.cloud.models.file_content import FileContent as FileContent
|
||||
from hanzoai.cloud.models.file_input import FileInput as FileInput
|
||||
from hanzoai.cloud.models.file_json import FileJSON as FileJSON
|
||||
@@ -3297,6 +3414,8 @@ from hanzoai.cloud.models.flow_trigger import FlowTrigger as FlowTrigger
|
||||
from hanzoai.cloud.models.flow_update import FlowUpdate as FlowUpdate
|
||||
from hanzoai.cloud.models.flow_version import FlowVersion as FlowVersion
|
||||
from hanzoai.cloud.models.fn_list import FnList as FnList
|
||||
from hanzoai.cloud.models.form import Form as Form
|
||||
from hanzoai.cloud.models.form_item import FormItem as FormItem
|
||||
from hanzoai.cloud.models.formation import Formation as Formation
|
||||
from hanzoai.cloud.models.formation_view import FormationView as FormationView
|
||||
from hanzoai.cloud.models.founder import Founder as Founder
|
||||
@@ -3313,6 +3432,30 @@ from hanzoai.cloud.models.generate_input import GenerateInput as GenerateInput
|
||||
from hanzoai.cloud.models.generate_request import GenerateRequest as GenerateRequest
|
||||
from hanzoai.cloud.models.generate_result import GenerateResult as GenerateResult
|
||||
from hanzoai.cloud.models.genesis import Genesis as Genesis
|
||||
from hanzoai.cloud.models.get_v1_ai_activities200_response import GetV1AiActivities200Response as GetV1AiActivities200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_articles200_response import GetV1AiArticles200Response as GetV1AiArticles200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_assets200_response import GetV1AiAssets200Response as GetV1AiAssets200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_chats200_response import GetV1AiChats200Response as GetV1AiChats200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_deployments200_response import GetV1AiDeployments200Response as GetV1AiDeployments200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_files200_response import GetV1AiFiles200Response as GetV1AiFiles200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_forms200_response import GetV1AiForms200Response as GetV1AiForms200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_graphs200_response import GetV1AiGraphs200Response as GetV1AiGraphs200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_messages200_response import GetV1AiMessages200Response as GetV1AiMessages200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_nodes200_response import GetV1AiNodes200Response as GetV1AiNodes200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_providers200_response import GetV1AiProviders200Response as GetV1AiProviders200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_records200_response import GetV1AiRecords200Response as GetV1AiRecords200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_remote_connections200_response import GetV1AiRemoteConnections200Response as GetV1AiRemoteConnections200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_routes200_response import GetV1AiRoutes200Response as GetV1AiRoutes200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_scales200_response import GetV1AiScales200Response as GetV1AiScales200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_scans200_response import GetV1AiScans200Response as GetV1AiScans200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_signin_sessions200_response import GetV1AiSigninSessions200Response as GetV1AiSigninSessions200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_stores200_response import GetV1AiStores200Response as GetV1AiStores200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_tasks200_response import GetV1AiTasks200Response as GetV1AiTasks200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_templates200_response import GetV1AiTemplates200Response as GetV1AiTemplates200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_usages200_response import GetV1AiUsages200Response as GetV1AiUsages200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_vectors200_response import GetV1AiVectors200Response as GetV1AiVectors200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_videos200_response import GetV1AiVideos200Response as GetV1AiVideos200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_workflows200_response import GetV1AiWorkflows200Response as GetV1AiWorkflows200Response
|
||||
from hanzoai.cloud.models.git_ops_app import GitOpsApp as GitOpsApp
|
||||
from hanzoai.cloud.models.git_ops_deploy import GitOpsDeploy as GitOpsDeploy
|
||||
from hanzoai.cloud.models.git_ops_operation import GitOpsOperation as GitOpsOperation
|
||||
@@ -3323,6 +3466,8 @@ from hanzoai.cloud.models.github_backfill_in import GithubBackfillIn as GithubBa
|
||||
from hanzoai.cloud.models.github_backfill_result import GithubBackfillResult as GithubBackfillResult
|
||||
from hanzoai.cloud.models.github_claim_in import GithubClaimIn as GithubClaimIn
|
||||
from hanzoai.cloud.models.github_claim_out import GithubClaimOut as GithubClaimOut
|
||||
from hanzoai.cloud.models.github_fork_out import GithubForkOut as GithubForkOut
|
||||
from hanzoai.cloud.models.github_fork_req import GithubForkReq as GithubForkReq
|
||||
from hanzoai.cloud.models.github_import_in import GithubImportIn as GithubImportIn
|
||||
from hanzoai.cloud.models.github_import_out import GithubImportOut as GithubImportOut
|
||||
from hanzoai.cloud.models.github_installation_view import GithubInstallationView as GithubInstallationView
|
||||
@@ -3336,6 +3481,9 @@ from hanzoai.cloud.models.github_pages_updated_out import GithubPagesUpdatedOut
|
||||
from hanzoai.cloud.models.github_pages_view import GithubPagesView as GithubPagesView
|
||||
from hanzoai.cloud.models.github_repo_view import GithubRepoView as GithubRepoView
|
||||
from hanzoai.cloud.models.github_repos_out import GithubReposOut as GithubReposOut
|
||||
from hanzoai.cloud.models.github_search_hit import GithubSearchHit as GithubSearchHit
|
||||
from hanzoai.cloud.models.github_search_out import GithubSearchOut as GithubSearchOut
|
||||
from hanzoai.cloud.models.github_search_req import GithubSearchReq as GithubSearchReq
|
||||
from hanzoai.cloud.models.gpu_alert_list import GpuAlertList as GpuAlertList
|
||||
from hanzoai.cloud.models.gpu_job import GpuJob as GpuJob
|
||||
from hanzoai.cloud.models.gpu_list import GpuList as GpuList
|
||||
@@ -3346,6 +3494,7 @@ from hanzoai.cloud.models.grant_request import GrantRequest as GrantRequest
|
||||
from hanzoai.cloud.models.grant_result import GrantResult as GrantResult
|
||||
from hanzoai.cloud.models.grant_row import GrantRow as GrantRow
|
||||
from hanzoai.cloud.models.grants_out import GrantsOut as GrantsOut
|
||||
from hanzoai.cloud.models.graph import Graph as Graph
|
||||
from hanzoai.cloud.models.graph_edge import GraphEdge as GraphEdge
|
||||
from hanzoai.cloud.models.graph_node import GraphNode as GraphNode
|
||||
from hanzoai.cloud.models.graph_out import GraphOut as GraphOut
|
||||
@@ -3513,6 +3662,8 @@ from hanzoai.cloud.models.invoice_row import InvoiceRow as InvoiceRow
|
||||
from hanzoai.cloud.models.invoices_out import InvoicesOut as InvoicesOut
|
||||
from hanzoai.cloud.models.invoke_req import InvokeReq as InvokeReq
|
||||
from hanzoai.cloud.models.issue_edit import IssueEdit as IssueEdit
|
||||
from hanzoai.cloud.models.issue_hit import IssueHit as IssueHit
|
||||
from hanzoai.cloud.models.issue_hits import IssueHits as IssueHits
|
||||
from hanzoai.cloud.models.issue_request import IssueRequest as IssueRequest
|
||||
from hanzoai.cloud.models.issue_response import IssueResponse as IssueResponse
|
||||
from hanzoai.cloud.models.issue_view import IssueView as IssueView
|
||||
@@ -3544,6 +3695,7 @@ from hanzoai.cloud.models.kyc_session import KycSession as KycSession
|
||||
from hanzoai.cloud.models.kyc_start_out import KycStartOut as KycStartOut
|
||||
from hanzoai.cloud.models.llm import LLM as LLM
|
||||
from hanzoai.cloud.models.llm_overview import LLMOverview as LLMOverview
|
||||
from hanzoai.cloud.models.label import Label as Label
|
||||
from hanzoai.cloud.models.last_event_view import LastEventView as LastEventView
|
||||
from hanzoai.cloud.models.latency_stat import LatencyStat as LatencyStat
|
||||
from hanzoai.cloud.models.lb_list import LbList as LbList
|
||||
@@ -3580,6 +3732,7 @@ from hanzoai.cloud.models.mcp_listing import MCPListing as MCPListing
|
||||
from hanzoai.cloud.models.mcp_package import MCPPackage as MCPPackage
|
||||
from hanzoai.cloud.models.mcp_remote import MCPRemote as MCPRemote
|
||||
from hanzoai.cloud.models.mcp_server import MCPServer as MCPServer
|
||||
from hanzoai.cloud.models.machine import Machine as Machine
|
||||
from hanzoai.cloud.models.machine_list import MachineList as MachineList
|
||||
from hanzoai.cloud.models.machine_view import MachineView as MachineView
|
||||
from hanzoai.cloud.models.make_in import MakeIn as MakeIn
|
||||
@@ -3614,8 +3767,11 @@ from hanzoai.cloud.models.mirror_target_view import MirrorTargetView as MirrorTa
|
||||
from hanzoai.cloud.models.ml_resource import MlResource as MlResource
|
||||
from hanzoai.cloud.models.ml_resource_list import MlResourceList as MlResourceList
|
||||
from hanzoai.cloud.models.model_field import ModelField as ModelField
|
||||
from hanzoai.cloud.models.model_route import ModelRoute as ModelRoute
|
||||
from hanzoai.cloud.models.model_row import ModelRow as ModelRow
|
||||
from hanzoai.cloud.models.model_search_result import ModelSearchResult as ModelSearchResult
|
||||
from hanzoai.cloud.models.model_stat import ModelStat as ModelStat
|
||||
from hanzoai.cloud.models.model_tool_call import ModelToolCall as ModelToolCall
|
||||
from hanzoai.cloud.models.module_info import ModuleInfo as ModuleInfo
|
||||
from hanzoai.cloud.models.module_list import ModuleList as ModuleList
|
||||
from hanzoai.cloud.models.module_state import ModuleState as ModuleState
|
||||
@@ -4459,6 +4615,7 @@ from hanzoai.cloud.models.overview import Overview as Overview
|
||||
from hanzoai.cloud.models.overview_data import OverviewData as OverviewData
|
||||
from hanzoai.cloud.models.overview_out import OverviewOut as OverviewOut
|
||||
from hanzoai.cloud.models.overview_view import OverviewView as OverviewView
|
||||
from hanzoai.cloud.models.page import Page as Page
|
||||
from hanzoai.cloud.models.pages_build_config import PagesBuildConfig as PagesBuildConfig
|
||||
from hanzoai.cloud.models.pages_d1_binding import PagesD1Binding as PagesD1Binding
|
||||
from hanzoai.cloud.models.pages_deploy import PagesDeploy as PagesDeploy
|
||||
@@ -4472,6 +4629,7 @@ from hanzoai.cloud.models.pairing import Pairing as Pairing
|
||||
from hanzoai.cloud.models.pairing_approved import PairingApproved as PairingApproved
|
||||
from hanzoai.cloud.models.pairing_queue import PairingQueue as PairingQueue
|
||||
from hanzoai.cloud.models.pairing_view import PairingView as PairingView
|
||||
from hanzoai.cloud.models.patch import Patch as Patch
|
||||
from hanzoai.cloud.models.patch_application_in import PatchApplicationIn as PatchApplicationIn
|
||||
from hanzoai.cloud.models.patch_flow_in import PatchFlowIn as PatchFlowIn
|
||||
from hanzoai.cloud.models.patch_in import PatchIn as PatchIn
|
||||
@@ -4518,6 +4676,29 @@ from hanzoai.cloud.models.pool_scale import PoolScale as PoolScale
|
||||
from hanzoai.cloud.models.populated_flow import PopulatedFlow as PopulatedFlow
|
||||
from hanzoai.cloud.models.position import Position as Position
|
||||
from hanzoai.cloud.models.post_list import PostList as PostList
|
||||
from hanzoai.cloud.models.post_v1_ai_articles200_response import PostV1AiArticles200Response as PostV1AiArticles200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_assets200_response import PostV1AiAssets200Response as PostV1AiAssets200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_chats200_response import PostV1AiChats200Response as PostV1AiChats200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_deployments200_response import PostV1AiDeployments200Response as PostV1AiDeployments200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_files200_response import PostV1AiFiles200Response as PostV1AiFiles200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_forms200_response import PostV1AiForms200Response as PostV1AiForms200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_graphs200_response import PostV1AiGraphs200Response as PostV1AiGraphs200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_messages200_response import PostV1AiMessages200Response as PostV1AiMessages200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_nodes200_response import PostV1AiNodes200Response as PostV1AiNodes200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_providers200_response import PostV1AiProviders200Response as PostV1AiProviders200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_records200_response import PostV1AiRecords200Response as PostV1AiRecords200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_remote_connections200_response import PostV1AiRemoteConnections200Response as PostV1AiRemoteConnections200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_routes200_response import PostV1AiRoutes200Response as PostV1AiRoutes200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_scales200_response import PostV1AiScales200Response as PostV1AiScales200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_scans200_response import PostV1AiScans200Response as PostV1AiScans200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_signin_sessions200_response import PostV1AiSigninSessions200Response as PostV1AiSigninSessions200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_stores200_response import PostV1AiStores200Response as PostV1AiStores200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_tasks200_response import PostV1AiTasks200Response as PostV1AiTasks200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_templates200_response import PostV1AiTemplates200Response as PostV1AiTemplates200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_tree_files200_response import PostV1AiTreeFiles200Response as PostV1AiTreeFiles200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_vectors200_response import PostV1AiVectors200Response as PostV1AiVectors200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_videos200_response import PostV1AiVideos200Response as PostV1AiVideos200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_workflows200_response import PostV1AiWorkflows200Response as PostV1AiWorkflows200Response
|
||||
from hanzoai.cloud.models.post_v1_event_request import PostV1EventRequest as PostV1EventRequest
|
||||
from hanzoai.cloud.models.posting import Posting as Posting
|
||||
from hanzoai.cloud.models.prefs_view import PrefsView as PrefsView
|
||||
@@ -4578,6 +4759,8 @@ from hanzoai.cloud.models.prompt_list import PromptList as PromptList
|
||||
from hanzoai.cloud.models.prompt_meta import PromptMeta as PromptMeta
|
||||
from hanzoai.cloud.models.prompt_req import PromptReq as PromptReq
|
||||
from hanzoai.cloud.models.prop_spec import PropSpec as PropSpec
|
||||
from hanzoai.cloud.models.properties import Properties as Properties
|
||||
from hanzoai.cloud.models.provider import Provider as Provider
|
||||
from hanzoai.cloud.models.provider_breakdown import ProviderBreakdown as ProviderBreakdown
|
||||
from hanzoai.cloud.models.provider_card import ProviderCard as ProviderCard
|
||||
from hanzoai.cloud.models.provider_credit import ProviderCredit as ProviderCredit
|
||||
@@ -4670,7 +4853,9 @@ from hanzoai.cloud.models.release_list import ReleaseList as ReleaseList
|
||||
from hanzoai.cloud.models.release_row import ReleaseRow as ReleaseRow
|
||||
from hanzoai.cloud.models.release_state import ReleaseState as ReleaseState
|
||||
from hanzoai.cloud.models.reload_in import ReloadIn as ReloadIn
|
||||
from hanzoai.cloud.models.remark import Remark as Remark
|
||||
from hanzoai.cloud.models.remittance import Remittance as Remittance
|
||||
from hanzoai.cloud.models.remote_app import RemoteApp as RemoteApp
|
||||
from hanzoai.cloud.models.renew_req import RenewReq as RenewReq
|
||||
from hanzoai.cloud.models.renew_result import RenewResult as RenewResult
|
||||
from hanzoai.cloud.models.replace_kit_in import ReplaceKitIn as ReplaceKitIn
|
||||
@@ -4687,6 +4872,8 @@ from hanzoai.cloud.models.research_artifact import ResearchArtifact as ResearchA
|
||||
from hanzoai.cloud.models.research_totals import ResearchTotals as ResearchTotals
|
||||
from hanzoai.cloud.models.resolve_reference_in import ResolveReferenceIn as ResolveReferenceIn
|
||||
from hanzoai.cloud.models.resolve_reference_out import ResolveReferenceOut as ResolveReferenceOut
|
||||
from hanzoai.cloud.models.resource_metrics import ResourceMetrics as ResourceMetrics
|
||||
from hanzoai.cloud.models.resource_requests import ResourceRequests as ResourceRequests
|
||||
from hanzoai.cloud.models.resource_usage import ResourceUsage as ResourceUsage
|
||||
from hanzoai.cloud.models.restart_ref import RestartRef as RestartRef
|
||||
from hanzoai.cloud.models.restarted import Restarted as Restarted
|
||||
@@ -4804,6 +4991,7 @@ from hanzoai.cloud.models.sample_view import SampleView as SampleView
|
||||
from hanzoai.cloud.models.sbom_health import SbomHealth as SbomHealth
|
||||
from hanzoai.cloud.models.sbom_ingest import SbomIngest as SbomIngest
|
||||
from hanzoai.cloud.models.sbom_ingested import SbomIngested as SbomIngested
|
||||
from hanzoai.cloud.models.scale import Scale as Scale
|
||||
from hanzoai.cloud.models.scale_in import ScaleIn as ScaleIn
|
||||
from hanzoai.cloud.models.scan import Scan as Scan
|
||||
from hanzoai.cloud.models.scan_detail import ScanDetail as ScanDetail
|
||||
@@ -4841,13 +5029,16 @@ from hanzoai.cloud.models.sequences import Sequences as Sequences
|
||||
from hanzoai.cloud.models.series_line import SeriesLine as SeriesLine
|
||||
from hanzoai.cloud.models.series_point import SeriesPoint as SeriesPoint
|
||||
from hanzoai.cloud.models.service import Service as Service
|
||||
from hanzoai.cloud.models.service_detail import ServiceDetail as ServiceDetail
|
||||
from hanzoai.cloud.models.service_input import ServiceInput as ServiceInput
|
||||
from hanzoai.cloud.models.service_list import ServiceList as ServiceList
|
||||
from hanzoai.cloud.models.service_mode_in import ServiceModeIn as ServiceModeIn
|
||||
from hanzoai.cloud.models.service_one import ServiceOne as ServiceOne
|
||||
from hanzoai.cloud.models.service_out import ServiceOut as ServiceOut
|
||||
from hanzoai.cloud.models.service_port import ServicePort as ServicePort
|
||||
from hanzoai.cloud.models.service_view import ServiceView as ServiceView
|
||||
from hanzoai.cloud.models.services_out import ServicesOut as ServicesOut
|
||||
from hanzoai.cloud.models.session import Session as Session
|
||||
from hanzoai.cloud.models.session_detail import SessionDetail as SessionDetail
|
||||
from hanzoai.cloud.models.session_list import SessionList as SessionList
|
||||
from hanzoai.cloud.models.session_user import SessionUser as SessionUser
|
||||
@@ -4909,6 +5100,7 @@ from hanzoai.cloud.models.storage_alert import StorageAlert as StorageAlert
|
||||
from hanzoai.cloud.models.storage_fleet import StorageFleet as StorageFleet
|
||||
from hanzoai.cloud.models.storage_snapshot import StorageSnapshot as StorageSnapshot
|
||||
from hanzoai.cloud.models.storage_volume import StorageVolume as StorageVolume
|
||||
from hanzoai.cloud.models.store import Store as Store
|
||||
from hanzoai.cloud.models.storefront_result import StorefrontResult as StorefrontResult
|
||||
from hanzoai.cloud.models.strategy import Strategy as Strategy
|
||||
from hanzoai.cloud.models.strategy_view import StrategyView as StrategyView
|
||||
@@ -4964,8 +5156,10 @@ from hanzoai.cloud.models.target_deleted import TargetDeleted as TargetDeleted
|
||||
from hanzoai.cloud.models.target_list import TargetList as TargetList
|
||||
from hanzoai.cloud.models.target_req import TargetReq as TargetReq
|
||||
from hanzoai.cloud.models.target_view import TargetView as TargetView
|
||||
from hanzoai.cloud.models.task import Task as Task
|
||||
from hanzoai.cloud.models.template import Template as Template
|
||||
from hanzoai.cloud.models.template_catalog import TemplateCatalog as TemplateCatalog
|
||||
from hanzoai.cloud.models.template_config_option import TemplateConfigOption as TemplateConfigOption
|
||||
from hanzoai.cloud.models.template_override import TemplateOverride as TemplateOverride
|
||||
from hanzoai.cloud.models.template_reply import TemplateReply as TemplateReply
|
||||
from hanzoai.cloud.models.template_view import TemplateView as TemplateView
|
||||
@@ -4993,6 +5187,7 @@ from hanzoai.cloud.models.transition_result import TransitionResult as Transitio
|
||||
from hanzoai.cloud.models.treasury_report import TreasuryReport as TreasuryReport
|
||||
from hanzoai.cloud.models.tree_entry import TreeEntry as TreeEntry
|
||||
from hanzoai.cloud.models.tree_entry_json import TreeEntryJSON as TreeEntryJSON
|
||||
from hanzoai.cloud.models.tree_file import TreeFile as TreeFile
|
||||
from hanzoai.cloud.models.tree_json import TreeJSON as TreeJSON
|
||||
from hanzoai.cloud.models.tree_node import TreeNode as TreeNode
|
||||
from hanzoai.cloud.models.trial import Trial as Trial
|
||||
@@ -5008,6 +5203,7 @@ from hanzoai.cloud.models.unsubscribed import Unsubscribed as Unsubscribed
|
||||
from hanzoai.cloud.models.update_agent_in import UpdateAgentIn as UpdateAgentIn
|
||||
from hanzoai.cloud.models.update_campaign_in import UpdateCampaignIn as UpdateCampaignIn
|
||||
from hanzoai.cloud.models.update_endpoint_in import UpdateEndpointIn as UpdateEndpointIn
|
||||
from hanzoai.cloud.models.upstream import Upstream as Upstream
|
||||
from hanzoai.cloud.models.usage import Usage as Usage
|
||||
from hanzoai.cloud.models.usage_analytics_access import UsageAnalyticsAccess as UsageAnalyticsAccess
|
||||
from hanzoai.cloud.models.usage_analytics_grant import UsageAnalyticsGrant as UsageAnalyticsGrant
|
||||
@@ -5032,8 +5228,10 @@ from hanzoai.cloud.models.users_out import UsersOut as UsersOut
|
||||
from hanzoai.cloud.models.validator_claim import ValidatorClaim as ValidatorClaim
|
||||
from hanzoai.cloud.models.validator_list import ValidatorList as ValidatorList
|
||||
from hanzoai.cloud.models.variant import Variant as Variant
|
||||
from hanzoai.cloud.models.vector import Vector as Vector
|
||||
from hanzoai.cloud.models.vector_collection import VectorCollection as VectorCollection
|
||||
from hanzoai.cloud.models.vector_collection_list import VectorCollectionList as VectorCollectionList
|
||||
from hanzoai.cloud.models.vector_score import VectorScore as VectorScore
|
||||
from hanzoai.cloud.models.vector_stats import VectorStats as VectorStats
|
||||
from hanzoai.cloud.models.vendor import Vendor as Vendor
|
||||
from hanzoai.cloud.models.vendor_row import VendorRow as VendorRow
|
||||
@@ -5050,6 +5248,7 @@ from hanzoai.cloud.models.version_message import VersionMessage as VersionMessag
|
||||
from hanzoai.cloud.models.version_meta import VersionMeta as VersionMeta
|
||||
from hanzoai.cloud.models.version_page import VersionPage as VersionPage
|
||||
from hanzoai.cloud.models.version_view import VersionView as VersionView
|
||||
from hanzoai.cloud.models.video import Video as Video
|
||||
from hanzoai.cloud.models.volume import Volume as Volume
|
||||
from hanzoai.cloud.models.volume_in import VolumeIn as VolumeIn
|
||||
from hanzoai.cloud.models.volume_snapshot_out import VolumeSnapshotOut as VolumeSnapshotOut
|
||||
@@ -5072,6 +5271,7 @@ from hanzoai.cloud.models.web_search_results import WebSearchResults as WebSearc
|
||||
from hanzoai.cloud.models.wire import Wire as Wire
|
||||
from hanzoai.cloud.models.worker_list import WorkerList as WorkerList
|
||||
from hanzoai.cloud.models.worker_script_put import WorkerScriptPut as WorkerScriptPut
|
||||
from hanzoai.cloud.models.workflow import Workflow as Workflow
|
||||
from hanzoai.cloud.models.world_index import WorldIndex as WorldIndex
|
||||
from hanzoai.cloud.models.world_wire import WorldWire as WorldWire
|
||||
from hanzoai.cloud.models.write_in import WriteIn as WriteIn
|
||||
|
||||
@@ -18674,9 +18674,9 @@ class AdminApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Turns one model off, into beta for named orgs, or generally available.
|
||||
"""Turn one model off, into beta for named orgs, or generally available
|
||||
|
||||
Turns one model off, into beta for named orgs, or generally available. It sets one model's availability overlay — and the price overrides applied on top of the catalog — then answers the new effective overlay, so a console needs no second read. The model id is the whole remaining path, so a slashed id like `acme/some-model-1` addresses intact. SuperAdmin only; every other caller is 403, decided before the body is read. The overlay is PLATFORM-WIDE — this is the catalog every org prices against, not a per-org setting — and `betaOrgs` is what narrows a beta to named orgs. Only the fields the patch names change; an entry with no overlay yet starts from the catalog default, which is enabled. `state` is the coherent tri-state setter (`off`|`beta`|`ga`) and the low-level `enabled`/`beta` flags are applied AFTER it, so they win where both are sent; anything else in `state` is 400. A field sent as an explicit `null` arrives indistinguishable from an absent one, so null does not clear anything. The rule worth reading twice: a disabled entry that still carries beta orgs IS a beta — `{\"enabled\":false,\"betaOrgs\":[\"acme\"]}` leaves acme seeing the model. Only an explicit `off` (or `beta:false`) with an empty list is the absolute kill switch that a user's own beta opt-in can never re-open. `overrides` is an RFC 7386 merge patch, stored and echoed back verbatim; it must be a JSON object or null — an array or a scalar is refused — and is bounded in size and nesting depth. An uninitialised overlay store answers 503.
|
||||
Sets one model's availability overlay — and the price overrides applied on top of the catalog — then answers the new effective overlay, so a console needs no second read. The model id is the whole remaining path, so a slashed id like `acme/some-model-1` addresses intact. SuperAdmin only; every other caller is 403, decided before the body is read. The overlay is PLATFORM-WIDE — this is the catalog every org prices against, not a per-org setting — and `betaOrgs` is what narrows a beta to named orgs. Only the fields the patch names change; an entry with no overlay yet starts from the catalog default, which is enabled. `state` is the coherent tri-state setter (`off`|`beta`|`ga`) and the low-level `enabled`/`beta` flags are applied AFTER it, so they win where both are sent; anything else in `state` is 400. A field sent as an explicit `null` arrives indistinguishable from an absent one, so null does not clear anything. The rule worth reading twice: a disabled entry that still carries beta orgs IS a beta — `{\"enabled\":false,\"betaOrgs\":[\"acme\"]}` leaves acme seeing the model. Only an explicit `off` (or `beta:false`) with an empty list is the absolute kill switch that a user's own beta opt-in can never re-open. `overrides` is an RFC 7386 merge patch, stored and echoed back verbatim; it must be a JSON object or null — an array or a scalar is refused — and is bounded in size and nesting depth. An uninitialised overlay store answers 503.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -18740,9 +18740,9 @@ class AdminApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Turns one model off, into beta for named orgs, or generally available.
|
||||
"""Turn one model off, into beta for named orgs, or generally available
|
||||
|
||||
Turns one model off, into beta for named orgs, or generally available. It sets one model's availability overlay — and the price overrides applied on top of the catalog — then answers the new effective overlay, so a console needs no second read. The model id is the whole remaining path, so a slashed id like `acme/some-model-1` addresses intact. SuperAdmin only; every other caller is 403, decided before the body is read. The overlay is PLATFORM-WIDE — this is the catalog every org prices against, not a per-org setting — and `betaOrgs` is what narrows a beta to named orgs. Only the fields the patch names change; an entry with no overlay yet starts from the catalog default, which is enabled. `state` is the coherent tri-state setter (`off`|`beta`|`ga`) and the low-level `enabled`/`beta` flags are applied AFTER it, so they win where both are sent; anything else in `state` is 400. A field sent as an explicit `null` arrives indistinguishable from an absent one, so null does not clear anything. The rule worth reading twice: a disabled entry that still carries beta orgs IS a beta — `{\"enabled\":false,\"betaOrgs\":[\"acme\"]}` leaves acme seeing the model. Only an explicit `off` (or `beta:false`) with an empty list is the absolute kill switch that a user's own beta opt-in can never re-open. `overrides` is an RFC 7386 merge patch, stored and echoed back verbatim; it must be a JSON object or null — an array or a scalar is refused — and is bounded in size and nesting depth. An uninitialised overlay store answers 503.
|
||||
Sets one model's availability overlay — and the price overrides applied on top of the catalog — then answers the new effective overlay, so a console needs no second read. The model id is the whole remaining path, so a slashed id like `acme/some-model-1` addresses intact. SuperAdmin only; every other caller is 403, decided before the body is read. The overlay is PLATFORM-WIDE — this is the catalog every org prices against, not a per-org setting — and `betaOrgs` is what narrows a beta to named orgs. Only the fields the patch names change; an entry with no overlay yet starts from the catalog default, which is enabled. `state` is the coherent tri-state setter (`off`|`beta`|`ga`) and the low-level `enabled`/`beta` flags are applied AFTER it, so they win where both are sent; anything else in `state` is 400. A field sent as an explicit `null` arrives indistinguishable from an absent one, so null does not clear anything. The rule worth reading twice: a disabled entry that still carries beta orgs IS a beta — `{\"enabled\":false,\"betaOrgs\":[\"acme\"]}` leaves acme seeing the model. Only an explicit `off` (or `beta:false`) with an empty list is the absolute kill switch that a user's own beta opt-in can never re-open. `overrides` is an RFC 7386 merge patch, stored and echoed back verbatim; it must be a JSON object or null — an array or a scalar is refused — and is bounded in size and nesting depth. An uninitialised overlay store answers 503.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -18806,9 +18806,9 @@ class AdminApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Turns one model off, into beta for named orgs, or generally available.
|
||||
"""Turn one model off, into beta for named orgs, or generally available
|
||||
|
||||
Turns one model off, into beta for named orgs, or generally available. It sets one model's availability overlay — and the price overrides applied on top of the catalog — then answers the new effective overlay, so a console needs no second read. The model id is the whole remaining path, so a slashed id like `acme/some-model-1` addresses intact. SuperAdmin only; every other caller is 403, decided before the body is read. The overlay is PLATFORM-WIDE — this is the catalog every org prices against, not a per-org setting — and `betaOrgs` is what narrows a beta to named orgs. Only the fields the patch names change; an entry with no overlay yet starts from the catalog default, which is enabled. `state` is the coherent tri-state setter (`off`|`beta`|`ga`) and the low-level `enabled`/`beta` flags are applied AFTER it, so they win where both are sent; anything else in `state` is 400. A field sent as an explicit `null` arrives indistinguishable from an absent one, so null does not clear anything. The rule worth reading twice: a disabled entry that still carries beta orgs IS a beta — `{\"enabled\":false,\"betaOrgs\":[\"acme\"]}` leaves acme seeing the model. Only an explicit `off` (or `beta:false`) with an empty list is the absolute kill switch that a user's own beta opt-in can never re-open. `overrides` is an RFC 7386 merge patch, stored and echoed back verbatim; it must be a JSON object or null — an array or a scalar is refused — and is bounded in size and nesting depth. An uninitialised overlay store answers 503.
|
||||
Sets one model's availability overlay — and the price overrides applied on top of the catalog — then answers the new effective overlay, so a console needs no second read. The model id is the whole remaining path, so a slashed id like `acme/some-model-1` addresses intact. SuperAdmin only; every other caller is 403, decided before the body is read. The overlay is PLATFORM-WIDE — this is the catalog every org prices against, not a per-org setting — and `betaOrgs` is what narrows a beta to named orgs. Only the fields the patch names change; an entry with no overlay yet starts from the catalog default, which is enabled. `state` is the coherent tri-state setter (`off`|`beta`|`ga`) and the low-level `enabled`/`beta` flags are applied AFTER it, so they win where both are sent; anything else in `state` is 400. A field sent as an explicit `null` arrives indistinguishable from an absent one, so null does not clear anything. The rule worth reading twice: a disabled entry that still carries beta orgs IS a beta — `{\"enabled\":false,\"betaOrgs\":[\"acme\"]}` leaves acme seeing the model. Only an explicit `off` (or `beta:false`) with an empty list is the absolute kill switch that a user's own beta opt-in can never re-open. `overrides` is an RFC 7386 merge patch, stored and echoed back verbatim; it must be a JSON object or null — an array or a scalar is refused — and is bounded in size and nesting depth. An uninitialised overlay store answers 503.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
|
||||
@@ -1370,9 +1370,9 @@ class AdsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Runs one of the caller's stored campaigns on its ad network.
|
||||
"""Run one of your stored campaigns on its ad network
|
||||
|
||||
Runs one of the caller's stored campaigns on its ad network. It creates the campaign on its platform under the CALLER ORG'S own connected ad account, records the provider campaign id, flips the stored campaign to active and answers the updated record. No ad-network token is held here: it is resolved from KMS through the org's connector at launch time, BEFORE any provider call, so an org that has not connected that platform gets 424 and no spend can ever start on a connection the org did not make. Meta is executed for real; a campaign on a platform whose provider is not wired yet answers 501 even when the connector is connected, and an edge failure at the platform is 502. The optional {account} body overrides the target ad account for this launch and is TOLERANT — a malformed or non-JSON body is ignored and the campaign launches on its stored account rather than being refused. A campaign id another org owns reads as not found.
|
||||
Creates the campaign on its platform under the CALLER ORG'S own connected ad account, records the provider campaign id, flips the stored campaign to active and answers the updated record. No ad-network token is held here: it is resolved from KMS through the org's connector at launch time, BEFORE any provider call, so an org that has not connected that platform gets 424 and no spend can ever start on a connection the org did not make. Meta is executed for real; a campaign on a platform whose provider is not wired yet answers 501 even when the connector is connected, and an edge failure at the platform is 502. The optional {account} body overrides the target ad account for this launch and is TOLERANT — a malformed or non-JSON body is ignored and the campaign launches on its stored account rather than being refused. A campaign id another org owns reads as not found.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -1436,9 +1436,9 @@ class AdsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Runs one of the caller's stored campaigns on its ad network.
|
||||
"""Run one of your stored campaigns on its ad network
|
||||
|
||||
Runs one of the caller's stored campaigns on its ad network. It creates the campaign on its platform under the CALLER ORG'S own connected ad account, records the provider campaign id, flips the stored campaign to active and answers the updated record. No ad-network token is held here: it is resolved from KMS through the org's connector at launch time, BEFORE any provider call, so an org that has not connected that platform gets 424 and no spend can ever start on a connection the org did not make. Meta is executed for real; a campaign on a platform whose provider is not wired yet answers 501 even when the connector is connected, and an edge failure at the platform is 502. The optional {account} body overrides the target ad account for this launch and is TOLERANT — a malformed or non-JSON body is ignored and the campaign launches on its stored account rather than being refused. A campaign id another org owns reads as not found.
|
||||
Creates the campaign on its platform under the CALLER ORG'S own connected ad account, records the provider campaign id, flips the stored campaign to active and answers the updated record. No ad-network token is held here: it is resolved from KMS through the org's connector at launch time, BEFORE any provider call, so an org that has not connected that platform gets 424 and no spend can ever start on a connection the org did not make. Meta is executed for real; a campaign on a platform whose provider is not wired yet answers 501 even when the connector is connected, and an edge failure at the platform is 502. The optional {account} body overrides the target ad account for this launch and is TOLERANT — a malformed or non-JSON body is ignored and the campaign launches on its stored account rather than being refused. A campaign id another org owns reads as not found.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -1502,9 +1502,9 @@ class AdsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Runs one of the caller's stored campaigns on its ad network.
|
||||
"""Run one of your stored campaigns on its ad network
|
||||
|
||||
Runs one of the caller's stored campaigns on its ad network. It creates the campaign on its platform under the CALLER ORG'S own connected ad account, records the provider campaign id, flips the stored campaign to active and answers the updated record. No ad-network token is held here: it is resolved from KMS through the org's connector at launch time, BEFORE any provider call, so an org that has not connected that platform gets 424 and no spend can ever start on a connection the org did not make. Meta is executed for real; a campaign on a platform whose provider is not wired yet answers 501 even when the connector is connected, and an edge failure at the platform is 502. The optional {account} body overrides the target ad account for this launch and is TOLERANT — a malformed or non-JSON body is ignored and the campaign launches on its stored account rather than being refused. A campaign id another org owns reads as not found.
|
||||
Creates the campaign on its platform under the CALLER ORG'S own connected ad account, records the provider campaign id, flips the stored campaign to active and answers the updated record. No ad-network token is held here: it is resolved from KMS through the org's connector at launch time, BEFORE any provider call, so an org that has not connected that platform gets 424 and no spend can ever start on a connection the org did not make. Meta is executed for real; a campaign on a platform whose provider is not wired yet answers 501 even when the connector is connected, and an edge failure at the platform is 502. The optional {account} body overrides the target ad account for this launch and is TOLERANT — a malformed or non-JSON body is ignored and the campaign launches on its stored account rather than being refused. A campaign id another org owns reads as not found.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
|
||||
+1048
-1076
File diff suppressed because it is too large
Load Diff
@@ -56,9 +56,9 @@ class AskApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Answers a grounded question about the caller's own org, from real figures rather than from the model's memory.
|
||||
"""Ask a grounded question about your own org
|
||||
|
||||
Answers a grounded question about the caller's own org, from real figures rather than from the model's memory. The question is classified to a grounded domain, that domain's read runs IN-PROCESS under the caller's own credentials, and only then is the result narrated. So the figures and their sources are the domain's, resolved before any model call and never altered by one — a wrong answer is a wrong query, never an invention. Domains: books (the org's ledger), projects (what is built and what of it is deployed), git (the org's repositories and what changed in them), and web (search, news, research, deep). A validated principal is required; the answer is scoped to that principal's org and nothing else.
|
||||
Answers a natural-language question about the CALLER'S OWN org, from real figures rather than from the model's memory. The question is classified to a grounded domain, that domain's read runs IN-PROCESS under the caller's own credentials, and only then is the result narrated. So the figures and their sources are the domain's, resolved before any model call and never altered by one — a wrong answer is a wrong query, never an invention. Domains: books (the org's ledger), projects (what is built and what of it is deployed), git (the org's repositories and what changed in them), and web (search, news, research, deep). A validated principal is required; the answer is scoped to that principal's org and nothing else.
|
||||
|
||||
:param ask_request:
|
||||
:type ask_request: AskRequest
|
||||
@@ -122,9 +122,9 @@ class AskApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Answers a grounded question about the caller's own org, from real figures rather than from the model's memory.
|
||||
"""Ask a grounded question about your own org
|
||||
|
||||
Answers a grounded question about the caller's own org, from real figures rather than from the model's memory. The question is classified to a grounded domain, that domain's read runs IN-PROCESS under the caller's own credentials, and only then is the result narrated. So the figures and their sources are the domain's, resolved before any model call and never altered by one — a wrong answer is a wrong query, never an invention. Domains: books (the org's ledger), projects (what is built and what of it is deployed), git (the org's repositories and what changed in them), and web (search, news, research, deep). A validated principal is required; the answer is scoped to that principal's org and nothing else.
|
||||
Answers a natural-language question about the CALLER'S OWN org, from real figures rather than from the model's memory. The question is classified to a grounded domain, that domain's read runs IN-PROCESS under the caller's own credentials, and only then is the result narrated. So the figures and their sources are the domain's, resolved before any model call and never altered by one — a wrong answer is a wrong query, never an invention. Domains: books (the org's ledger), projects (what is built and what of it is deployed), git (the org's repositories and what changed in them), and web (search, news, research, deep). A validated principal is required; the answer is scoped to that principal's org and nothing else.
|
||||
|
||||
:param ask_request:
|
||||
:type ask_request: AskRequest
|
||||
@@ -188,9 +188,9 @@ class AskApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Answers a grounded question about the caller's own org, from real figures rather than from the model's memory.
|
||||
"""Ask a grounded question about your own org
|
||||
|
||||
Answers a grounded question about the caller's own org, from real figures rather than from the model's memory. The question is classified to a grounded domain, that domain's read runs IN-PROCESS under the caller's own credentials, and only then is the result narrated. So the figures and their sources are the domain's, resolved before any model call and never altered by one — a wrong answer is a wrong query, never an invention. Domains: books (the org's ledger), projects (what is built and what of it is deployed), git (the org's repositories and what changed in them), and web (search, news, research, deep). A validated principal is required; the answer is scoped to that principal's org and nothing else.
|
||||
Answers a natural-language question about the CALLER'S OWN org, from real figures rather than from the model's memory. The question is classified to a grounded domain, that domain's read runs IN-PROCESS under the caller's own credentials, and only then is the result narrated. So the figures and their sources are the domain's, resolved before any model call and never altered by one — a wrong answer is a wrong query, never an invention. Domains: books (the org's ledger), projects (what is built and what of it is deployed), git (the org's repositories and what changed in them), and web (search, news, research, deep). A validated principal is required; the answer is scoped to that principal's org and nothing else.
|
||||
|
||||
:param ask_request:
|
||||
:type ask_request: AskRequest
|
||||
|
||||
@@ -3518,9 +3518,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Edits a flow — renames it, retargets its trigger, or adds, moves and deletes steps.
|
||||
"""Edit a flow — rename it, retarget its trigger, or add, move and delete steps
|
||||
|
||||
Edits a flow — renames it, retargets its trigger, or adds, moves and deletes steps. It applies ONE flow operation and answers the thing it changed. The operation is named by `type`, with its arguments under `request`: `CHANGE_NAME`, `UPDATE_TRIGGER`, `ADD_ACTION`, `UPDATE_ACTION`, `MOVE_ACTION`, `DELETE_ACTION` edit the flow's LATEST version and answer with that version, and `CHANGE_STATUS` instead enables or disables the flow and answers with the FLOW. Two response shapes on one address is the rule a reader would otherwise get wrong, and it is why this route is not a typed op. Edits land on the latest version only — the published version a run executes is untouched until it is republished — and the whole resulting step tree is re-validated against the step-count and size caps after every operation, so a long sequence of `ADD_ACTION` calls cannot grow a flow past a bound one step at a time (422 when it would). Org-scoped and fails closed: a validated principal is required (403 without one), the flow and its version are read under the caller's OWN org so another tenant's id is a 404, and an operation whose `request` does not decode is a 400.
|
||||
Applies ONE flow operation and answers the thing it changed. The operation is named by `type`, with its arguments under `request`: `CHANGE_NAME`, `UPDATE_TRIGGER`, `ADD_ACTION`, `UPDATE_ACTION`, `MOVE_ACTION`, `DELETE_ACTION` edit the flow's LATEST version and answer with that version, and `CHANGE_STATUS` instead enables or disables the flow and answers with the FLOW. Two response shapes on one address is the rule a reader would otherwise get wrong, and it is why this route is not a typed op. Edits land on the latest version only — the published version a run executes is untouched until it is republished — and the whole resulting step tree is re-validated against the step-count and size caps after every operation, so a long sequence of `ADD_ACTION` calls cannot grow a flow past a bound one step at a time (422 when it would). Org-scoped and fails closed: a validated principal is required (403 without one), the flow and its version are read under the caller's OWN org so another tenant's id is a 404, and an operation whose `request` does not decode is a 400.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -3584,9 +3584,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Edits a flow — renames it, retargets its trigger, or adds, moves and deletes steps.
|
||||
"""Edit a flow — rename it, retarget its trigger, or add, move and delete steps
|
||||
|
||||
Edits a flow — renames it, retargets its trigger, or adds, moves and deletes steps. It applies ONE flow operation and answers the thing it changed. The operation is named by `type`, with its arguments under `request`: `CHANGE_NAME`, `UPDATE_TRIGGER`, `ADD_ACTION`, `UPDATE_ACTION`, `MOVE_ACTION`, `DELETE_ACTION` edit the flow's LATEST version and answer with that version, and `CHANGE_STATUS` instead enables or disables the flow and answers with the FLOW. Two response shapes on one address is the rule a reader would otherwise get wrong, and it is why this route is not a typed op. Edits land on the latest version only — the published version a run executes is untouched until it is republished — and the whole resulting step tree is re-validated against the step-count and size caps after every operation, so a long sequence of `ADD_ACTION` calls cannot grow a flow past a bound one step at a time (422 when it would). Org-scoped and fails closed: a validated principal is required (403 without one), the flow and its version are read under the caller's OWN org so another tenant's id is a 404, and an operation whose `request` does not decode is a 400.
|
||||
Applies ONE flow operation and answers the thing it changed. The operation is named by `type`, with its arguments under `request`: `CHANGE_NAME`, `UPDATE_TRIGGER`, `ADD_ACTION`, `UPDATE_ACTION`, `MOVE_ACTION`, `DELETE_ACTION` edit the flow's LATEST version and answer with that version, and `CHANGE_STATUS` instead enables or disables the flow and answers with the FLOW. Two response shapes on one address is the rule a reader would otherwise get wrong, and it is why this route is not a typed op. Edits land on the latest version only — the published version a run executes is untouched until it is republished — and the whole resulting step tree is re-validated against the step-count and size caps after every operation, so a long sequence of `ADD_ACTION` calls cannot grow a flow past a bound one step at a time (422 when it would). Org-scoped and fails closed: a validated principal is required (403 without one), the flow and its version are read under the caller's OWN org so another tenant's id is a 404, and an operation whose `request` does not decode is a 400.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -3650,9 +3650,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Edits a flow — renames it, retargets its trigger, or adds, moves and deletes steps.
|
||||
"""Edit a flow — rename it, retarget its trigger, or add, move and delete steps
|
||||
|
||||
Edits a flow — renames it, retargets its trigger, or adds, moves and deletes steps. It applies ONE flow operation and answers the thing it changed. The operation is named by `type`, with its arguments under `request`: `CHANGE_NAME`, `UPDATE_TRIGGER`, `ADD_ACTION`, `UPDATE_ACTION`, `MOVE_ACTION`, `DELETE_ACTION` edit the flow's LATEST version and answer with that version, and `CHANGE_STATUS` instead enables or disables the flow and answers with the FLOW. Two response shapes on one address is the rule a reader would otherwise get wrong, and it is why this route is not a typed op. Edits land on the latest version only — the published version a run executes is untouched until it is republished — and the whole resulting step tree is re-validated against the step-count and size caps after every operation, so a long sequence of `ADD_ACTION` calls cannot grow a flow past a bound one step at a time (422 when it would). Org-scoped and fails closed: a validated principal is required (403 without one), the flow and its version are read under the caller's OWN org so another tenant's id is a 404, and an operation whose `request` does not decode is a 400.
|
||||
Applies ONE flow operation and answers the thing it changed. The operation is named by `type`, with its arguments under `request`: `CHANGE_NAME`, `UPDATE_TRIGGER`, `ADD_ACTION`, `UPDATE_ACTION`, `MOVE_ACTION`, `DELETE_ACTION` edit the flow's LATEST version and answer with that version, and `CHANGE_STATUS` instead enables or disables the flow and answers with the FLOW. Two response shapes on one address is the rule a reader would otherwise get wrong, and it is why this route is not a typed op. Edits land on the latest version only — the published version a run executes is untouched until it is republished — and the whole resulting step tree is re-validated against the step-count and size caps after every operation, so a long sequence of `ADD_ACTION` calls cannot grow a flow past a bound one step at a time (422 when it would). Org-scoped and fails closed: a validated principal is required (403 without one), the flow and its version are read under the caller's OWN org so another tenant's id is a 404, and an operation whose `request` does not decode is a 400.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -4317,9 +4317,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Fires an event that starts every enabled flow subscribed to it.
|
||||
"""Fire an event that starts every enabled flow subscribed to it
|
||||
|
||||
Fires an event that starts every enabled flow subscribed to it. It delivers one event to the org's automation triggers and answers `{matched:n}` — how many enabled flows had a webhook trigger on this `(source, event)` key and were started by it. A zero match is a success, not an error: nothing was subscribed. The path is the trigger key and the JSON object body is the event payload, threaded into each started run as `{{trigger.*}}` with all of its keys intact — which is why this is not a typed op, since a declared input struct would silently DISCARD every payload key it had no field for. Re-delivery is a no-op: an `X-Idempotency-Key` header dedupes, and with none the body is content-hashed instead, so a hammer of identical posts collapses to ONE run rather than minting a fresh one per post. An in-platform producer may propagate `X-Causation-Depth` so a firing that a flow caused is bounded against a loop; an absent or invalid header reads as depth 0, an external origin. Authenticated and org-scoped, unlike a provider's public webhook URL: a validated principal is required (403 without one) and the org is that principal's, never the body's, so a producer can only fire into its own tenant's flows. Both path segments are required (400) and a payload over the size limit is a 413.
|
||||
Delivers one event to the org's automation triggers and answers `{matched:n}` — how many enabled flows had a webhook trigger on this `(source, event)` key and were started by it. A zero match is a success, not an error: nothing was subscribed. The path is the trigger key and the JSON object body is the event payload, threaded into each started run as `{{trigger.*}}` with all of its keys intact — which is why this is not a typed op, since a declared input struct would silently DISCARD every payload key it had no field for. Re-delivery is a no-op: an `X-Idempotency-Key` header dedupes, and with none the body is content-hashed instead, so a hammer of identical posts collapses to ONE run rather than minting a fresh one per post. An in-platform producer may propagate `X-Causation-Depth` so a firing that a flow caused is bounded against a loop; an absent or invalid header reads as depth 0, an external origin. Authenticated and org-scoped, unlike a provider's public webhook URL: a validated principal is required (403 without one) and the org is that principal's, never the body's, so a producer can only fire into its own tenant's flows. Both path segments are required (400) and a payload over the size limit is a 413.
|
||||
|
||||
:param source: (required)
|
||||
:type source: str
|
||||
@@ -4387,9 +4387,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Fires an event that starts every enabled flow subscribed to it.
|
||||
"""Fire an event that starts every enabled flow subscribed to it
|
||||
|
||||
Fires an event that starts every enabled flow subscribed to it. It delivers one event to the org's automation triggers and answers `{matched:n}` — how many enabled flows had a webhook trigger on this `(source, event)` key and were started by it. A zero match is a success, not an error: nothing was subscribed. The path is the trigger key and the JSON object body is the event payload, threaded into each started run as `{{trigger.*}}` with all of its keys intact — which is why this is not a typed op, since a declared input struct would silently DISCARD every payload key it had no field for. Re-delivery is a no-op: an `X-Idempotency-Key` header dedupes, and with none the body is content-hashed instead, so a hammer of identical posts collapses to ONE run rather than minting a fresh one per post. An in-platform producer may propagate `X-Causation-Depth` so a firing that a flow caused is bounded against a loop; an absent or invalid header reads as depth 0, an external origin. Authenticated and org-scoped, unlike a provider's public webhook URL: a validated principal is required (403 without one) and the org is that principal's, never the body's, so a producer can only fire into its own tenant's flows. Both path segments are required (400) and a payload over the size limit is a 413.
|
||||
Delivers one event to the org's automation triggers and answers `{matched:n}` — how many enabled flows had a webhook trigger on this `(source, event)` key and were started by it. A zero match is a success, not an error: nothing was subscribed. The path is the trigger key and the JSON object body is the event payload, threaded into each started run as `{{trigger.*}}` with all of its keys intact — which is why this is not a typed op, since a declared input struct would silently DISCARD every payload key it had no field for. Re-delivery is a no-op: an `X-Idempotency-Key` header dedupes, and with none the body is content-hashed instead, so a hammer of identical posts collapses to ONE run rather than minting a fresh one per post. An in-platform producer may propagate `X-Causation-Depth` so a firing that a flow caused is bounded against a loop; an absent or invalid header reads as depth 0, an external origin. Authenticated and org-scoped, unlike a provider's public webhook URL: a validated principal is required (403 without one) and the org is that principal's, never the body's, so a producer can only fire into its own tenant's flows. Both path segments are required (400) and a payload over the size limit is a 413.
|
||||
|
||||
:param source: (required)
|
||||
:type source: str
|
||||
@@ -4457,9 +4457,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Fires an event that starts every enabled flow subscribed to it.
|
||||
"""Fire an event that starts every enabled flow subscribed to it
|
||||
|
||||
Fires an event that starts every enabled flow subscribed to it. It delivers one event to the org's automation triggers and answers `{matched:n}` — how many enabled flows had a webhook trigger on this `(source, event)` key and were started by it. A zero match is a success, not an error: nothing was subscribed. The path is the trigger key and the JSON object body is the event payload, threaded into each started run as `{{trigger.*}}` with all of its keys intact — which is why this is not a typed op, since a declared input struct would silently DISCARD every payload key it had no field for. Re-delivery is a no-op: an `X-Idempotency-Key` header dedupes, and with none the body is content-hashed instead, so a hammer of identical posts collapses to ONE run rather than minting a fresh one per post. An in-platform producer may propagate `X-Causation-Depth` so a firing that a flow caused is bounded against a loop; an absent or invalid header reads as depth 0, an external origin. Authenticated and org-scoped, unlike a provider's public webhook URL: a validated principal is required (403 without one) and the org is that principal's, never the body's, so a producer can only fire into its own tenant's flows. Both path segments are required (400) and a payload over the size limit is a 413.
|
||||
Delivers one event to the org's automation triggers and answers `{matched:n}` — how many enabled flows had a webhook trigger on this `(source, event)` key and were started by it. A zero match is a success, not an error: nothing was subscribed. The path is the trigger key and the JSON object body is the event payload, threaded into each started run as `{{trigger.*}}` with all of its keys intact — which is why this is not a typed op, since a declared input struct would silently DISCARD every payload key it had no field for. Re-delivery is a no-op: an `X-Idempotency-Key` header dedupes, and with none the body is content-hashed instead, so a hammer of identical posts collapses to ONE run rather than minting a fresh one per post. An in-platform producer may propagate `X-Causation-Depth` so a firing that a flow caused is bounded against a loop; an absent or invalid header reads as depth 0, an external origin. Authenticated and org-scoped, unlike a provider's public webhook URL: a validated principal is required (403 without one) and the org is that principal's, never the body's, so a producer can only fire into its own tenant's flows. Both path segments are required (400) and a payload over the size limit is a 413.
|
||||
|
||||
:param source: (required)
|
||||
:type source: str
|
||||
@@ -4581,9 +4581,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Releases a run waiting at an approval step, with the approval payload.
|
||||
"""Release a run waiting at an approval step, with the approval payload
|
||||
|
||||
Releases a run waiting at an approval step, with the approval payload. It delivers the durable `resume` signal to a run parked on a `wait_for_approval` waitpoint and answers `{resumed:true}` once the engine has taken it. The body is an ARBITRARY JSON value — object, array, string, number — delivered VERBATIM into the workflow as that waitpoint's output, so it is what the steps after the approval read as their input. An empty body resumes with no payload. That open shape is why this route is not a typed op: an operation's input can carry the payload or the run address, never both. Org-scoped and fails closed: a validated principal is required (403 without one), the run is read under the caller's OWN org so another tenant's run id is a 404, a body that is not JSON is a 400, and a payload over the size limit is a 413 — it becomes durable engine state, so it is bounded here rather than after it lands. The resume is audited as `automations.run.resume`.
|
||||
Delivers the durable `resume` signal to a run parked on a `wait_for_approval` waitpoint and answers `{resumed:true}` once the engine has taken it. The body is an ARBITRARY JSON value — object, array, string, number — delivered VERBATIM into the workflow as that waitpoint's output, so it is what the steps after the approval read as their input. An empty body resumes with no payload. That open shape is why this route is not a typed op: an operation's input can carry the payload or the run address, never both. Org-scoped and fails closed: a validated principal is required (403 without one), the run is read under the caller's OWN org so another tenant's run id is a 404, a body that is not JSON is a 400, and a payload over the size limit is a 413 — it becomes durable engine state, so it is bounded here rather than after it lands. The resume is audited as `automations.run.resume`.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -4647,9 +4647,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Releases a run waiting at an approval step, with the approval payload.
|
||||
"""Release a run waiting at an approval step, with the approval payload
|
||||
|
||||
Releases a run waiting at an approval step, with the approval payload. It delivers the durable `resume` signal to a run parked on a `wait_for_approval` waitpoint and answers `{resumed:true}` once the engine has taken it. The body is an ARBITRARY JSON value — object, array, string, number — delivered VERBATIM into the workflow as that waitpoint's output, so it is what the steps after the approval read as their input. An empty body resumes with no payload. That open shape is why this route is not a typed op: an operation's input can carry the payload or the run address, never both. Org-scoped and fails closed: a validated principal is required (403 without one), the run is read under the caller's OWN org so another tenant's run id is a 404, a body that is not JSON is a 400, and a payload over the size limit is a 413 — it becomes durable engine state, so it is bounded here rather than after it lands. The resume is audited as `automations.run.resume`.
|
||||
Delivers the durable `resume` signal to a run parked on a `wait_for_approval` waitpoint and answers `{resumed:true}` once the engine has taken it. The body is an ARBITRARY JSON value — object, array, string, number — delivered VERBATIM into the workflow as that waitpoint's output, so it is what the steps after the approval read as their input. An empty body resumes with no payload. That open shape is why this route is not a typed op: an operation's input can carry the payload or the run address, never both. Org-scoped and fails closed: a validated principal is required (403 without one), the run is read under the caller's OWN org so another tenant's run id is a 404, a body that is not JSON is a 400, and a payload over the size limit is a 413 — it becomes durable engine state, so it is bounded here rather than after it lands. The resume is audited as `automations.run.resume`.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -4713,9 +4713,9 @@ class AutomationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Releases a run waiting at an approval step, with the approval payload.
|
||||
"""Release a run waiting at an approval step, with the approval payload
|
||||
|
||||
Releases a run waiting at an approval step, with the approval payload. It delivers the durable `resume` signal to a run parked on a `wait_for_approval` waitpoint and answers `{resumed:true}` once the engine has taken it. The body is an ARBITRARY JSON value — object, array, string, number — delivered VERBATIM into the workflow as that waitpoint's output, so it is what the steps after the approval read as their input. An empty body resumes with no payload. That open shape is why this route is not a typed op: an operation's input can carry the payload or the run address, never both. Org-scoped and fails closed: a validated principal is required (403 without one), the run is read under the caller's OWN org so another tenant's run id is a 404, a body that is not JSON is a 400, and a payload over the size limit is a 413 — it becomes durable engine state, so it is bounded here rather than after it lands. The resume is audited as `automations.run.resume`.
|
||||
Delivers the durable `resume` signal to a run parked on a `wait_for_approval` waitpoint and answers `{resumed:true}` once the engine has taken it. The body is an ARBITRARY JSON value — object, array, string, number — delivered VERBATIM into the workflow as that waitpoint's output, so it is what the steps after the approval read as their input. An empty body resumes with no payload. That open shape is why this route is not a typed op: an operation's input can carry the payload or the run address, never both. Org-scoped and fails closed: a validated principal is required (403 without one), the run is read under the caller's OWN org so another tenant's run id is a 404, a body that is not JSON is a 400, and a payload over the size limit is a 413 — it becomes durable engine state, so it is bounded here rather than after it lands. The resume is audited as `automations.run.resume`.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
|
||||
@@ -55,9 +55,9 @@ class AvatarApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Fetches a profile photo.
|
||||
"""Fetch a profile photo
|
||||
|
||||
Fetches a profile photo. It streams a profile photo's raw BYTES. This is the address stored on the user's IAM record and rendered directly by an `<img>`, so it takes no credentials — the 64-hex content digest in the path is the capability, and it can only be produced by someone who already has the image. The Content-Type is derived from the stored bytes and the response carries nosniff, so only a real raster image is ever served and only under its true type. Anything else — a miss, a malformed path, an object that is not an image — is one 404, and a hit caches for a year because the address is the content.
|
||||
Streams a profile photo's raw BYTES. This is the address stored on the user's IAM record and rendered directly by an `<img>`, so it takes no credentials — the 64-hex content digest in the path is the capability, and it can only be produced by someone who already has the image. The Content-Type is derived from the stored bytes and the response carries nosniff, so only a real raster image is ever served and only under its true type. Anything else — a miss, a malformed path, an object that is not an image — is one 404, and a hit caches for a year because the address is the content.
|
||||
|
||||
:param org: (required)
|
||||
:type org: str
|
||||
@@ -129,9 +129,9 @@ class AvatarApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Fetches a profile photo.
|
||||
"""Fetch a profile photo
|
||||
|
||||
Fetches a profile photo. It streams a profile photo's raw BYTES. This is the address stored on the user's IAM record and rendered directly by an `<img>`, so it takes no credentials — the 64-hex content digest in the path is the capability, and it can only be produced by someone who already has the image. The Content-Type is derived from the stored bytes and the response carries nosniff, so only a real raster image is ever served and only under its true type. Anything else — a miss, a malformed path, an object that is not an image — is one 404, and a hit caches for a year because the address is the content.
|
||||
Streams a profile photo's raw BYTES. This is the address stored on the user's IAM record and rendered directly by an `<img>`, so it takes no credentials — the 64-hex content digest in the path is the capability, and it can only be produced by someone who already has the image. The Content-Type is derived from the stored bytes and the response carries nosniff, so only a real raster image is ever served and only under its true type. Anything else — a miss, a malformed path, an object that is not an image — is one 404, and a hit caches for a year because the address is the content.
|
||||
|
||||
:param org: (required)
|
||||
:type org: str
|
||||
@@ -203,9 +203,9 @@ class AvatarApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Fetches a profile photo.
|
||||
"""Fetch a profile photo
|
||||
|
||||
Fetches a profile photo. It streams a profile photo's raw BYTES. This is the address stored on the user's IAM record and rendered directly by an `<img>`, so it takes no credentials — the 64-hex content digest in the path is the capability, and it can only be produced by someone who already has the image. The Content-Type is derived from the stored bytes and the response carries nosniff, so only a real raster image is ever served and only under its true type. Anything else — a miss, a malformed path, an object that is not an image — is one 404, and a hit caches for a year because the address is the content.
|
||||
Streams a profile photo's raw BYTES. This is the address stored on the user's IAM record and rendered directly by an `<img>`, so it takes no credentials — the 64-hex content digest in the path is the capability, and it can only be produced by someone who already has the image. The Content-Type is derived from the stored bytes and the response carries nosniff, so only a real raster image is ever served and only under its true type. Anything else — a miss, a malformed path, an object that is not an image — is one 404, and a hit caches for a year because the address is the content.
|
||||
|
||||
:param org: (required)
|
||||
:type org: str
|
||||
@@ -332,9 +332,9 @@ class AvatarApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Sets the caller's profile photo.
|
||||
"""Set your profile photo
|
||||
|
||||
Sets the caller's profile photo. It stores one image as the signed-in user's profile photo and answers the URL it is served from, which is also written to the user's IAM record — so every surface that already renders `avatar` picks it up with no further call. The body is a multipart form with a `file` part. The format is decided by the BYTES, never the filename or the part's Content-Type: png, jpeg, gif and webp are accepted and everything else is refused with 415, so an SVG cannot be stored as a picture and later served as a program. Over 8 MiB is 413; empty is 400. The photo is addressed by the sha256 of its bytes, so setting a new one yields a new URL rather than a stale cache of the old face. The caller is taken from the validated identity ONLY — there is no way to name a different subject — so this always sets your own photo, and a caller with no organization yet is refused.
|
||||
Stores one image as the signed-in user's profile photo and answers the URL it is served from, which is also written to the user's IAM record — so every surface that already renders `avatar` picks it up with no further call. The body is a multipart form with a `file` part. The format is decided by the BYTES, never the filename or the part's Content-Type: png, jpeg, gif and webp are accepted and everything else is refused with 415, so an SVG cannot be stored as a picture and later served as a program. Over 8 MiB is 413; empty is 400. The photo is addressed by the sha256 of its bytes, so setting a new one yields a new URL rather than a stale cache of the old face. The caller is taken from the validated identity ONLY — there is no way to name a different subject — so this always sets your own photo, and a caller with no organization yet is refused.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -394,9 +394,9 @@ class AvatarApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Sets the caller's profile photo.
|
||||
"""Set your profile photo
|
||||
|
||||
Sets the caller's profile photo. It stores one image as the signed-in user's profile photo and answers the URL it is served from, which is also written to the user's IAM record — so every surface that already renders `avatar` picks it up with no further call. The body is a multipart form with a `file` part. The format is decided by the BYTES, never the filename or the part's Content-Type: png, jpeg, gif and webp are accepted and everything else is refused with 415, so an SVG cannot be stored as a picture and later served as a program. Over 8 MiB is 413; empty is 400. The photo is addressed by the sha256 of its bytes, so setting a new one yields a new URL rather than a stale cache of the old face. The caller is taken from the validated identity ONLY — there is no way to name a different subject — so this always sets your own photo, and a caller with no organization yet is refused.
|
||||
Stores one image as the signed-in user's profile photo and answers the URL it is served from, which is also written to the user's IAM record — so every surface that already renders `avatar` picks it up with no further call. The body is a multipart form with a `file` part. The format is decided by the BYTES, never the filename or the part's Content-Type: png, jpeg, gif and webp are accepted and everything else is refused with 415, so an SVG cannot be stored as a picture and later served as a program. Over 8 MiB is 413; empty is 400. The photo is addressed by the sha256 of its bytes, so setting a new one yields a new URL rather than a stale cache of the old face. The caller is taken from the validated identity ONLY — there is no way to name a different subject — so this always sets your own photo, and a caller with no organization yet is refused.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -456,9 +456,9 @@ class AvatarApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Sets the caller's profile photo.
|
||||
"""Set your profile photo
|
||||
|
||||
Sets the caller's profile photo. It stores one image as the signed-in user's profile photo and answers the URL it is served from, which is also written to the user's IAM record — so every surface that already renders `avatar` picks it up with no further call. The body is a multipart form with a `file` part. The format is decided by the BYTES, never the filename or the part's Content-Type: png, jpeg, gif and webp are accepted and everything else is refused with 415, so an SVG cannot be stored as a picture and later served as a program. Over 8 MiB is 413; empty is 400. The photo is addressed by the sha256 of its bytes, so setting a new one yields a new URL rather than a stale cache of the old face. The caller is taken from the validated identity ONLY — there is no way to name a different subject — so this always sets your own photo, and a caller with no organization yet is refused.
|
||||
Stores one image as the signed-in user's profile photo and answers the URL it is served from, which is also written to the user's IAM record — so every surface that already renders `avatar` picks it up with no further call. The body is a multipart form with a `file` part. The format is decided by the BYTES, never the filename or the part's Content-Type: png, jpeg, gif and webp are accepted and everything else is refused with 415, so an SVG cannot be stored as a picture and later served as a program. Over 8 MiB is 413; empty is 400. The photo is addressed by the sha256 of its bytes, so setting a new one yields a new URL rather than a stale cache of the old face. The caller is taken from the validated identity ONLY — there is no way to name a different subject — so this always sets your own photo, and a caller with no organization yet is refused.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -2282,9 +2282,9 @@ class BillingApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Answers the prepaid credit the caller's org can still spend.
|
||||
"""Prepaid credit the caller's org can still spend
|
||||
|
||||
Answers the prepaid credit the caller's org can still spend. It is the spendable prepaid balance of the wallet this caller bills from — the same wallet the AI prepaid gate reads before admitting a paid request, the edge meter debits, and a top-up credits. The wallet is an ADDRESS, not an org: `account` echoes the key resolved within the ledger — the org's shared pool for a tenant org, a personal account for a member of the shared signup org. The echo is the point. A browser could only GUESS its own payer by decoding its own token, and a guess that disagrees with the server is how money lands in an account the gate never reads. `balance`, `holds` and `available` are whole USD cents, ROUNDED from the ledger's exact 18-decimal value. On the co-resident ledger `holds` is 0 and `available` equals `balance`: the gate's reservations live in its own pod and are never posted, so the settled balance IS the spendable one. The ledger is the caller's own org, taken from the VALIDATED IAM owner claim and never from a client header. No validated principal is 401 — with one exception, the trusted in-process service token the AI gate itself presents, which reads the gateway-pinned org and nothing it could name. A balance that cannot be READ is 502, never 0: unknown is not broke.
|
||||
Answers the spendable prepaid balance of the wallet this caller bills from — the same wallet the AI prepaid gate reads before admitting a paid request, the edge meter debits, and a top-up credits. The wallet is an ADDRESS, not an org: `account` echoes the key resolved within the ledger — the org's shared pool for a tenant org, a personal account for a member of the shared signup org. The echo is the point. A browser could only GUESS its own payer by decoding its own token, and a guess that disagrees with the server is how money lands in an account the gate never reads. `balance`, `holds` and `available` are whole USD cents, ROUNDED from the ledger's exact 18-decimal value. On the co-resident ledger `holds` is 0 and `available` equals `balance`: the gate's reservations live in its own pod and are never posted, so the settled balance IS the spendable one. The ledger is the caller's own org, taken from the VALIDATED IAM owner claim and never from a client header. No validated principal is 401 — with one exception, the trusted in-process service token the AI gate itself presents, which reads the gateway-pinned org and nothing it could name. A balance that cannot be READ is 502, never 0: unknown is not broke.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -2344,9 +2344,9 @@ class BillingApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Answers the prepaid credit the caller's org can still spend.
|
||||
"""Prepaid credit the caller's org can still spend
|
||||
|
||||
Answers the prepaid credit the caller's org can still spend. It is the spendable prepaid balance of the wallet this caller bills from — the same wallet the AI prepaid gate reads before admitting a paid request, the edge meter debits, and a top-up credits. The wallet is an ADDRESS, not an org: `account` echoes the key resolved within the ledger — the org's shared pool for a tenant org, a personal account for a member of the shared signup org. The echo is the point. A browser could only GUESS its own payer by decoding its own token, and a guess that disagrees with the server is how money lands in an account the gate never reads. `balance`, `holds` and `available` are whole USD cents, ROUNDED from the ledger's exact 18-decimal value. On the co-resident ledger `holds` is 0 and `available` equals `balance`: the gate's reservations live in its own pod and are never posted, so the settled balance IS the spendable one. The ledger is the caller's own org, taken from the VALIDATED IAM owner claim and never from a client header. No validated principal is 401 — with one exception, the trusted in-process service token the AI gate itself presents, which reads the gateway-pinned org and nothing it could name. A balance that cannot be READ is 502, never 0: unknown is not broke.
|
||||
Answers the spendable prepaid balance of the wallet this caller bills from — the same wallet the AI prepaid gate reads before admitting a paid request, the edge meter debits, and a top-up credits. The wallet is an ADDRESS, not an org: `account` echoes the key resolved within the ledger — the org's shared pool for a tenant org, a personal account for a member of the shared signup org. The echo is the point. A browser could only GUESS its own payer by decoding its own token, and a guess that disagrees with the server is how money lands in an account the gate never reads. `balance`, `holds` and `available` are whole USD cents, ROUNDED from the ledger's exact 18-decimal value. On the co-resident ledger `holds` is 0 and `available` equals `balance`: the gate's reservations live in its own pod and are never posted, so the settled balance IS the spendable one. The ledger is the caller's own org, taken from the VALIDATED IAM owner claim and never from a client header. No validated principal is 401 — with one exception, the trusted in-process service token the AI gate itself presents, which reads the gateway-pinned org and nothing it could name. A balance that cannot be READ is 502, never 0: unknown is not broke.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -2406,9 +2406,9 @@ class BillingApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Answers the prepaid credit the caller's org can still spend.
|
||||
"""Prepaid credit the caller's org can still spend
|
||||
|
||||
Answers the prepaid credit the caller's org can still spend. It is the spendable prepaid balance of the wallet this caller bills from — the same wallet the AI prepaid gate reads before admitting a paid request, the edge meter debits, and a top-up credits. The wallet is an ADDRESS, not an org: `account` echoes the key resolved within the ledger — the org's shared pool for a tenant org, a personal account for a member of the shared signup org. The echo is the point. A browser could only GUESS its own payer by decoding its own token, and a guess that disagrees with the server is how money lands in an account the gate never reads. `balance`, `holds` and `available` are whole USD cents, ROUNDED from the ledger's exact 18-decimal value. On the co-resident ledger `holds` is 0 and `available` equals `balance`: the gate's reservations live in its own pod and are never posted, so the settled balance IS the spendable one. The ledger is the caller's own org, taken from the VALIDATED IAM owner claim and never from a client header. No validated principal is 401 — with one exception, the trusted in-process service token the AI gate itself presents, which reads the gateway-pinned org and nothing it could name. A balance that cannot be READ is 502, never 0: unknown is not broke.
|
||||
Answers the spendable prepaid balance of the wallet this caller bills from — the same wallet the AI prepaid gate reads before admitting a paid request, the edge meter debits, and a top-up credits. The wallet is an ADDRESS, not an org: `account` echoes the key resolved within the ledger — the org's shared pool for a tenant org, a personal account for a member of the shared signup org. The echo is the point. A browser could only GUESS its own payer by decoding its own token, and a guess that disagrees with the server is how money lands in an account the gate never reads. `balance`, `holds` and `available` are whole USD cents, ROUNDED from the ledger's exact 18-decimal value. On the co-resident ledger `holds` is 0 and `available` equals `balance`: the gate's reservations live in its own pod and are never posted, so the settled balance IS the spendable one. The ledger is the caller's own org, taken from the VALIDATED IAM owner claim and never from a client header. No validated principal is 401 — with one exception, the trusted in-process service token the AI gate itself presents, which reads the gateway-pinned org and nothing it could name. A balance that cannot be READ is 502, never 0: unknown is not broke.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5837,9 +5837,9 @@ class BillingApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Answers every billed call the caller's org made, attributed to a product.
|
||||
"""Every billed call the caller's org made, attributed to a product
|
||||
|
||||
Answers every billed call the caller's org made, attributed to a product. One row per BILLED call against the caller's org — transaction id, amount, timestamp and the metered unit. This is the raw charged ledger, not a rollup. Each row is stamped with a canonical `metadata.product` derived from what the meter persisted: `agent` becomes agents, `provisioning` becomes the provisioned kind, a token-metered row becomes inference, anything else keeps its metering surface. The ledger has no product field of its own, so this read is where that dimension is made real — from the SAME charged rows, never a second meter. A row that already carries its own product WINS, so the derivation stops the day the meter records one. `product=<id>` filters to one product server-side. `groupBy=product` reduces to `{product,requests,amountCents}` rollups instead of rows. `amount` is whole USD cents, ROUNDED; `decimal` beside it is the SAME debit exact, as an 18-decimal USD string. Sum `decimal`. A page of sub-cent token calls totals correctly there and totals ZERO in `amount` — that difference is real money. Scoped to the caller's own org's books, where the org's ledger file IS the tenant boundary; no client-supplied subject is ever forwarded. 401 without a validated principal. The co-resident read returns the 2000 most recent debits, newest first; `start` and `end` narrow the window only on the split-deploy upstream.
|
||||
Answers one row per BILLED call against the caller's org — transaction id, amount, timestamp and the metered unit. This is the raw charged ledger, not a rollup. Each row is stamped with a canonical `metadata.product` derived from what the meter persisted: `agent` becomes agents, `provisioning` becomes the provisioned kind, a token-metered row becomes inference, anything else keeps its metering surface. The ledger has no product field of its own, so this read is where that dimension is made real — from the SAME charged rows, never a second meter. A row that already carries its own product WINS, so the derivation stops the day the meter records one. `product=<id>` filters to one product server-side. `groupBy=product` reduces to `{product,requests,amountCents}` rollups instead of rows. `amount` is whole USD cents, ROUNDED; `decimal` beside it is the SAME debit exact, as an 18-decimal USD string. Sum `decimal`. A page of sub-cent token calls totals correctly there and totals ZERO in `amount` — that difference is real money. Scoped to the caller's own org's books, where the org's ledger file IS the tenant boundary; no client-supplied subject is ever forwarded. 401 without a validated principal. The co-resident read returns the 2000 most recent debits, newest first; `start` and `end` narrow the window only on the split-deploy upstream.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5899,9 +5899,9 @@ class BillingApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Answers every billed call the caller's org made, attributed to a product.
|
||||
"""Every billed call the caller's org made, attributed to a product
|
||||
|
||||
Answers every billed call the caller's org made, attributed to a product. One row per BILLED call against the caller's org — transaction id, amount, timestamp and the metered unit. This is the raw charged ledger, not a rollup. Each row is stamped with a canonical `metadata.product` derived from what the meter persisted: `agent` becomes agents, `provisioning` becomes the provisioned kind, a token-metered row becomes inference, anything else keeps its metering surface. The ledger has no product field of its own, so this read is where that dimension is made real — from the SAME charged rows, never a second meter. A row that already carries its own product WINS, so the derivation stops the day the meter records one. `product=<id>` filters to one product server-side. `groupBy=product` reduces to `{product,requests,amountCents}` rollups instead of rows. `amount` is whole USD cents, ROUNDED; `decimal` beside it is the SAME debit exact, as an 18-decimal USD string. Sum `decimal`. A page of sub-cent token calls totals correctly there and totals ZERO in `amount` — that difference is real money. Scoped to the caller's own org's books, where the org's ledger file IS the tenant boundary; no client-supplied subject is ever forwarded. 401 without a validated principal. The co-resident read returns the 2000 most recent debits, newest first; `start` and `end` narrow the window only on the split-deploy upstream.
|
||||
Answers one row per BILLED call against the caller's org — transaction id, amount, timestamp and the metered unit. This is the raw charged ledger, not a rollup. Each row is stamped with a canonical `metadata.product` derived from what the meter persisted: `agent` becomes agents, `provisioning` becomes the provisioned kind, a token-metered row becomes inference, anything else keeps its metering surface. The ledger has no product field of its own, so this read is where that dimension is made real — from the SAME charged rows, never a second meter. A row that already carries its own product WINS, so the derivation stops the day the meter records one. `product=<id>` filters to one product server-side. `groupBy=product` reduces to `{product,requests,amountCents}` rollups instead of rows. `amount` is whole USD cents, ROUNDED; `decimal` beside it is the SAME debit exact, as an 18-decimal USD string. Sum `decimal`. A page of sub-cent token calls totals correctly there and totals ZERO in `amount` — that difference is real money. Scoped to the caller's own org's books, where the org's ledger file IS the tenant boundary; no client-supplied subject is ever forwarded. 401 without a validated principal. The co-resident read returns the 2000 most recent debits, newest first; `start` and `end` narrow the window only on the split-deploy upstream.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5961,9 +5961,9 @@ class BillingApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Answers every billed call the caller's org made, attributed to a product.
|
||||
"""Every billed call the caller's org made, attributed to a product
|
||||
|
||||
Answers every billed call the caller's org made, attributed to a product. One row per BILLED call against the caller's org — transaction id, amount, timestamp and the metered unit. This is the raw charged ledger, not a rollup. Each row is stamped with a canonical `metadata.product` derived from what the meter persisted: `agent` becomes agents, `provisioning` becomes the provisioned kind, a token-metered row becomes inference, anything else keeps its metering surface. The ledger has no product field of its own, so this read is where that dimension is made real — from the SAME charged rows, never a second meter. A row that already carries its own product WINS, so the derivation stops the day the meter records one. `product=<id>` filters to one product server-side. `groupBy=product` reduces to `{product,requests,amountCents}` rollups instead of rows. `amount` is whole USD cents, ROUNDED; `decimal` beside it is the SAME debit exact, as an 18-decimal USD string. Sum `decimal`. A page of sub-cent token calls totals correctly there and totals ZERO in `amount` — that difference is real money. Scoped to the caller's own org's books, where the org's ledger file IS the tenant boundary; no client-supplied subject is ever forwarded. 401 without a validated principal. The co-resident read returns the 2000 most recent debits, newest first; `start` and `end` narrow the window only on the split-deploy upstream.
|
||||
Answers one row per BILLED call against the caller's org — transaction id, amount, timestamp and the metered unit. This is the raw charged ledger, not a rollup. Each row is stamped with a canonical `metadata.product` derived from what the meter persisted: `agent` becomes agents, `provisioning` becomes the provisioned kind, a token-metered row becomes inference, anything else keeps its metering surface. The ledger has no product field of its own, so this read is where that dimension is made real — from the SAME charged rows, never a second meter. A row that already carries its own product WINS, so the derivation stops the day the meter records one. `product=<id>` filters to one product server-side. `groupBy=product` reduces to `{product,requests,amountCents}` rollups instead of rows. `amount` is whole USD cents, ROUNDED; `decimal` beside it is the SAME debit exact, as an 18-decimal USD string. Sum `decimal`. A page of sub-cent token calls totals correctly there and totals ZERO in `amount` — that difference is real money. Scoped to the caller's own org's books, where the org's ledger file IS the tenant boundary; no client-supplied subject is ever forwarded. 401 without a validated principal. The co-resident read returns the 2000 most recent debits, newest first; `start` and `end` narrow the window only on the split-deploy upstream.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -543,9 +543,9 @@ class BlueprintApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Answers a blueprint's bill of images and what running it costs.
|
||||
"""A blueprint's bill of images and what running it costs
|
||||
|
||||
Answers a blueprint's bill of images and what running it costs. It returns the container images the blueprint's compose stack runs, each with the CPU/memory footprint that was applied to it, together with the compute cost that footprint prices out to on the active rate card. ONE address, TWO shapes at 200: `?template=<id>` returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no `template` returns `{data:[Estimate]}` for every blueprint — the batch the console's template gallery reads in one round-trip. The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
|
||||
Answers a blueprint's SBOM — the container images its compose stack runs, each with the CPU/memory footprint that was applied to it — together with the compute cost that footprint prices out to on the active rate card. ONE address, TWO shapes at 200: `?template=<id>` returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no `template` returns `{data:[Estimate]}` for every blueprint — the batch the console's template gallery reads in one round-trip. The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -605,9 +605,9 @@ class BlueprintApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Answers a blueprint's bill of images and what running it costs.
|
||||
"""A blueprint's bill of images and what running it costs
|
||||
|
||||
Answers a blueprint's bill of images and what running it costs. It returns the container images the blueprint's compose stack runs, each with the CPU/memory footprint that was applied to it, together with the compute cost that footprint prices out to on the active rate card. ONE address, TWO shapes at 200: `?template=<id>` returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no `template` returns `{data:[Estimate]}` for every blueprint — the batch the console's template gallery reads in one round-trip. The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
|
||||
Answers a blueprint's SBOM — the container images its compose stack runs, each with the CPU/memory footprint that was applied to it — together with the compute cost that footprint prices out to on the active rate card. ONE address, TWO shapes at 200: `?template=<id>` returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no `template` returns `{data:[Estimate]}` for every blueprint — the batch the console's template gallery reads in one round-trip. The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -667,9 +667,9 @@ class BlueprintApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Answers a blueprint's bill of images and what running it costs.
|
||||
"""A blueprint's bill of images and what running it costs
|
||||
|
||||
Answers a blueprint's bill of images and what running it costs. It returns the container images the blueprint's compose stack runs, each with the CPU/memory footprint that was applied to it, together with the compute cost that footprint prices out to on the active rate card. ONE address, TWO shapes at 200: `?template=<id>` returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no `template` returns `{data:[Estimate]}` for every blueprint — the batch the console's template gallery reads in one round-trip. The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
|
||||
Answers a blueprint's SBOM — the container images its compose stack runs, each with the CPU/memory footprint that was applied to it — together with the compute cost that footprint prices out to on the active rate card. ONE address, TWO shapes at 200: `?template=<id>` returns that blueprint's Estimate alone (404 on an id no embedded blueprint carries), and no `template` returns `{data:[Estimate]}` for every blueprint — the batch the console's template gallery reads in one round-trip. The blueprints are reference content embedded in the binary and validated at mount, so this read is the same for every caller and is scoped to no tenant. The per-hour figure it returns is the one the deploy path meters the deploying org on and the 20% author royalty is taken from; GET /v1/blueprint/health echoes the rate card it was priced from.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -559,9 +559,9 @@ class BotsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Is the reserved address for launching a bot run — not implemented, always 501.
|
||||
"""Reserved address for launching a bot run — not implemented, always 501
|
||||
|
||||
Is the reserved address for launching a bot run — not implemented, always 501. It answers 501 to every call. The bot runtime exposes no launch operation, so nothing here can start a sandbox, and this address is published rather than dropped because it is reserved: routes resolve by specificity, so the `run` literal can never bind as a run id against its neighbour /v1/bots/:runId/stop. The refusal is total and takes no input. The handler never reads the body, so any bytes at all — malformed JSON included — get the same 501; no run id is minted, no session URL is handed back, and no per-run fee is charged. That is the point: the earlier version minted an id the runtime had never heard of, pointed it at a VNC node that did not exist, and took real money for it. Listing and stopping runs are live and org-scoped. Only the launch is missing, and it returns in the same change that can prove a bot boots.
|
||||
Answers 501 to every call. The bot runtime exposes no launch operation, so nothing here can start a sandbox, and this address is published rather than dropped because it is reserved: routes resolve by specificity, so the `run` literal can never bind as a run id against its neighbour `/v1/bots/:runId/stop`. The refusal is total and takes no input. The handler never reads the body, so any bytes at all — malformed JSON included — get the same 501; no run id is minted, no session URL is handed back, and no per-run fee is charged. That is the point: the earlier version minted an id the runtime had never heard of, pointed it at a VNC node that did not exist, and took real money for it. Listing and stopping runs are live and org-scoped. Only the launch is missing, and it returns in the same change that can prove a bot boots.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -621,9 +621,9 @@ class BotsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Is the reserved address for launching a bot run — not implemented, always 501.
|
||||
"""Reserved address for launching a bot run — not implemented, always 501
|
||||
|
||||
Is the reserved address for launching a bot run — not implemented, always 501. It answers 501 to every call. The bot runtime exposes no launch operation, so nothing here can start a sandbox, and this address is published rather than dropped because it is reserved: routes resolve by specificity, so the `run` literal can never bind as a run id against its neighbour /v1/bots/:runId/stop. The refusal is total and takes no input. The handler never reads the body, so any bytes at all — malformed JSON included — get the same 501; no run id is minted, no session URL is handed back, and no per-run fee is charged. That is the point: the earlier version minted an id the runtime had never heard of, pointed it at a VNC node that did not exist, and took real money for it. Listing and stopping runs are live and org-scoped. Only the launch is missing, and it returns in the same change that can prove a bot boots.
|
||||
Answers 501 to every call. The bot runtime exposes no launch operation, so nothing here can start a sandbox, and this address is published rather than dropped because it is reserved: routes resolve by specificity, so the `run` literal can never bind as a run id against its neighbour `/v1/bots/:runId/stop`. The refusal is total and takes no input. The handler never reads the body, so any bytes at all — malformed JSON included — get the same 501; no run id is minted, no session URL is handed back, and no per-run fee is charged. That is the point: the earlier version minted an id the runtime had never heard of, pointed it at a VNC node that did not exist, and took real money for it. Listing and stopping runs are live and org-scoped. Only the launch is missing, and it returns in the same change that can prove a bot boots.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -683,9 +683,9 @@ class BotsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Is the reserved address for launching a bot run — not implemented, always 501.
|
||||
"""Reserved address for launching a bot run — not implemented, always 501
|
||||
|
||||
Is the reserved address for launching a bot run — not implemented, always 501. It answers 501 to every call. The bot runtime exposes no launch operation, so nothing here can start a sandbox, and this address is published rather than dropped because it is reserved: routes resolve by specificity, so the `run` literal can never bind as a run id against its neighbour /v1/bots/:runId/stop. The refusal is total and takes no input. The handler never reads the body, so any bytes at all — malformed JSON included — get the same 501; no run id is minted, no session URL is handed back, and no per-run fee is charged. That is the point: the earlier version minted an id the runtime had never heard of, pointed it at a VNC node that did not exist, and took real money for it. Listing and stopping runs are live and org-scoped. Only the launch is missing, and it returns in the same change that can prove a bot boots.
|
||||
Answers 501 to every call. The bot runtime exposes no launch operation, so nothing here can start a sandbox, and this address is published rather than dropped because it is reserved: routes resolve by specificity, so the `run` literal can never bind as a run id against its neighbour `/v1/bots/:runId/stop`. The refusal is total and takes no input. The handler never reads the body, so any bytes at all — malformed JSON included — get the same 501; no run id is minted, no session URL is handed back, and no per-run fee is charged. That is the point: the earlier version minted an id the runtime had never heard of, pointed it at a VNC node that did not exist, and took real money for it. Listing and stopping runs are live and org-scoped. Only the launch is missing, and it returns in the same change that can prove a bot boots.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -2246,9 +2246,9 @@ class CampaignApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Launches a campaign across every channel it declares.
|
||||
"""Launch a campaign across every channel it declares
|
||||
|
||||
Launches a campaign across every channel it declares. It pushes the campaign live on each of its channels through that channel's executor and answers the whole campaign with the per-channel outcome written back onto it. The fan-out is BEST-EFFORT PER CHANNEL, and the honest reading of the result is the rule most callers get wrong: one channel failing never aborts the others, so each channel row carries its own `live`, `failed` or `unavailable` status and detail, and a paid launch can be live while an email launch failed. The campaign itself is `live` when AT LEAST ONE channel launched and `failed` only when none did — `live` is not a claim that every channel launched. Repeating the call is safe: a channel already live is skipped, never re-launched. A campaign carrying more than one creative has its variant assigned here by the experiment seam and tagged as `utm_content`. Org-scoped and fails closed: a valid bearer is required (403 without one), the campaign is read under the caller's OWN org so another tenant's id is a 404, and a campaign with no channels is a 400 — there is nothing to launch. Each executor resolves its own org's connector token from the org passed to it, so a launch can never spend through another tenant's connector.
|
||||
Pushes the campaign live on each of its channels through that channel's executor and answers the whole campaign with the per-channel outcome written back onto it. The fan-out is BEST-EFFORT PER CHANNEL, and the honest reading of the result is the rule most callers get wrong: one channel failing never aborts the others, so each channel row carries its own `live`, `failed` or `unavailable` status and detail, and a paid launch can be live while an email launch failed. The campaign itself is `live` when AT LEAST ONE channel launched and `failed` only when none did — `live` is not a claim that every channel launched. Repeating the call is safe: a channel already live is skipped, never re-launched. A campaign carrying more than one creative has its variant assigned here by the experiment seam and tagged as `utm_content`. Org-scoped and fails closed: a valid bearer is required (403 without one), the campaign is read under the caller's OWN org so another tenant's id is a 404, and a campaign with no channels is a 400 — there is nothing to launch. Each executor resolves its own org's connector token from the org passed to it, so a launch can never spend through another tenant's connector.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2312,9 +2312,9 @@ class CampaignApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Launches a campaign across every channel it declares.
|
||||
"""Launch a campaign across every channel it declares
|
||||
|
||||
Launches a campaign across every channel it declares. It pushes the campaign live on each of its channels through that channel's executor and answers the whole campaign with the per-channel outcome written back onto it. The fan-out is BEST-EFFORT PER CHANNEL, and the honest reading of the result is the rule most callers get wrong: one channel failing never aborts the others, so each channel row carries its own `live`, `failed` or `unavailable` status and detail, and a paid launch can be live while an email launch failed. The campaign itself is `live` when AT LEAST ONE channel launched and `failed` only when none did — `live` is not a claim that every channel launched. Repeating the call is safe: a channel already live is skipped, never re-launched. A campaign carrying more than one creative has its variant assigned here by the experiment seam and tagged as `utm_content`. Org-scoped and fails closed: a valid bearer is required (403 without one), the campaign is read under the caller's OWN org so another tenant's id is a 404, and a campaign with no channels is a 400 — there is nothing to launch. Each executor resolves its own org's connector token from the org passed to it, so a launch can never spend through another tenant's connector.
|
||||
Pushes the campaign live on each of its channels through that channel's executor and answers the whole campaign with the per-channel outcome written back onto it. The fan-out is BEST-EFFORT PER CHANNEL, and the honest reading of the result is the rule most callers get wrong: one channel failing never aborts the others, so each channel row carries its own `live`, `failed` or `unavailable` status and detail, and a paid launch can be live while an email launch failed. The campaign itself is `live` when AT LEAST ONE channel launched and `failed` only when none did — `live` is not a claim that every channel launched. Repeating the call is safe: a channel already live is skipped, never re-launched. A campaign carrying more than one creative has its variant assigned here by the experiment seam and tagged as `utm_content`. Org-scoped and fails closed: a valid bearer is required (403 without one), the campaign is read under the caller's OWN org so another tenant's id is a 404, and a campaign with no channels is a 400 — there is nothing to launch. Each executor resolves its own org's connector token from the org passed to it, so a launch can never spend through another tenant's connector.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2378,9 +2378,9 @@ class CampaignApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Launches a campaign across every channel it declares.
|
||||
"""Launch a campaign across every channel it declares
|
||||
|
||||
Launches a campaign across every channel it declares. It pushes the campaign live on each of its channels through that channel's executor and answers the whole campaign with the per-channel outcome written back onto it. The fan-out is BEST-EFFORT PER CHANNEL, and the honest reading of the result is the rule most callers get wrong: one channel failing never aborts the others, so each channel row carries its own `live`, `failed` or `unavailable` status and detail, and a paid launch can be live while an email launch failed. The campaign itself is `live` when AT LEAST ONE channel launched and `failed` only when none did — `live` is not a claim that every channel launched. Repeating the call is safe: a channel already live is skipped, never re-launched. A campaign carrying more than one creative has its variant assigned here by the experiment seam and tagged as `utm_content`. Org-scoped and fails closed: a valid bearer is required (403 without one), the campaign is read under the caller's OWN org so another tenant's id is a 404, and a campaign with no channels is a 400 — there is nothing to launch. Each executor resolves its own org's connector token from the org passed to it, so a launch can never spend through another tenant's connector.
|
||||
Pushes the campaign live on each of its channels through that channel's executor and answers the whole campaign with the per-channel outcome written back onto it. The fan-out is BEST-EFFORT PER CHANNEL, and the honest reading of the result is the rule most callers get wrong: one channel failing never aborts the others, so each channel row carries its own `live`, `failed` or `unavailable` status and detail, and a paid launch can be live while an email launch failed. The campaign itself is `live` when AT LEAST ONE channel launched and `failed` only when none did — `live` is not a claim that every channel launched. Repeating the call is safe: a channel already live is skipped, never re-launched. A campaign carrying more than one creative has its variant assigned here by the experiment seam and tagged as `utm_content`. Org-scoped and fails closed: a valid bearer is required (403 without one), the campaign is read under the caller's OWN org so another tenant's id is a 404, and a campaign with no channels is a 400 — there is nothing to launch. Each executor resolves its own org's connector token from the org passed to it, so a launch can never spend through another tenant's connector.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2496,9 +2496,9 @@ class CampaignApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Pauses every live channel on a campaign at its provider.
|
||||
"""Pause every live channel on a campaign at its provider
|
||||
|
||||
Pauses every live channel on a campaign at its provider. It pauses each live channel on its provider and answers the whole campaign, moved to `paused`, with the per-channel outcome written back onto it. Only channels that are live and carry a provider reference are touched; a channel whose executor is no longer wired is marked `unavailable` and one whose pause errored is marked `failed`, with the reason on the row. The campaign still reports `paused` in both cases, and that is deliberate rather than sloppy: no live channel remains that this process will meter, and the rows say exactly which provider was not reached so it can be settled by hand. Org-scoped and fails closed: a valid bearer is required (403 without one) and the campaign is read under the caller's OWN org, so another tenant's id is a 404.
|
||||
Pauses each live channel on its provider and answers the whole campaign, moved to `paused`, with the per-channel outcome written back onto it. Only channels that are live and carry a provider reference are touched; a channel whose executor is no longer wired is marked `unavailable` and one whose pause errored is marked `failed`, with the reason on the row. The campaign still reports `paused` in both cases, and that is deliberate rather than sloppy: no live channel remains that this process will meter, and the rows say exactly which provider was not reached so it can be settled by hand. Org-scoped and fails closed: a valid bearer is required (403 without one) and the campaign is read under the caller's OWN org, so another tenant's id is a 404.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2562,9 +2562,9 @@ class CampaignApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Pauses every live channel on a campaign at its provider.
|
||||
"""Pause every live channel on a campaign at its provider
|
||||
|
||||
Pauses every live channel on a campaign at its provider. It pauses each live channel on its provider and answers the whole campaign, moved to `paused`, with the per-channel outcome written back onto it. Only channels that are live and carry a provider reference are touched; a channel whose executor is no longer wired is marked `unavailable` and one whose pause errored is marked `failed`, with the reason on the row. The campaign still reports `paused` in both cases, and that is deliberate rather than sloppy: no live channel remains that this process will meter, and the rows say exactly which provider was not reached so it can be settled by hand. Org-scoped and fails closed: a valid bearer is required (403 without one) and the campaign is read under the caller's OWN org, so another tenant's id is a 404.
|
||||
Pauses each live channel on its provider and answers the whole campaign, moved to `paused`, with the per-channel outcome written back onto it. Only channels that are live and carry a provider reference are touched; a channel whose executor is no longer wired is marked `unavailable` and one whose pause errored is marked `failed`, with the reason on the row. The campaign still reports `paused` in both cases, and that is deliberate rather than sloppy: no live channel remains that this process will meter, and the rows say exactly which provider was not reached so it can be settled by hand. Org-scoped and fails closed: a valid bearer is required (403 without one) and the campaign is read under the caller's OWN org, so another tenant's id is a 404.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2628,9 +2628,9 @@ class CampaignApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Pauses every live channel on a campaign at its provider.
|
||||
"""Pause every live channel on a campaign at its provider
|
||||
|
||||
Pauses every live channel on a campaign at its provider. It pauses each live channel on its provider and answers the whole campaign, moved to `paused`, with the per-channel outcome written back onto it. Only channels that are live and carry a provider reference are touched; a channel whose executor is no longer wired is marked `unavailable` and one whose pause errored is marked `failed`, with the reason on the row. The campaign still reports `paused` in both cases, and that is deliberate rather than sloppy: no live channel remains that this process will meter, and the rows say exactly which provider was not reached so it can be settled by hand. Org-scoped and fails closed: a valid bearer is required (403 without one) and the campaign is read under the caller's OWN org, so another tenant's id is a 404.
|
||||
Pauses each live channel on its provider and answers the whole campaign, moved to `paused`, with the per-channel outcome written back onto it. Only channels that are live and carry a provider reference are touched; a channel whose executor is no longer wired is marked `unavailable` and one whose pause errored is marked `failed`, with the reason on the row. The campaign still reports `paused` in both cases, and that is deliberate rather than sloppy: no live channel remains that this process will meter, and the rows say exactly which provider was not reached so it can be settled by hand. Org-scoped and fails closed: a valid bearer is required (403 without one) and the campaign is read under the caller's OWN org, so another tenant's id is a 404.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
|
||||
@@ -4327,9 +4327,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Amends a share class.
|
||||
"""Amend a share class
|
||||
|
||||
Amends a share class. It rewrites one share class — the amendment path for a class whose authorized count, price, seniority or preference terms have changed. It REPLACES the class rather than merging into it: every field is taken from this body, so an omitted field resets to the create-time default instead of keeping its current value. Send the full class. The index and the derived prefix are unchanged by an amendment. An id that is not this company's is not found. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Rewrites one share class — the amendment path for a class whose authorized count, price, seniority or preference terms have changed. It REPLACES the class rather than merging into it: every field is taken from this body, so an omitted field resets to the create-time default instead of keeping its current value. Send the full class. The index and the derived prefix are unchanged by an amendment. An id that is not this company's is not found. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -4393,9 +4393,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Amends a share class.
|
||||
"""Amend a share class
|
||||
|
||||
Amends a share class. It rewrites one share class — the amendment path for a class whose authorized count, price, seniority or preference terms have changed. It REPLACES the class rather than merging into it: every field is taken from this body, so an omitted field resets to the create-time default instead of keeping its current value. Send the full class. The index and the derived prefix are unchanged by an amendment. An id that is not this company's is not found. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Rewrites one share class — the amendment path for a class whose authorized count, price, seniority or preference terms have changed. It REPLACES the class rather than merging into it: every field is taken from this body, so an omitted field resets to the create-time default instead of keeping its current value. Send the full class. The index and the derived prefix are unchanged by an amendment. An id that is not this company's is not found. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -4459,9 +4459,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Amends a share class.
|
||||
"""Amend a share class
|
||||
|
||||
Amends a share class. It rewrites one share class — the amendment path for a class whose authorized count, price, seniority or preference terms have changed. It REPLACES the class rather than merging into it: every field is taken from this body, so an omitted field resets to the create-time default instead of keeping its current value. Send the full class. The index and the derived prefix are unchanged by an amendment. An id that is not this company's is not found. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Rewrites one share class — the amendment path for a class whose authorized count, price, seniority or preference terms have changed. It REPLACES the class rather than merging into it: every field is taken from this body, so an omitted field resets to the create-time default instead of keeping its current value. Send the full class. The index and the derived prefix are unchanged by an amendment. An id that is not this company's is not found. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -4864,9 +4864,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Defines a share class.
|
||||
"""Define a share class
|
||||
|
||||
Defines a share class. It creates a class of stock — its authorized share count, votes per share, par and issue price, seniority, conversion rights and liquidation/participation multiples — which is what shares, priced rounds and equity plans are then issued against. Two fields are the company's to assign, not the caller's: the class index auto-increments per company, and the certificate prefix is DERIVED from the class type (CS for COMMON, PS for anything else), so a prefix in the body is ignored. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Creates a class of stock — its authorized share count, votes per share, par and issue price, seniority, conversion rights and liquidation/participation multiples — which is what shares, priced rounds and equity plans are then issued against. Two fields are the company's to assign, not the caller's: the class index auto-increments per company, and the certificate prefix is DERIVED from the class type (CS for COMMON, PS for anything else), so a prefix in the body is ignored. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -4926,9 +4926,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Defines a share class.
|
||||
"""Define a share class
|
||||
|
||||
Defines a share class. It creates a class of stock — its authorized share count, votes per share, par and issue price, seniority, conversion rights and liquidation/participation multiples — which is what shares, priced rounds and equity plans are then issued against. Two fields are the company's to assign, not the caller's: the class index auto-increments per company, and the certificate prefix is DERIVED from the class type (CS for COMMON, PS for anything else), so a prefix in the body is ignored. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Creates a class of stock — its authorized share count, votes per share, par and issue price, seniority, conversion rights and liquidation/participation multiples — which is what shares, priced rounds and equity plans are then issued against. Two fields are the company's to assign, not the caller's: the class index auto-increments per company, and the certificate prefix is DERIVED from the class type (CS for COMMON, PS for anything else), so a prefix in the body is ignored. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -4988,9 +4988,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Defines a share class.
|
||||
"""Define a share class
|
||||
|
||||
Defines a share class. It creates a class of stock — its authorized share count, votes per share, par and issue price, seniority, conversion rights and liquidation/participation multiples — which is what shares, priced rounds and equity plans are then issued against. Two fields are the company's to assign, not the caller's: the class index auto-increments per company, and the certificate prefix is DERIVED from the class type (CS for COMMON, PS for anything else), so a prefix in the body is ignored. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Creates a class of stock — its authorized share count, votes per share, par and issue price, seniority, conversion rights and liquidation/participation multiples — which is what shares, priced rounds and equity plans are then issued against. Two fields are the company's to assign, not the caller's: the class index auto-increments per company, and the certificate prefix is DERIVED from the class type (CS for COMMON, PS for anything else), so a prefix in the body is ignored. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5099,9 +5099,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Records a convertible note.
|
||||
"""Record a convertible note
|
||||
|
||||
Records a convertible note. It records a convertible note held by a stakeholder: the principal, the conversion cap, discount and interest rate, MFN, and the issue and board-approval dates. The stakeholder must already exist in this company, and the note's public id must be unused there — a reused id is a conflict rather than an overwrite. Like a SAFE, this records the instrument only; conversion is not performed here. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records a convertible note held by a stakeholder: the principal, the conversion cap, discount and interest rate, MFN, and the issue and board-approval dates. The stakeholder must already exist in this company, and the note's public id must be unused there — a reused id is a conflict rather than an overwrite. Like a SAFE, this records the instrument only; conversion is not performed here. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5161,9 +5161,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Records a convertible note.
|
||||
"""Record a convertible note
|
||||
|
||||
Records a convertible note. It records a convertible note held by a stakeholder: the principal, the conversion cap, discount and interest rate, MFN, and the issue and board-approval dates. The stakeholder must already exist in this company, and the note's public id must be unused there — a reused id is a conflict rather than an overwrite. Like a SAFE, this records the instrument only; conversion is not performed here. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records a convertible note held by a stakeholder: the principal, the conversion cap, discount and interest rate, MFN, and the issue and board-approval dates. The stakeholder must already exist in this company, and the note's public id must be unused there — a reused id is a conflict rather than an overwrite. Like a SAFE, this records the instrument only; conversion is not performed here. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5223,9 +5223,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Records a convertible note.
|
||||
"""Record a convertible note
|
||||
|
||||
Records a convertible note. It records a convertible note held by a stakeholder: the principal, the conversion cap, discount and interest rate, MFN, and the issue and board-approval dates. The stakeholder must already exist in this company, and the note's public id must be unused there — a reused id is a conflict rather than an overwrite. Like a SAFE, this records the instrument only; conversion is not performed here. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records a convertible note held by a stakeholder: the principal, the conversion cap, discount and interest rate, MFN, and the issue and board-approval dates. The stakeholder must already exist in this company, and the note's public id must be unused there — a reused id is a conflict rather than an overwrite. Like a SAFE, this records the instrument only; conversion is not performed here. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5334,9 +5334,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Grants options from an equity plan.
|
||||
"""Grant options from an equity plan
|
||||
|
||||
Grants options from an equity plan. It records an option grant to a stakeholder under an equity plan — quantity, exercise price, ISO/NSO type, cliff and vesting years, and the issue, expiration, vesting-start, board-approval and Rule 144 dates. The stakeholder and the equity plan must both already exist in this company, and the grant id must be unused there — a reused grant id is a conflict, so a grant can never be overwritten by a later one carrying the same number. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records an option grant to a stakeholder under an equity plan — quantity, exercise price, ISO/NSO type, cliff and vesting years, and the issue, expiration, vesting-start, board-approval and Rule 144 dates. The stakeholder and the equity plan must both already exist in this company, and the grant id must be unused there — a reused grant id is a conflict, so a grant can never be overwritten by a later one carrying the same number. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5396,9 +5396,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Grants options from an equity plan.
|
||||
"""Grant options from an equity plan
|
||||
|
||||
Grants options from an equity plan. It records an option grant to a stakeholder under an equity plan — quantity, exercise price, ISO/NSO type, cliff and vesting years, and the issue, expiration, vesting-start, board-approval and Rule 144 dates. The stakeholder and the equity plan must both already exist in this company, and the grant id must be unused there — a reused grant id is a conflict, so a grant can never be overwritten by a later one carrying the same number. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records an option grant to a stakeholder under an equity plan — quantity, exercise price, ISO/NSO type, cliff and vesting years, and the issue, expiration, vesting-start, board-approval and Rule 144 dates. The stakeholder and the equity plan must both already exist in this company, and the grant id must be unused there — a reused grant id is a conflict, so a grant can never be overwritten by a later one carrying the same number. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5458,9 +5458,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Grants options from an equity plan.
|
||||
"""Grant options from an equity plan
|
||||
|
||||
Grants options from an equity plan. It records an option grant to a stakeholder under an equity plan — quantity, exercise price, ISO/NSO type, cliff and vesting years, and the issue, expiration, vesting-start, board-approval and Rule 144 dates. The stakeholder and the equity plan must both already exist in this company, and the grant id must be unused there — a reused grant id is a conflict, so a grant can never be overwritten by a later one carrying the same number. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records an option grant to a stakeholder under an equity plan — quantity, exercise price, ISO/NSO type, cliff and vesting years, and the issue, expiration, vesting-start, board-approval and Rule 144 dates. The stakeholder and the equity plan must both already exist in this company, and the grant id must be unused there — a reused grant id is a conflict, so a grant can never be overwritten by a later one carrying the same number. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5569,9 +5569,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Opens an equity incentive plan.
|
||||
"""Open an equity incentive plan
|
||||
|
||||
Opens an equity incentive plan. It reserves a pool of shares out of a share class for option grants, with the board approval and effective dates and what happens to cancelled options. The share class must already exist in this company — a plan cannot reserve out of nothing. Note the field name the bundle reads for the cancellation behaviour is `defaultCancellatonBehavior`; that spelling is the wire, and a correctly spelled key is simply not seen. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Reserves a pool of shares out of a share class for option grants, with the board approval and effective dates and what happens to cancelled options. The share class must already exist in this company — a plan cannot reserve out of nothing. Note the field name the bundle reads for the cancellation behaviour is `defaultCancellatonBehavior`; that spelling is the wire, and a correctly spelled key is simply not seen. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5631,9 +5631,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Opens an equity incentive plan.
|
||||
"""Open an equity incentive plan
|
||||
|
||||
Opens an equity incentive plan. It reserves a pool of shares out of a share class for option grants, with the board approval and effective dates and what happens to cancelled options. The share class must already exist in this company — a plan cannot reserve out of nothing. Note the field name the bundle reads for the cancellation behaviour is `defaultCancellatonBehavior`; that spelling is the wire, and a correctly spelled key is simply not seen. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Reserves a pool of shares out of a share class for option grants, with the board approval and effective dates and what happens to cancelled options. The share class must already exist in this company — a plan cannot reserve out of nothing. Note the field name the bundle reads for the cancellation behaviour is `defaultCancellatonBehavior`; that spelling is the wire, and a correctly spelled key is simply not seen. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5693,9 +5693,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Opens an equity incentive plan.
|
||||
"""Open an equity incentive plan
|
||||
|
||||
Opens an equity incentive plan. It reserves a pool of shares out of a share class for option grants, with the board approval and effective dates and what happens to cancelled options. The share class must already exist in this company — a plan cannot reserve out of nothing. Note the field name the bundle reads for the cancellation behaviour is `defaultCancellatonBehavior`; that spelling is the wire, and a correctly spelled key is simply not seen. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Reserves a pool of shares out of a share class for option grants, with the board approval and effective dates and what happens to cancelled options. The share class must already exist in this company — a plan cannot reserve out of nothing. Note the field name the bundle reads for the cancellation behaviour is `defaultCancellatonBehavior`; that spelling is the wire, and a correctly spelled key is simply not seen. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5804,9 +5804,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Opens a funding round.
|
||||
"""Open a funding round
|
||||
|
||||
Opens a funding round. It opens a round with its name, type and target amount. The round starts OPEN with nothing raised; investments are then added to it, and closing it is its own call. A PRICED round is the constrained case: it requires a share class that exists in this company and a price per share above zero, because that price is what converts each investment into issued shares. Its pre-money valuation is optional. A non-priced round carries none of the three. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Opens a round with its name, type and target amount. It starts OPEN with nothing raised; investments are then added to it, and closing it is its own call. A PRICED round is the constrained case: it requires a share class that exists in this company and a price per share above zero, because that price is what converts each investment into issued shares. Its pre-money valuation is optional. A non-priced round carries none of the three. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5866,9 +5866,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Opens a funding round.
|
||||
"""Open a funding round
|
||||
|
||||
Opens a funding round. It opens a round with its name, type and target amount. The round starts OPEN with nothing raised; investments are then added to it, and closing it is its own call. A PRICED round is the constrained case: it requires a share class that exists in this company and a price per share above zero, because that price is what converts each investment into issued shares. Its pre-money valuation is optional. A non-priced round carries none of the three. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Opens a round with its name, type and target amount. It starts OPEN with nothing raised; investments are then added to it, and closing it is its own call. A PRICED round is the constrained case: it requires a share class that exists in this company and a price per share above zero, because that price is what converts each investment into issued shares. Its pre-money valuation is optional. A non-priced round carries none of the three. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5928,9 +5928,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Opens a funding round.
|
||||
"""Open a funding round
|
||||
|
||||
Opens a funding round. It opens a round with its name, type and target amount. The round starts OPEN with nothing raised; investments are then added to it, and closing it is its own call. A PRICED round is the constrained case: it requires a share class that exists in this company and a price per share above zero, because that price is what converts each investment into issued shares. Its pre-money valuation is optional. A non-priced round carries none of the three. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Opens a round with its name, type and target amount. It starts OPEN with nothing raised; investments are then added to it, and closing it is its own call. A PRICED round is the constrained case: it requires a share class that exists in this company and a price per share above zero, because that price is what converts each investment into issued shares. Its pre-money valuation is optional. A non-priced round carries none of the three. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -6328,9 +6328,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Records an investment into a round.
|
||||
"""Record an investment into a round
|
||||
|
||||
Records an investment into a round. It records what a stakeholder put into a round and adds it to the round's raised total. On a PRICED round this ISSUES SHARES as well as recording the money: the amount is divided by the round's price per share, rounded DOWN to whole shares, and a new certificate for them is issued to the investor in the round's share class — so an amount too small to buy one whole share is refused rather than recorded as a zero-share investment. On a non-priced round the money is recorded and no shares are issued. The round must exist in this company and still be OPEN — a closed round refuses further investment — and the investor must already be a stakeholder here. The date defaults to today when omitted. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records what a stakeholder put into a round and adds it to the round's raised total. On a PRICED round this ISSUES SHARES as well as recording the money: the amount is divided by the round's price per share, rounded DOWN to whole shares, and a new certificate for them is issued to the investor in the round's share class — so an amount too small to buy one whole share is refused rather than recorded as a zero-share investment. On a non-priced round the money is recorded and no shares are issued. The round must exist in this company and still be OPEN — a closed round refuses further investment — and the investor must already be a stakeholder here. The date defaults to today when omitted. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -6394,9 +6394,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Records an investment into a round.
|
||||
"""Record an investment into a round
|
||||
|
||||
Records an investment into a round. It records what a stakeholder put into a round and adds it to the round's raised total. On a PRICED round this ISSUES SHARES as well as recording the money: the amount is divided by the round's price per share, rounded DOWN to whole shares, and a new certificate for them is issued to the investor in the round's share class — so an amount too small to buy one whole share is refused rather than recorded as a zero-share investment. On a non-priced round the money is recorded and no shares are issued. The round must exist in this company and still be OPEN — a closed round refuses further investment — and the investor must already be a stakeholder here. The date defaults to today when omitted. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records what a stakeholder put into a round and adds it to the round's raised total. On a PRICED round this ISSUES SHARES as well as recording the money: the amount is divided by the round's price per share, rounded DOWN to whole shares, and a new certificate for them is issued to the investor in the round's share class — so an amount too small to buy one whole share is refused rather than recorded as a zero-share investment. On a non-priced round the money is recorded and no shares are issued. The round must exist in this company and still be OPEN — a closed round refuses further investment — and the investor must already be a stakeholder here. The date defaults to today when omitted. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -6460,9 +6460,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Records an investment into a round.
|
||||
"""Record an investment into a round
|
||||
|
||||
Records an investment into a round. It records what a stakeholder put into a round and adds it to the round's raised total. On a PRICED round this ISSUES SHARES as well as recording the money: the amount is divided by the round's price per share, rounded DOWN to whole shares, and a new certificate for them is issued to the investor in the round's share class — so an amount too small to buy one whole share is refused rather than recorded as a zero-share investment. On a non-priced round the money is recorded and no shares are issued. The round must exist in this company and still be OPEN — a closed round refuses further investment — and the investor must already be a stakeholder here. The date defaults to today when omitted. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records what a stakeholder put into a round and adds it to the round's raised total. On a PRICED round this ISSUES SHARES as well as recording the money: the amount is divided by the round's price per share, rounded DOWN to whole shares, and a new certificate for them is issued to the investor in the round's share class — so an amount too small to buy one whole share is refused rather than recorded as a zero-share investment. On a non-priced round the money is recorded and no shares are issued. The round must exist in this company and still be OPEN — a closed round refuses further investment — and the investor must already be a stakeholder here. The date defaults to today when omitted. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -6577,9 +6577,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Records a SAFE.
|
||||
"""Record a SAFE
|
||||
|
||||
Records a SAFE. It records a Simple Agreement for Future Equity held by a stakeholder: the capital in, the valuation cap and discount, MFN and pro-rata rights, pre- or post-money type, and the issue and board-approval dates. The stakeholder must already exist in this company, and the SAFE's public id must be unused there — a reused id is a conflict rather than an overwrite. This records the instrument; it does not convert it, so nothing is issued against a share class until a round does that. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records a Simple Agreement for Future Equity held by a stakeholder: the capital in, the valuation cap and discount, MFN and pro-rata rights, pre- or post-money type, and the issue and board-approval dates. The stakeholder must already exist in this company, and the SAFE's public id must be unused there — a reused id is a conflict rather than an overwrite. This records the instrument; it does not convert it, so nothing is issued against a share class until a round does that. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -6639,9 +6639,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Records a SAFE.
|
||||
"""Record a SAFE
|
||||
|
||||
Records a SAFE. It records a Simple Agreement for Future Equity held by a stakeholder: the capital in, the valuation cap and discount, MFN and pro-rata rights, pre- or post-money type, and the issue and board-approval dates. The stakeholder must already exist in this company, and the SAFE's public id must be unused there — a reused id is a conflict rather than an overwrite. This records the instrument; it does not convert it, so nothing is issued against a share class until a round does that. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records a Simple Agreement for Future Equity held by a stakeholder: the capital in, the valuation cap and discount, MFN and pro-rata rights, pre- or post-money type, and the issue and board-approval dates. The stakeholder must already exist in this company, and the SAFE's public id must be unused there — a reused id is a conflict rather than an overwrite. This records the instrument; it does not convert it, so nothing is issued against a share class until a round does that. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -6701,9 +6701,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Records a SAFE.
|
||||
"""Record a SAFE
|
||||
|
||||
Records a SAFE. It records a Simple Agreement for Future Equity held by a stakeholder: the capital in, the valuation cap and discount, MFN and pro-rata rights, pre- or post-money type, and the issue and board-approval dates. The stakeholder must already exist in this company, and the SAFE's public id must be unused there — a reused id is a conflict rather than an overwrite. This records the instrument; it does not convert it, so nothing is issued against a share class until a round does that. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records a Simple Agreement for Future Equity held by a stakeholder: the capital in, the valuation cap and discount, MFN and pro-rata rights, pre- or post-money type, and the issue and board-approval dates. The stakeholder must already exist in this company, and the SAFE's public id must be unused there — a reused id is a conflict rather than an overwrite. This records the instrument; it does not convert it, so nothing is issued against a share class until a round does that. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -6812,9 +6812,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Issues a share certificate.
|
||||
"""Issue a share certificate
|
||||
|
||||
Issues a share certificate. It issues shares of a class to a stakeholder as a certificate: quantity, price and capital contributed, the vesting cliff and term, the legends on the certificate, and the issue, Rule 144, vesting-start and board-approval dates. Both the stakeholder and the share class must already exist in this company, and the certificate id must be unused there — a reused id is a conflict, never a silent overwrite of an existing certificate. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Issues shares of a class to a stakeholder as a certificate: quantity, price and capital contributed, the vesting cliff and term, the legends on the certificate, and the issue, Rule 144, vesting-start and board-approval dates. Both the stakeholder and the share class must already exist in this company, and the certificate id must be unused there — a reused id is a conflict, never a silent overwrite of an existing certificate. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -6874,9 +6874,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Issues a share certificate.
|
||||
"""Issue a share certificate
|
||||
|
||||
Issues a share certificate. It issues shares of a class to a stakeholder as a certificate: quantity, price and capital contributed, the vesting cliff and term, the legends on the certificate, and the issue, Rule 144, vesting-start and board-approval dates. Both the stakeholder and the share class must already exist in this company, and the certificate id must be unused there — a reused id is a conflict, never a silent overwrite of an existing certificate. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Issues shares of a class to a stakeholder as a certificate: quantity, price and capital contributed, the vesting cliff and term, the legends on the certificate, and the issue, Rule 144, vesting-start and board-approval dates. Both the stakeholder and the share class must already exist in this company, and the certificate id must be unused there — a reused id is a conflict, never a silent overwrite of an existing certificate. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -6936,9 +6936,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Issues a share certificate.
|
||||
"""Issue a share certificate
|
||||
|
||||
Issues a share certificate. It issues shares of a class to a stakeholder as a certificate: quantity, price and capital contributed, the vesting cliff and term, the legends on the certificate, and the issue, Rule 144, vesting-start and board-approval dates. Both the stakeholder and the share class must already exist in this company, and the certificate id must be unused there — a reused id is a conflict, never a silent overwrite of an existing certificate. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Issues shares of a class to a stakeholder as a certificate: quantity, price and capital contributed, the vesting cliff and term, the legends on the certificate, and the issue, Rule 144, vesting-start and board-approval dates. Both the stakeholder and the share class must already exist in this company, and the certificate id must be unused there — a reused id is a conflict, never a silent overwrite of an existing certificate. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7047,9 +7047,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Transfers shares to another stakeholder.
|
||||
"""Transfer shares to another stakeholder
|
||||
|
||||
Transfers shares to another stakeholder. It moves shares from one certificate to another stakeholder, in one atomic step. OMITTING `quantity` transfers the WHOLE certificate, which simply reassigns it and answers newShareId null — that is the difference between a full and a partial transfer, and it is why quantity is absent rather than zero. A partial transfer shrinks the source certificate and issues a NEW one to the recipient, so it requires a `certificateId` for that new certificate and refuses a reused one. The quantity must be between 1 and what the source certificate actually holds; the recipient must be a stakeholder of this same company. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Moves shares from one certificate to another stakeholder, in one atomic step. OMITTING `quantity` transfers the WHOLE certificate, which simply reassigns it and answers newShareId null — that is the difference between a full and a partial transfer, and it is why quantity is absent rather than zero. A partial transfer shrinks the source certificate and issues a NEW one to the recipient, so it requires a `certificateId` for that new certificate and refuses a reused one. The quantity must be between 1 and what the source certificate actually holds; the recipient must be a stakeholder of this same company. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7109,9 +7109,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Transfers shares to another stakeholder.
|
||||
"""Transfer shares to another stakeholder
|
||||
|
||||
Transfers shares to another stakeholder. It moves shares from one certificate to another stakeholder, in one atomic step. OMITTING `quantity` transfers the WHOLE certificate, which simply reassigns it and answers newShareId null — that is the difference between a full and a partial transfer, and it is why quantity is absent rather than zero. A partial transfer shrinks the source certificate and issues a NEW one to the recipient, so it requires a `certificateId` for that new certificate and refuses a reused one. The quantity must be between 1 and what the source certificate actually holds; the recipient must be a stakeholder of this same company. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Moves shares from one certificate to another stakeholder, in one atomic step. OMITTING `quantity` transfers the WHOLE certificate, which simply reassigns it and answers newShareId null — that is the difference between a full and a partial transfer, and it is why quantity is absent rather than zero. A partial transfer shrinks the source certificate and issues a NEW one to the recipient, so it requires a `certificateId` for that new certificate and refuses a reused one. The quantity must be between 1 and what the source certificate actually holds; the recipient must be a stakeholder of this same company. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7171,9 +7171,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Transfers shares to another stakeholder.
|
||||
"""Transfer shares to another stakeholder
|
||||
|
||||
Transfers shares to another stakeholder. It moves shares from one certificate to another stakeholder, in one atomic step. OMITTING `quantity` transfers the WHOLE certificate, which simply reassigns it and answers newShareId null — that is the difference between a full and a partial transfer, and it is why quantity is absent rather than zero. A partial transfer shrinks the source certificate and issues a NEW one to the recipient, so it requires a `certificateId` for that new certificate and refuses a reused one. The quantity must be between 1 and what the source certificate actually holds; the recipient must be a stakeholder of this same company. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Moves shares from one certificate to another stakeholder, in one atomic step. OMITTING `quantity` transfers the WHOLE certificate, which simply reassigns it and answers newShareId null — that is the difference between a full and a partial transfer, and it is why quantity is absent rather than zero. A partial transfer shrinks the source certificate and issues a NEW one to the recipient, so it requires a `certificateId` for that new certificate and refuses a reused one. The quantity must be between 1 and what the source certificate actually holds; the recipient must be a stakeholder of this same company. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7282,9 +7282,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Adds stakeholders to the cap table.
|
||||
"""Add stakeholders to the cap table
|
||||
|
||||
Adds stakeholders to the cap table. It records the people and institutions that can hold equity — the rows every share, option, SAFE, note and investment is issued to. The body is ONE stakeholder object or an ARRAY of them, and the array is the point: a whole roster loads in a single call. Email is the identity within the company, so a stakeholder whose email is already on the table is SKIPPED rather than duplicated or rejected — the 201 reports how many rows were actually inserted, which is what makes re-running an import safe. Validation is all-or-nothing across the batch: one bad entry refuses the whole array. The body is a single object OR an array, which is why this is not a typed op: a Go struct decodes one or the other, never both. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records the people and institutions that can hold equity — the rows every share, option, SAFE, note and investment is issued to. The body is ONE stakeholder object or an ARRAY of them, and the array is the point: a whole roster loads in a single call. Email is the identity within the company, so a stakeholder whose email is already on the table is SKIPPED rather than duplicated or rejected — the 201 reports how many rows were actually inserted, which is what makes re-running an import safe. Validation is all-or-nothing across the batch: one bad entry refuses the whole array. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7344,9 +7344,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Adds stakeholders to the cap table.
|
||||
"""Add stakeholders to the cap table
|
||||
|
||||
Adds stakeholders to the cap table. It records the people and institutions that can hold equity — the rows every share, option, SAFE, note and investment is issued to. The body is ONE stakeholder object or an ARRAY of them, and the array is the point: a whole roster loads in a single call. Email is the identity within the company, so a stakeholder whose email is already on the table is SKIPPED rather than duplicated or rejected — the 201 reports how many rows were actually inserted, which is what makes re-running an import safe. Validation is all-or-nothing across the batch: one bad entry refuses the whole array. The body is a single object OR an array, which is why this is not a typed op: a Go struct decodes one or the other, never both. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records the people and institutions that can hold equity — the rows every share, option, SAFE, note and investment is issued to. The body is ONE stakeholder object or an ARRAY of them, and the array is the point: a whole roster loads in a single call. Email is the identity within the company, so a stakeholder whose email is already on the table is SKIPPED rather than duplicated or rejected — the 201 reports how many rows were actually inserted, which is what makes re-running an import safe. Validation is all-or-nothing across the batch: one bad entry refuses the whole array. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7406,9 +7406,9 @@ class CaptableApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Adds stakeholders to the cap table.
|
||||
"""Add stakeholders to the cap table
|
||||
|
||||
Adds stakeholders to the cap table. It records the people and institutions that can hold equity — the rows every share, option, SAFE, note and investment is issued to. The body is ONE stakeholder object or an ARRAY of them, and the array is the point: a whole roster loads in a single call. Email is the identity within the company, so a stakeholder whose email is already on the table is SKIPPED rather than duplicated or rejected — the 201 reports how many rows were actually inserted, which is what makes re-running an import safe. Validation is all-or-nothing across the batch: one bad entry refuses the whole array. The body is a single object OR an array, which is why this is not a typed op: a Go struct decodes one or the other, never both. It writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
Records the people and institutions that can hold equity — the rows every share, option, SAFE, note and investment is issued to. The body is ONE stakeholder object or an ARRAY of them, and the array is the point: a whole roster loads in a single call. Email is the identity within the company, so a stakeholder whose email is already on the table is SKIPPED rather than duplicated or rejected — the 201 reports how many rows were actually inserted, which is what makes re-running an import safe. Validation is all-or-nothing across the batch: one bad entry refuses the whole array. Writes the caller's OWN cap table: the org resolved from the validated principal selects the tenant's store and scopes every row, so there is no field by which a caller can write into another company's table; a request with no validated org is refused. The whole write runs in one transaction, so a refusal leaves nothing behind. Validation is the cap-table bundle's and so is its refusal: a bad body comes back as {success:false, message, errors:[…]} with the failing fields listed, and numeric fields accept a number OR a numeric string. Bodies are capped at 1 MiB.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -61,9 +61,9 @@ class ChannelsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ChatChannels:
|
||||
"""Returns every chat transport channels can talk to — Discord, Slack, Teams and Telegram — with the caller org's own facts on each: whether it is connected and to which account, what the transport supports, the org's DM and group access policies, and how many pairing requests are pending approval.
|
||||
"""Reports every chat channel this org can send through, and whether it can send through it right now.
|
||||
|
||||
Returns every chat transport channels can talk to — Discord, Slack, Teams and Telegram — with the caller org's own facts on each: whether it is connected and to which account, what the transport supports, the org's DM and group access policies, and how many pairing requests are pending approval. The order is fixed, so a console can render the same rows every time. A policy that cannot be read leaves that channel's policy fields empty rather than failing the whole listing.
|
||||
Reports every chat channel this org can send through, and whether it can send through it right now. A channel appears here whether or not it is connected — an empty list would leave a caller unable to tell \"this org has no Slack\" from \"Slack is down\", which are different problems with different fixes. Each entry carries the connection behind it, so the answer to \"why can I not post?\" is in the same response as the channel that cannot post.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -124,9 +124,9 @@ class ChannelsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[ChatChannels]:
|
||||
"""Returns every chat transport channels can talk to — Discord, Slack, Teams and Telegram — with the caller org's own facts on each: whether it is connected and to which account, what the transport supports, the org's DM and group access policies, and how many pairing requests are pending approval.
|
||||
"""Reports every chat channel this org can send through, and whether it can send through it right now.
|
||||
|
||||
Returns every chat transport channels can talk to — Discord, Slack, Teams and Telegram — with the caller org's own facts on each: whether it is connected and to which account, what the transport supports, the org's DM and group access policies, and how many pairing requests are pending approval. The order is fixed, so a console can render the same rows every time. A policy that cannot be read leaves that channel's policy fields empty rather than failing the whole listing.
|
||||
Reports every chat channel this org can send through, and whether it can send through it right now. A channel appears here whether or not it is connected — an empty list would leave a caller unable to tell \"this org has no Slack\" from \"Slack is down\", which are different problems with different fixes. Each entry carries the connection behind it, so the answer to \"why can I not post?\" is in the same response as the channel that cannot post.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -187,9 +187,9 @@ class ChannelsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Returns every chat transport channels can talk to — Discord, Slack, Teams and Telegram — with the caller org's own facts on each: whether it is connected and to which account, what the transport supports, the org's DM and group access policies, and how many pairing requests are pending approval.
|
||||
"""Reports every chat channel this org can send through, and whether it can send through it right now.
|
||||
|
||||
Returns every chat transport channels can talk to — Discord, Slack, Teams and Telegram — with the caller org's own facts on each: whether it is connected and to which account, what the transport supports, the org's DM and group access policies, and how many pairing requests are pending approval. The order is fixed, so a console can render the same rows every time. A policy that cannot be read leaves that channel's policy fields empty rather than failing the whole listing.
|
||||
Reports every chat channel this org can send through, and whether it can send through it right now. A channel appears here whether or not it is connected — an empty list would leave a caller unable to tell \"this org has no Slack\" from \"Slack is down\", which are different problems with different fixes. Each entry carries the connection behind it, so the answer to \"why can I not post?\" is in the same response as the channel that cannot post.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -2801,9 +2801,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Reads a Workers KV value as its stored bytes.
|
||||
"""Read a Workers KV value as its stored bytes
|
||||
|
||||
Reads a Workers KV value as its stored bytes. It answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param namespace: (required)
|
||||
:type namespace: str
|
||||
@@ -2871,9 +2871,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Reads a Workers KV value as its stored bytes.
|
||||
"""Read a Workers KV value as its stored bytes
|
||||
|
||||
Reads a Workers KV value as its stored bytes. It answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param namespace: (required)
|
||||
:type namespace: str
|
||||
@@ -2941,9 +2941,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Reads a Workers KV value as its stored bytes.
|
||||
"""Read a Workers KV value as its stored bytes
|
||||
|
||||
Reads a Workers KV value as its stored bytes. It answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param namespace: (required)
|
||||
:type namespace: str
|
||||
@@ -5568,9 +5568,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Runs a Cloudflare Workers AI model and gets its output back.
|
||||
"""Run a Cloudflare Workers AI model and get its output back
|
||||
|
||||
Runs a Cloudflare Workers AI model and gets its output back. The model id is the rest of the path, e.g. `@cf/meta/llama-3.1-8b-instruct`, and the run happens on the org's OWN Cloudflare account. The request body is whatever the chosen model takes (a prompt, chat messages, a base64 audio clip) and is forwarded unchanged; the response is the model's own, which for an image or audio model is BYTES under Cloudflare's content type rather than JSON. Both halves are why this is not a typed op. It is the ONE PRICED route on this plane, because a run is inference rather than passthrough. The org's own token already paid Cloudflare for the compute, so Hanzo debits only the thin BYO routing fee — never the full inference cost — and meters it on the SAME `ai` product axis and per-project caps as every other model call, so Workers AI spend sums with LLM spend. The fee has a floor, so every run leaves a usage row even for a modality that reports no tokens, and it emits one gen_ai span with `gen_ai.system = cloudflare`. Gated by BALANCE, not by the admin bit that guards the destructive verbs here: a validated org is enough, and a frozen, broke or over-cap org is refused with the fleet-wide 402/503 billing contract BEFORE any byte reaches Cloudflare — no run, and no account discovery either. An empty or oversized body is 400, as is a model id that is not a plain Cloudflare model path; 503 if the org has never connected a Cloudflare token.
|
||||
Runs a Workers AI model — the model id is the rest of the path, e.g. `@cf/meta/llama-3.1-8b-instruct` — on the org's OWN Cloudflare account and relays the model's output. The request body is whatever the chosen model takes (a prompt, chat messages, a base64 audio clip) and is forwarded unchanged; the response is the model's own, which for an image or audio model is BYTES under Cloudflare's content type rather than JSON. Both halves are why this is not a typed op. It is the ONE PRICED route on this plane, because a run is inference rather than passthrough. The org's own token already paid Cloudflare for the compute, so Hanzo debits only the thin BYO routing fee — never the full inference cost — and meters it on the SAME `ai` product axis and per-project caps as every other model call, so Workers AI spend sums with LLM spend. The fee has a floor, so every run leaves a usage row even for a modality that reports no tokens, and it emits one gen_ai span with `gen_ai.system = cloudflare`. Gated by BALANCE, not by the admin bit that guards the destructive verbs here: a validated org is enough, and a frozen, broke or over-cap org is refused with the fleet-wide 402/503 billing contract BEFORE any byte reaches Cloudflare — no run, and no account discovery either. An empty or oversized body is 400, as is a model id that is not a plain Cloudflare model path; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -5634,9 +5634,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Runs a Cloudflare Workers AI model and gets its output back.
|
||||
"""Run a Cloudflare Workers AI model and get its output back
|
||||
|
||||
Runs a Cloudflare Workers AI model and gets its output back. The model id is the rest of the path, e.g. `@cf/meta/llama-3.1-8b-instruct`, and the run happens on the org's OWN Cloudflare account. The request body is whatever the chosen model takes (a prompt, chat messages, a base64 audio clip) and is forwarded unchanged; the response is the model's own, which for an image or audio model is BYTES under Cloudflare's content type rather than JSON. Both halves are why this is not a typed op. It is the ONE PRICED route on this plane, because a run is inference rather than passthrough. The org's own token already paid Cloudflare for the compute, so Hanzo debits only the thin BYO routing fee — never the full inference cost — and meters it on the SAME `ai` product axis and per-project caps as every other model call, so Workers AI spend sums with LLM spend. The fee has a floor, so every run leaves a usage row even for a modality that reports no tokens, and it emits one gen_ai span with `gen_ai.system = cloudflare`. Gated by BALANCE, not by the admin bit that guards the destructive verbs here: a validated org is enough, and a frozen, broke or over-cap org is refused with the fleet-wide 402/503 billing contract BEFORE any byte reaches Cloudflare — no run, and no account discovery either. An empty or oversized body is 400, as is a model id that is not a plain Cloudflare model path; 503 if the org has never connected a Cloudflare token.
|
||||
Runs a Workers AI model — the model id is the rest of the path, e.g. `@cf/meta/llama-3.1-8b-instruct` — on the org's OWN Cloudflare account and relays the model's output. The request body is whatever the chosen model takes (a prompt, chat messages, a base64 audio clip) and is forwarded unchanged; the response is the model's own, which for an image or audio model is BYTES under Cloudflare's content type rather than JSON. Both halves are why this is not a typed op. It is the ONE PRICED route on this plane, because a run is inference rather than passthrough. The org's own token already paid Cloudflare for the compute, so Hanzo debits only the thin BYO routing fee — never the full inference cost — and meters it on the SAME `ai` product axis and per-project caps as every other model call, so Workers AI spend sums with LLM spend. The fee has a floor, so every run leaves a usage row even for a modality that reports no tokens, and it emits one gen_ai span with `gen_ai.system = cloudflare`. Gated by BALANCE, not by the admin bit that guards the destructive verbs here: a validated org is enough, and a frozen, broke or over-cap org is refused with the fleet-wide 402/503 billing contract BEFORE any byte reaches Cloudflare — no run, and no account discovery either. An empty or oversized body is 400, as is a model id that is not a plain Cloudflare model path; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -5700,9 +5700,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Runs a Cloudflare Workers AI model and gets its output back.
|
||||
"""Run a Cloudflare Workers AI model and get its output back
|
||||
|
||||
Runs a Cloudflare Workers AI model and gets its output back. The model id is the rest of the path, e.g. `@cf/meta/llama-3.1-8b-instruct`, and the run happens on the org's OWN Cloudflare account. The request body is whatever the chosen model takes (a prompt, chat messages, a base64 audio clip) and is forwarded unchanged; the response is the model's own, which for an image or audio model is BYTES under Cloudflare's content type rather than JSON. Both halves are why this is not a typed op. It is the ONE PRICED route on this plane, because a run is inference rather than passthrough. The org's own token already paid Cloudflare for the compute, so Hanzo debits only the thin BYO routing fee — never the full inference cost — and meters it on the SAME `ai` product axis and per-project caps as every other model call, so Workers AI spend sums with LLM spend. The fee has a floor, so every run leaves a usage row even for a modality that reports no tokens, and it emits one gen_ai span with `gen_ai.system = cloudflare`. Gated by BALANCE, not by the admin bit that guards the destructive verbs here: a validated org is enough, and a frozen, broke or over-cap org is refused with the fleet-wide 402/503 billing contract BEFORE any byte reaches Cloudflare — no run, and no account discovery either. An empty or oversized body is 400, as is a model id that is not a plain Cloudflare model path; 503 if the org has never connected a Cloudflare token.
|
||||
Runs a Workers AI model — the model id is the rest of the path, e.g. `@cf/meta/llama-3.1-8b-instruct` — on the org's OWN Cloudflare account and relays the model's output. The request body is whatever the chosen model takes (a prompt, chat messages, a base64 audio clip) and is forwarded unchanged; the response is the model's own, which for an image or audio model is BYTES under Cloudflare's content type rather than JSON. Both halves are why this is not a typed op. It is the ONE PRICED route on this plane, because a run is inference rather than passthrough. The org's own token already paid Cloudflare for the compute, so Hanzo debits only the thin BYO routing fee — never the full inference cost — and meters it on the SAME `ai` product axis and per-project caps as every other model call, so Workers AI spend sums with LLM spend. The fee has a floor, so every run leaves a usage row even for a modality that reports no tokens, and it emits one gen_ai span with `gen_ai.system = cloudflare`. Gated by BALANCE, not by the admin bit that guards the destructive verbs here: a validated org is enough, and a frozen, broke or over-cap org is refused with the fleet-wide 402/503 billing contract BEFORE any byte reaches Cloudflare — no run, and no account discovery either. An empty or oversized body is 400, as is a model id that is not a plain Cloudflare model path; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -6092,9 +6092,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> object:
|
||||
"""Runs a SQL statement against a D1 database.
|
||||
"""Run a SQL statement against a D1 database
|
||||
|
||||
Runs a SQL statement against a D1 database. It executes a statement on one D1 database on the org's OWN Cloudflare account and relays D1's result set. `sql` is required and `params` carries the bound values in placeholder order — use them rather than interpolating values into the statement. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here; the declared schema is open for that reason. That verbatim forward is why this is not a typed op — decoding and re-encoding the body would drop `params`, where the query's bound values live. Requires ORG ADMIN (403 otherwise); a malformed body or missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Executes a statement on one D1 database on the org's OWN Cloudflare account and relays D1's result set. `sql` is required and `params` carries the bound values in placeholder order — use them rather than interpolating values into the statement. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here; the declared schema is open for that reason. That verbatim forward is why this is not a typed op — decoding and re-encoding the body would drop `params`, where the query's bound values live. Requires ORG ADMIN (403 otherwise); a malformed body or missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param database: (required)
|
||||
:type database: str
|
||||
@@ -6163,9 +6163,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[object]:
|
||||
"""Runs a SQL statement against a D1 database.
|
||||
"""Run a SQL statement against a D1 database
|
||||
|
||||
Runs a SQL statement against a D1 database. It executes a statement on one D1 database on the org's OWN Cloudflare account and relays D1's result set. `sql` is required and `params` carries the bound values in placeholder order — use them rather than interpolating values into the statement. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here; the declared schema is open for that reason. That verbatim forward is why this is not a typed op — decoding and re-encoding the body would drop `params`, where the query's bound values live. Requires ORG ADMIN (403 otherwise); a malformed body or missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Executes a statement on one D1 database on the org's OWN Cloudflare account and relays D1's result set. `sql` is required and `params` carries the bound values in placeholder order — use them rather than interpolating values into the statement. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here; the declared schema is open for that reason. That verbatim forward is why this is not a typed op — decoding and re-encoding the body would drop `params`, where the query's bound values live. Requires ORG ADMIN (403 otherwise); a malformed body or missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param database: (required)
|
||||
:type database: str
|
||||
@@ -6234,9 +6234,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Runs a SQL statement against a D1 database.
|
||||
"""Run a SQL statement against a D1 database
|
||||
|
||||
Runs a SQL statement against a D1 database. It executes a statement on one D1 database on the org's OWN Cloudflare account and relays D1's result set. `sql` is required and `params` carries the bound values in placeholder order — use them rather than interpolating values into the statement. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here; the declared schema is open for that reason. That verbatim forward is why this is not a typed op — decoding and re-encoding the body would drop `params`, where the query's bound values live. Requires ORG ADMIN (403 otherwise); a malformed body or missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Executes a statement on one D1 database on the org's OWN Cloudflare account and relays D1's result set. `sql` is required and `params` carries the bound values in placeholder order — use them rather than interpolating values into the statement. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here; the declared schema is open for that reason. That verbatim forward is why this is not a typed op — decoding and re-encoding the body would drop `params`, where the query's bound values live. Requires ORG ADMIN (403 otherwise); a malformed body or missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param database: (required)
|
||||
:type database: str
|
||||
@@ -6926,9 +6926,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> object:
|
||||
"""Triggers a new Pages deployment for a project.
|
||||
"""Trigger a new Pages deployment for a project
|
||||
|
||||
Triggers a new Pages deployment for a project. It starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch. A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
|
||||
Starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch. A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param project: (required)
|
||||
:type project: str
|
||||
@@ -6997,9 +6997,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[object]:
|
||||
"""Triggers a new Pages deployment for a project.
|
||||
"""Trigger a new Pages deployment for a project
|
||||
|
||||
Triggers a new Pages deployment for a project. It starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch. A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
|
||||
Starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch. A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param project: (required)
|
||||
:type project: str
|
||||
@@ -7068,9 +7068,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Triggers a new Pages deployment for a project.
|
||||
"""Trigger a new Pages deployment for a project
|
||||
|
||||
Triggers a new Pages deployment for a project. It starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch. A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
|
||||
Starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch. A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param project: (required)
|
||||
:type project: str
|
||||
@@ -8639,9 +8639,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Writes a Workers KV value from the request body.
|
||||
"""Write a Workers KV value from the request body
|
||||
|
||||
Writes a Workers KV value from the request body. It stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
|
||||
Stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param namespace: (required)
|
||||
:type namespace: str
|
||||
@@ -8709,9 +8709,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Writes a Workers KV value from the request body.
|
||||
"""Write a Workers KV value from the request body
|
||||
|
||||
Writes a Workers KV value from the request body. It stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
|
||||
Stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param namespace: (required)
|
||||
:type namespace: str
|
||||
@@ -8779,9 +8779,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Writes a Workers KV value from the request body.
|
||||
"""Write a Workers KV value from the request body
|
||||
|
||||
Writes a Workers KV value from the request body. It stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
|
||||
Stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param namespace: (required)
|
||||
:type namespace: str
|
||||
@@ -8904,9 +8904,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> object:
|
||||
"""Uploads or replaces a module Worker script.
|
||||
"""Upload or replace a module Worker script
|
||||
|
||||
Uploads or replaces a module Worker script. It publishes a module Worker to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. `script` carries the module SOURCE; the optional compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects. The path names the script and the body field named `script` is its source — two different things that share a name, which is exactly why this cannot be a typed op: a binder that gives the URL the last word would overwrite the source with the script's name. Requires ORG ADMIN (403 otherwise); an unparseable body or empty source is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Publishes a module Worker to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. `script` carries the module SOURCE; the optional compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects. The path names the script and the body field named `script` is its source — two different things that share a name, which is exactly why this cannot be a typed op: a binder that gives the URL the last word would overwrite the source with the script's name. Requires ORG ADMIN (403 otherwise); an unparseable body or empty source is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param script: (required)
|
||||
:type script: str
|
||||
@@ -8975,9 +8975,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[object]:
|
||||
"""Uploads or replaces a module Worker script.
|
||||
"""Upload or replace a module Worker script
|
||||
|
||||
Uploads or replaces a module Worker script. It publishes a module Worker to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. `script` carries the module SOURCE; the optional compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects. The path names the script and the body field named `script` is its source — two different things that share a name, which is exactly why this cannot be a typed op: a binder that gives the URL the last word would overwrite the source with the script's name. Requires ORG ADMIN (403 otherwise); an unparseable body or empty source is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Publishes a module Worker to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. `script` carries the module SOURCE; the optional compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects. The path names the script and the body field named `script` is its source — two different things that share a name, which is exactly why this cannot be a typed op: a binder that gives the URL the last word would overwrite the source with the script's name. Requires ORG ADMIN (403 otherwise); an unparseable body or empty source is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param script: (required)
|
||||
:type script: str
|
||||
@@ -9046,9 +9046,9 @@ class CloudflareApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Uploads or replaces a module Worker script.
|
||||
"""Upload or replace a module Worker script
|
||||
|
||||
Uploads or replaces a module Worker script. It publishes a module Worker to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. `script` carries the module SOURCE; the optional compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects. The path names the script and the body field named `script` is its source — two different things that share a name, which is exactly why this cannot be a typed op: a binder that gives the URL the last word would overwrite the source with the script's name. Requires ORG ADMIN (403 otherwise); an unparseable body or empty source is 400; 503 if the org has never connected a Cloudflare token.
|
||||
Publishes a module Worker to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. `script` carries the module SOURCE; the optional compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects. The path names the script and the body field named `script` is its source — two different things that share a name, which is exactly why this cannot be a typed op: a binder that gives the URL the last word would overwrite the source with the script's name. Requires ORG ADMIN (403 otherwise); an unparseable body or empty source is 400; 503 if the org has never connected a Cloudflare token.
|
||||
|
||||
:param script: (required)
|
||||
:type script: str
|
||||
|
||||
@@ -56,6 +56,7 @@ class CodingApi:
|
||||
) -> CodingStarted:
|
||||
"""Start one autonomous coding run against a repo in the caller's org
|
||||
|
||||
Is the app's door. It answers 202 with the run's handle the moment the run is ADMITTED — not when it finishes. A coding run takes minutes; holding a request open for one would tie a connection to a model loop and give the caller nothing it cannot get better from the session stream. The handle is a session id, and that is deliberate: the session is already the run's durable record and its live stream (/v1/agents/sessions/{id}/stream), so this door does not grow a progress endpoint, a status endpoint or a cancel endpoint of its own. One way to watch a run, whoever started it.
|
||||
|
||||
:param coding_start_in: (required)
|
||||
:type coding_start_in: CodingStartIn
|
||||
@@ -122,6 +123,7 @@ class CodingApi:
|
||||
) -> ApiResponse[CodingStarted]:
|
||||
"""Start one autonomous coding run against a repo in the caller's org
|
||||
|
||||
Is the app's door. It answers 202 with the run's handle the moment the run is ADMITTED — not when it finishes. A coding run takes minutes; holding a request open for one would tie a connection to a model loop and give the caller nothing it cannot get better from the session stream. The handle is a session id, and that is deliberate: the session is already the run's durable record and its live stream (/v1/agents/sessions/{id}/stream), so this door does not grow a progress endpoint, a status endpoint or a cancel endpoint of its own. One way to watch a run, whoever started it.
|
||||
|
||||
:param coding_start_in: (required)
|
||||
:type coding_start_in: CodingStartIn
|
||||
@@ -188,6 +190,7 @@ class CodingApi:
|
||||
) -> RESTResponseType:
|
||||
"""Start one autonomous coding run against a repo in the caller's org
|
||||
|
||||
Is the app's door. It answers 202 with the run's handle the moment the run is ADMITTED — not when it finishes. A coding run takes minutes; holding a request open for one would tie a connection to a model loop and give the caller nothing it cannot get better from the session stream. The handle is a session id, and that is deliberate: the session is already the run's durable record and its live stream (/v1/agents/sessions/{id}/stream), so this door does not grow a progress endpoint, a status endpoint or a cancel endpoint of its own. One way to watch a run, whoever started it.
|
||||
|
||||
:param coding_start_in: (required)
|
||||
:type coding_start_in: CodingStartIn
|
||||
|
||||
@@ -7432,9 +7432,9 @@ class CommerceApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""The public configuration for the org that owns this hostname: its branding, its checkout options and the return URLs it will accept.
|
||||
"""The public org configuration a checkout page boots from
|
||||
|
||||
The public configuration for the org that owns this hostname: its branding, its checkout options and the return URLs it will accept. Unauthenticated and cached briefly, because a storefront asks for it before anyone has signed in. An unknown host is a plain 404 that does not echo the host back, so it cannot be used to discover which orgs exist.
|
||||
Answers the branding, identity issuer and client id, identity-verification config, enabled payment providers, return-URL allowlist and public payment application config for the org the request HOST resolves to. It is genuinely public and unauthenticated — a checkout page calls it before anyone has signed in — and it carries the same public payment config the authenticated config read does, so the card iframe can never initialize against a different application than the one that will be charged. Only ENABLED providers are listed and no credential path is ever projected. An unresolvable host answers a constant 404 that does not echo the host, so the endpoint cannot be used to enumerate orgs; a successful answer is cacheable for a minute.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7494,9 +7494,9 @@ class CommerceApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""The public configuration for the org that owns this hostname: its branding, its checkout options and the return URLs it will accept.
|
||||
"""The public org configuration a checkout page boots from
|
||||
|
||||
The public configuration for the org that owns this hostname: its branding, its checkout options and the return URLs it will accept. Unauthenticated and cached briefly, because a storefront asks for it before anyone has signed in. An unknown host is a plain 404 that does not echo the host back, so it cannot be used to discover which orgs exist.
|
||||
Answers the branding, identity issuer and client id, identity-verification config, enabled payment providers, return-URL allowlist and public payment application config for the org the request HOST resolves to. It is genuinely public and unauthenticated — a checkout page calls it before anyone has signed in — and it carries the same public payment config the authenticated config read does, so the card iframe can never initialize against a different application than the one that will be charged. Only ENABLED providers are listed and no credential path is ever projected. An unresolvable host answers a constant 404 that does not echo the host, so the endpoint cannot be used to enumerate orgs; a successful answer is cacheable for a minute.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -7556,9 +7556,9 @@ class CommerceApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""The public configuration for the org that owns this hostname: its branding, its checkout options and the return URLs it will accept.
|
||||
"""The public org configuration a checkout page boots from
|
||||
|
||||
The public configuration for the org that owns this hostname: its branding, its checkout options and the return URLs it will accept. Unauthenticated and cached briefly, because a storefront asks for it before anyone has signed in. An unknown host is a plain 404 that does not echo the host back, so it cannot be used to discover which orgs exist.
|
||||
Answers the branding, identity issuer and client id, identity-verification config, enabled payment providers, return-URL allowlist and public payment application config for the org the request HOST resolves to. It is genuinely public and unauthenticated — a checkout page calls it before anyone has signed in — and it carries the same public payment config the authenticated config read does, so the card iframe can never initialize against a different application than the one that will be charged. Only ENABLED providers are listed and no credential path is ever projected. An unresolvable host answers a constant 404 that does not echo the host, so the endpoint cannot be used to enumerate orgs; a successful answer is cacheable for a minute.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -2724,9 +2724,9 @@ class CompanyApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> DeckOut:
|
||||
"""Shares a pitch deck in the org's data room.
|
||||
"""Share a pitch deck in the org's data room
|
||||
|
||||
Shares a pitch deck in the org's data room. It stores the request body as a document in the caller org's data room and answers with the data room id to reference it by. The deck is RAW BYTES of whatever content type is sent — a PDF, a slide export — not a JSON document: the Content-Type header is carried through to the data room as given, and `?name=` names the document, defaulting to `pitch-deck`. Scoped to the caller's validated org, and only after incorporation: a formation still short of stage `company` is refused 409 and an org that never began one is 404. The route is registered AHEAD of the surface's JSON body cap deliberately, so a deck's size ceiling is the edge's rather than the cap meant for small structured records. An empty body is 400; a data room that will not take the bytes is 502.
|
||||
Stores the request body as a document in the caller org's data room and answers with the data room id to reference it by. The deck is RAW BYTES of whatever content type is sent — a PDF, a slide export — not a JSON document: the Content-Type header is carried through to the data room as given, and `?name=` names the document, defaulting to `pitch-deck`. Scoped to the caller's validated org, and only after incorporation: a formation still short of stage `company` is refused 409 and an org that never began one is 404. The route is registered AHEAD of the surface's JSON body cap deliberately, so a deck's size ceiling is the edge's rather than the cap meant for small structured records. An empty body is 400; a data room that will not take the bytes is 502.
|
||||
|
||||
:param body:
|
||||
:type body: bytearray
|
||||
@@ -2791,9 +2791,9 @@ class CompanyApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[DeckOut]:
|
||||
"""Shares a pitch deck in the org's data room.
|
||||
"""Share a pitch deck in the org's data room
|
||||
|
||||
Shares a pitch deck in the org's data room. It stores the request body as a document in the caller org's data room and answers with the data room id to reference it by. The deck is RAW BYTES of whatever content type is sent — a PDF, a slide export — not a JSON document: the Content-Type header is carried through to the data room as given, and `?name=` names the document, defaulting to `pitch-deck`. Scoped to the caller's validated org, and only after incorporation: a formation still short of stage `company` is refused 409 and an org that never began one is 404. The route is registered AHEAD of the surface's JSON body cap deliberately, so a deck's size ceiling is the edge's rather than the cap meant for small structured records. An empty body is 400; a data room that will not take the bytes is 502.
|
||||
Stores the request body as a document in the caller org's data room and answers with the data room id to reference it by. The deck is RAW BYTES of whatever content type is sent — a PDF, a slide export — not a JSON document: the Content-Type header is carried through to the data room as given, and `?name=` names the document, defaulting to `pitch-deck`. Scoped to the caller's validated org, and only after incorporation: a formation still short of stage `company` is refused 409 and an org that never began one is 404. The route is registered AHEAD of the surface's JSON body cap deliberately, so a deck's size ceiling is the edge's rather than the cap meant for small structured records. An empty body is 400; a data room that will not take the bytes is 502.
|
||||
|
||||
:param body:
|
||||
:type body: bytearray
|
||||
@@ -2858,9 +2858,9 @@ class CompanyApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Shares a pitch deck in the org's data room.
|
||||
"""Share a pitch deck in the org's data room
|
||||
|
||||
Shares a pitch deck in the org's data room. It stores the request body as a document in the caller org's data room and answers with the data room id to reference it by. The deck is RAW BYTES of whatever content type is sent — a PDF, a slide export — not a JSON document: the Content-Type header is carried through to the data room as given, and `?name=` names the document, defaulting to `pitch-deck`. Scoped to the caller's validated org, and only after incorporation: a formation still short of stage `company` is refused 409 and an org that never began one is 404. The route is registered AHEAD of the surface's JSON body cap deliberately, so a deck's size ceiling is the edge's rather than the cap meant for small structured records. An empty body is 400; a data room that will not take the bytes is 502.
|
||||
Stores the request body as a document in the caller org's data room and answers with the data room id to reference it by. The deck is RAW BYTES of whatever content type is sent — a PDF, a slide export — not a JSON document: the Content-Type header is carried through to the data room as given, and `?name=` names the document, defaulting to `pitch-deck`. Scoped to the caller's validated org, and only after incorporation: a formation still short of stage `company` is refused 409 and an org that never began one is 404. The route is registered AHEAD of the surface's JSON body cap deliberately, so a deck's size ceiling is the edge's rather than the cap meant for small structured records. An empty body is 400; a data room that will not take the bytes is 502.
|
||||
|
||||
:param body:
|
||||
:type body: bytearray
|
||||
@@ -5104,9 +5104,9 @@ class CompanyApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> FormationView:
|
||||
"""Charges the one-time formation fee and marks the formation paid.
|
||||
"""Charge the one-time formation fee and mark the formation paid
|
||||
|
||||
Charges the one-time formation fee and marks the formation paid. It bills the caller's own org the one-time Hanzo Company formation fee — $999 unless the deployment sets another — and answers with the formation record carrying its paid flag and the charge reference. Takes no body: the org is the validated tenant and the amount is the platform's, never the caller's to assert. IDEMPOTENT on the formation rather than on the request: an already-paid formation answers 200 with the same record and is not charged again, so a retry or a double-clicked button costs nothing. Available only at the `payment` stage (409 anywhere else) and only for an org that has begun a formation (404 otherwise). A refused charge answers the fleet-wide billing contract, not a formation error — 402 when the org cannot pay, 503 when metering is unavailable — which is exactly why this route is not a typed op.
|
||||
Bills the caller's own org the one-time Hanzo Company formation fee — $999 unless the deployment sets another — and answers with the formation record carrying its paid flag and the charge reference. Takes no body: the org is the validated tenant and the amount is the platform's, never the caller's to assert. IDEMPOTENT on the formation rather than on the request: an already-paid formation answers 200 with the same record and is not charged again, so a retry or a double-clicked button costs nothing. Available only at the `payment` stage (409 anywhere else) and only for an org that has begun a formation (404 otherwise). A refused charge answers the fleet-wide billing contract, not a formation error — 402 when the org cannot pay, 503 when metering is unavailable — which is exactly why this route is not a typed op.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5167,9 +5167,9 @@ class CompanyApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[FormationView]:
|
||||
"""Charges the one-time formation fee and marks the formation paid.
|
||||
"""Charge the one-time formation fee and mark the formation paid
|
||||
|
||||
Charges the one-time formation fee and marks the formation paid. It bills the caller's own org the one-time Hanzo Company formation fee — $999 unless the deployment sets another — and answers with the formation record carrying its paid flag and the charge reference. Takes no body: the org is the validated tenant and the amount is the platform's, never the caller's to assert. IDEMPOTENT on the formation rather than on the request: an already-paid formation answers 200 with the same record and is not charged again, so a retry or a double-clicked button costs nothing. Available only at the `payment` stage (409 anywhere else) and only for an org that has begun a formation (404 otherwise). A refused charge answers the fleet-wide billing contract, not a formation error — 402 when the org cannot pay, 503 when metering is unavailable — which is exactly why this route is not a typed op.
|
||||
Bills the caller's own org the one-time Hanzo Company formation fee — $999 unless the deployment sets another — and answers with the formation record carrying its paid flag and the charge reference. Takes no body: the org is the validated tenant and the amount is the platform's, never the caller's to assert. IDEMPOTENT on the formation rather than on the request: an already-paid formation answers 200 with the same record and is not charged again, so a retry or a double-clicked button costs nothing. Available only at the `payment` stage (409 anywhere else) and only for an org that has begun a formation (404 otherwise). A refused charge answers the fleet-wide billing contract, not a formation error — 402 when the org cannot pay, 503 when metering is unavailable — which is exactly why this route is not a typed op.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -5230,9 +5230,9 @@ class CompanyApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Charges the one-time formation fee and marks the formation paid.
|
||||
"""Charge the one-time formation fee and mark the formation paid
|
||||
|
||||
Charges the one-time formation fee and marks the formation paid. It bills the caller's own org the one-time Hanzo Company formation fee — $999 unless the deployment sets another — and answers with the formation record carrying its paid flag and the charge reference. Takes no body: the org is the validated tenant and the amount is the platform's, never the caller's to assert. IDEMPOTENT on the formation rather than on the request: an already-paid formation answers 200 with the same record and is not charged again, so a retry or a double-clicked button costs nothing. Available only at the `payment` stage (409 anywhere else) and only for an org that has begun a formation (404 otherwise). A refused charge answers the fleet-wide billing contract, not a formation error — 402 when the org cannot pay, 503 when metering is unavailable — which is exactly why this route is not a typed op.
|
||||
Bills the caller's own org the one-time Hanzo Company formation fee — $999 unless the deployment sets another — and answers with the formation record carrying its paid flag and the charge reference. Takes no body: the org is the validated tenant and the amount is the platform's, never the caller's to assert. IDEMPOTENT on the formation rather than on the request: an already-paid formation answers 200 with the same record and is not charged again, so a retry or a double-clicked button costs nothing. Available only at the `payment` stage (409 anywhere else) and only for an org that has begun a formation (404 otherwise). A refused charge answers the fleet-wide billing contract, not a formation error — 402 when the org cannot pay, 503 when metering is unavailable — which is exactly why this route is not a typed op.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -4304,9 +4304,9 @@ class ComplianceApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Is the provider push that settles a verification, authenticated by HMAC signature.
|
||||
"""Provider push that settles a verification, authenticated by HMAC signature
|
||||
|
||||
Is the provider push that settles a verification, authenticated by HMAC signature. It is the external PUSH reconcile: a verification provider (or a Hanzo relay) signals that a check settled, and the reconciled check comes back. It authenticates by an HMAC SIGNATURE over the RAW body bytes rather than by a principal — an external caller has no validated org — and the org is then resolved FROM the record the signed provider reference matches, so a call can only ever touch the one tenant that owns that reference. The body carries NO trusted decision. A valid signature cannot force a status: the reference only says WHICH check to re-read, and the status is then pulled from the wired provider, which stays the source of truth. With no real provider configured a check stays pending, and the only route to a passing status is the role-gated, attributed reviewer decision. An unknown reference is a benign 200 `{\"ignored\": ...}` no-op, not an error, so a provider replaying stale events neither retry-storms nor learns whether a reference exists in some other tenant. Fails closed otherwise: 501 unless a webhook secret is configured, 401 on a signature that does not verify, 400 with no provider reference, 413 over 1 MiB, and 502 if the secret or the provider is unreachable.
|
||||
The external PUSH reconcile: a verification provider (or a Hanzo relay) signals that a check settled, and the reconciled check comes back. It authenticates by an HMAC SIGNATURE over the RAW body bytes rather than by a principal — an external caller has no validated org — and the org is then resolved FROM the record the signed provider reference matches, so a call can only ever touch the one tenant that owns that reference. The body carries NO trusted decision. A valid signature cannot force a status: the reference only says WHICH check to re-read, and the status is then pulled from the wired provider, which stays the source of truth. With no real provider configured a check stays pending, and the only route to a passing status is the role-gated, attributed reviewer decision. An unknown reference is a benign 200 `{\"ignored\": ...}` no-op, not an error, so a provider replaying stale events neither retry-storms nor learns whether a reference exists in some other tenant. Fails closed otherwise: 501 unless a webhook secret is configured, 401 on a signature that does not verify, 400 with no provider reference, 413 over 1 MiB, and 502 if the secret or the provider is unreachable.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -4366,9 +4366,9 @@ class ComplianceApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Is the provider push that settles a verification, authenticated by HMAC signature.
|
||||
"""Provider push that settles a verification, authenticated by HMAC signature
|
||||
|
||||
Is the provider push that settles a verification, authenticated by HMAC signature. It is the external PUSH reconcile: a verification provider (or a Hanzo relay) signals that a check settled, and the reconciled check comes back. It authenticates by an HMAC SIGNATURE over the RAW body bytes rather than by a principal — an external caller has no validated org — and the org is then resolved FROM the record the signed provider reference matches, so a call can only ever touch the one tenant that owns that reference. The body carries NO trusted decision. A valid signature cannot force a status: the reference only says WHICH check to re-read, and the status is then pulled from the wired provider, which stays the source of truth. With no real provider configured a check stays pending, and the only route to a passing status is the role-gated, attributed reviewer decision. An unknown reference is a benign 200 `{\"ignored\": ...}` no-op, not an error, so a provider replaying stale events neither retry-storms nor learns whether a reference exists in some other tenant. Fails closed otherwise: 501 unless a webhook secret is configured, 401 on a signature that does not verify, 400 with no provider reference, 413 over 1 MiB, and 502 if the secret or the provider is unreachable.
|
||||
The external PUSH reconcile: a verification provider (or a Hanzo relay) signals that a check settled, and the reconciled check comes back. It authenticates by an HMAC SIGNATURE over the RAW body bytes rather than by a principal — an external caller has no validated org — and the org is then resolved FROM the record the signed provider reference matches, so a call can only ever touch the one tenant that owns that reference. The body carries NO trusted decision. A valid signature cannot force a status: the reference only says WHICH check to re-read, and the status is then pulled from the wired provider, which stays the source of truth. With no real provider configured a check stays pending, and the only route to a passing status is the role-gated, attributed reviewer decision. An unknown reference is a benign 200 `{\"ignored\": ...}` no-op, not an error, so a provider replaying stale events neither retry-storms nor learns whether a reference exists in some other tenant. Fails closed otherwise: 501 unless a webhook secret is configured, 401 on a signature that does not verify, 400 with no provider reference, 413 over 1 MiB, and 502 if the secret or the provider is unreachable.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -4428,9 +4428,9 @@ class ComplianceApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Is the provider push that settles a verification, authenticated by HMAC signature.
|
||||
"""Provider push that settles a verification, authenticated by HMAC signature
|
||||
|
||||
Is the provider push that settles a verification, authenticated by HMAC signature. It is the external PUSH reconcile: a verification provider (or a Hanzo relay) signals that a check settled, and the reconciled check comes back. It authenticates by an HMAC SIGNATURE over the RAW body bytes rather than by a principal — an external caller has no validated org — and the org is then resolved FROM the record the signed provider reference matches, so a call can only ever touch the one tenant that owns that reference. The body carries NO trusted decision. A valid signature cannot force a status: the reference only says WHICH check to re-read, and the status is then pulled from the wired provider, which stays the source of truth. With no real provider configured a check stays pending, and the only route to a passing status is the role-gated, attributed reviewer decision. An unknown reference is a benign 200 `{\"ignored\": ...}` no-op, not an error, so a provider replaying stale events neither retry-storms nor learns whether a reference exists in some other tenant. Fails closed otherwise: 501 unless a webhook secret is configured, 401 on a signature that does not verify, 400 with no provider reference, 413 over 1 MiB, and 502 if the secret or the provider is unreachable.
|
||||
The external PUSH reconcile: a verification provider (or a Hanzo relay) signals that a check settled, and the reconciled check comes back. It authenticates by an HMAC SIGNATURE over the RAW body bytes rather than by a principal — an external caller has no validated org — and the org is then resolved FROM the record the signed provider reference matches, so a call can only ever touch the one tenant that owns that reference. The body carries NO trusted decision. A valid signature cannot force a status: the reference only says WHICH check to re-read, and the status is then pulled from the wired provider, which stays the source of truth. With no real provider configured a check stays pending, and the only route to a passing status is the role-gated, attributed reviewer decision. An unknown reference is a benign 200 `{\"ignored\": ...}` no-op, not an error, so a provider replaying stale events neither retry-storms nor learns whether a reference exists in some other tenant. Fails closed otherwise: 501 unless a webhook secret is configured, 401 on a signature that does not verify, 400 with no provider reference, 413 over 1 MiB, and 502 if the secret or the provider is unreachable.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -3498,9 +3498,9 @@ class CrmApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Files an application to the Startup Program from the public form, and answers the id and pipeline stage it landed at.
|
||||
"""Apply to the Startup Program from the public form
|
||||
|
||||
Files an application to the Startup Program from the public form, and answers the id and pipeline stage it landed at. This is the ONE unauthenticated route in crm. It takes no principal and never reads a caller org: the application is filed against the DEPLOYMENT's own program org — the brand, hanzo unless white-labelled — so there is no tenant to name and none to leak. Reading the application back is staff-only and lives elsewhere. company, contactName and a parseable email are required; everything else is optional context. Re-submitting the same (email, company) REFRESHES the existing application instead of filing a second one, so an impatient applicant cannot duplicate their own lead — that is a 200 where a first submission is a 201. A filled `hp` honeypot field is answered exactly like a success and stored nowhere, so a bot cannot tell a drop from an accept. Filing is not screening: the application lands at stage `applied` with its AI screen still pending, and the screen runs afterwards on its own clock. A company and contact are also projected into the program org's ordinary CRM lists, best-effort — that projection failing does not fail the application. Bodies over 64 KiB are refused, and submissions are rate-limited.
|
||||
Files an application to the Startup Program and answers the id and pipeline stage it landed at. This is the ONE unauthenticated route in crm. It takes no principal and never reads a caller org: the application is filed against the DEPLOYMENT's own program org — the brand, hanzo unless white-labelled — so there is no tenant to name and none to leak. Reading the application back is staff-only and lives elsewhere. company, contactName and a parseable email are required; everything else is optional context. Re-submitting the same (email, company) REFRESHES the existing application instead of filing a second one, so an impatient applicant cannot duplicate their own lead — that is a 200 where a first submission is a 201. A filled `hp` honeypot field is answered exactly like a success and stored nowhere, so a bot cannot tell a drop from an accept. Filing is not screening: the application lands at stage `applied` with its AI screen still pending, and the screen runs afterwards on its own clock. A company and contact are also projected into the program org's ordinary CRM lists, best-effort — that projection failing does not fail the application. Bodies over 64 KiB are refused, and submissions are rate-limited.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3560,9 +3560,9 @@ class CrmApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Files an application to the Startup Program from the public form, and answers the id and pipeline stage it landed at.
|
||||
"""Apply to the Startup Program from the public form
|
||||
|
||||
Files an application to the Startup Program from the public form, and answers the id and pipeline stage it landed at. This is the ONE unauthenticated route in crm. It takes no principal and never reads a caller org: the application is filed against the DEPLOYMENT's own program org — the brand, hanzo unless white-labelled — so there is no tenant to name and none to leak. Reading the application back is staff-only and lives elsewhere. company, contactName and a parseable email are required; everything else is optional context. Re-submitting the same (email, company) REFRESHES the existing application instead of filing a second one, so an impatient applicant cannot duplicate their own lead — that is a 200 where a first submission is a 201. A filled `hp` honeypot field is answered exactly like a success and stored nowhere, so a bot cannot tell a drop from an accept. Filing is not screening: the application lands at stage `applied` with its AI screen still pending, and the screen runs afterwards on its own clock. A company and contact are also projected into the program org's ordinary CRM lists, best-effort — that projection failing does not fail the application. Bodies over 64 KiB are refused, and submissions are rate-limited.
|
||||
Files an application to the Startup Program and answers the id and pipeline stage it landed at. This is the ONE unauthenticated route in crm. It takes no principal and never reads a caller org: the application is filed against the DEPLOYMENT's own program org — the brand, hanzo unless white-labelled — so there is no tenant to name and none to leak. Reading the application back is staff-only and lives elsewhere. company, contactName and a parseable email are required; everything else is optional context. Re-submitting the same (email, company) REFRESHES the existing application instead of filing a second one, so an impatient applicant cannot duplicate their own lead — that is a 200 where a first submission is a 201. A filled `hp` honeypot field is answered exactly like a success and stored nowhere, so a bot cannot tell a drop from an accept. Filing is not screening: the application lands at stage `applied` with its AI screen still pending, and the screen runs afterwards on its own clock. A company and contact are also projected into the program org's ordinary CRM lists, best-effort — that projection failing does not fail the application. Bodies over 64 KiB are refused, and submissions are rate-limited.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3622,9 +3622,9 @@ class CrmApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Files an application to the Startup Program from the public form, and answers the id and pipeline stage it landed at.
|
||||
"""Apply to the Startup Program from the public form
|
||||
|
||||
Files an application to the Startup Program from the public form, and answers the id and pipeline stage it landed at. This is the ONE unauthenticated route in crm. It takes no principal and never reads a caller org: the application is filed against the DEPLOYMENT's own program org — the brand, hanzo unless white-labelled — so there is no tenant to name and none to leak. Reading the application back is staff-only and lives elsewhere. company, contactName and a parseable email are required; everything else is optional context. Re-submitting the same (email, company) REFRESHES the existing application instead of filing a second one, so an impatient applicant cannot duplicate their own lead — that is a 200 where a first submission is a 201. A filled `hp` honeypot field is answered exactly like a success and stored nowhere, so a bot cannot tell a drop from an accept. Filing is not screening: the application lands at stage `applied` with its AI screen still pending, and the screen runs afterwards on its own clock. A company and contact are also projected into the program org's ordinary CRM lists, best-effort — that projection failing does not fail the application. Bodies over 64 KiB are refused, and submissions are rate-limited.
|
||||
Files an application to the Startup Program and answers the id and pipeline stage it landed at. This is the ONE unauthenticated route in crm. It takes no principal and never reads a caller org: the application is filed against the DEPLOYMENT's own program org — the brand, hanzo unless white-labelled — so there is no tenant to name and none to leak. Reading the application back is staff-only and lives elsewhere. company, contactName and a parseable email are required; everything else is optional context. Re-submitting the same (email, company) REFRESHES the existing application instead of filing a second one, so an impatient applicant cannot duplicate their own lead — that is a 200 where a first submission is a 201. A filled `hp` honeypot field is answered exactly like a success and stored nowhere, so a bot cannot tell a drop from an accept. Filing is not screening: the application lands at stage `applied` with its AI screen still pending, and the screen runs afterwards on its own clock. A company and contact are also projected into the program org's ordinary CRM lists, best-effort — that projection failing does not fail the application. Bodies over 64 KiB are refused, and submissions are rate-limited.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -3382,9 +3382,9 @@ class DefaultApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Opens the live collaborative-editing socket.
|
||||
"""Open the live collaborative-editing socket
|
||||
|
||||
Opens the live collaborative-editing socket. It upgrades to the hocuspocus WebSocket the Team editor syncs its Y.js documents over: binary frames of document name, message type and payload, with ONE socket multiplexing every document a tab has open. The server is a relay and an ordered update log, not a CRDT engine — it replays the log to each joining peer and broadcasts every update to the rest, which converges because Y.js updates are commutative and idempotent. There is no body; the response is a protocol upgrade. IT SITS OUTSIDE /v1 ON PURPOSE. The client derives both collaborator lanes from one configured URL — this socket at its root, the markup-snapshot RPC one segment in — so the path is fixed by the editor library's contract rather than chosen by this service. AUTH IS IN-BAND, PER DOCUMENT, NOT ON THE UPGRADE. The handshake gates only on browser Origin (403 outside the team surfaces; no Origin at all is admitted, which is what a non-browser sends), and then the first frame for a document must be an Auth message carrying the same session or workspace token every other team route verifies — a browser WebSocket cannot set an Authorization header, which is why the token rides inside the protocol. Anything else on an unauthenticated document is answered with one permission denial and nothing further. Every document is authorized on its own: the document's workspace must be the token's workspace when the token pins one, and the caller must be a member of it. A mismatch, an unknown workspace and a non-member deny alike with \"document not found\". Rooms are keyed by org and workspace and the persisted log's key embeds both, so a foreign document id can neither join a room nor read a blob. The server pings every twenty seconds and drops a socket silent for sixty, so a backgrounded tab — whose JS timers are throttled but whose network stack still auto-pongs — stays connected instead of dying into a reconnect loop.
|
||||
Upgrades to the hocuspocus WebSocket the Team editor syncs its Y.js documents over: binary frames of document name, message type and payload, with ONE socket multiplexing every document a tab has open. The server is a relay and an ordered update log, not a CRDT engine — it replays the log to each joining peer and broadcasts every update to the rest, which converges because Y.js updates are commutative and idempotent. There is no body; the response is a protocol upgrade. IT SITS OUTSIDE /v1 ON PURPOSE. The client derives both collaborator lanes from one configured URL — this socket at its root, the markup-snapshot RPC one segment in — so the path is fixed by the editor library's contract rather than chosen by this service. AUTH IS IN-BAND, PER DOCUMENT, NOT ON THE UPGRADE. The handshake gates only on browser Origin (403 outside the team surfaces; no Origin at all is admitted, which is what a non-browser sends), and then the first frame for a document must be an Auth message carrying the same session or workspace token every other team route verifies — a browser WebSocket cannot set an Authorization header, which is why the token rides inside the protocol. Anything else on an unauthenticated document is answered with one permission denial and nothing further. Every document is authorized on its own: the document's workspace must be the token's workspace when the token pins one, and the caller must be a member of it. A mismatch, an unknown workspace and a non-member deny alike with \"document not found\". Rooms are keyed by org and workspace and the persisted log's key embeds both, so a foreign document id can neither join a room nor read a blob. The server pings every twenty seconds and drops a socket silent for sixty, so a backgrounded tab — whose JS timers are throttled but whose network stack still auto-pongs — stays connected instead of dying into a reconnect loop.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3444,9 +3444,9 @@ class DefaultApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Opens the live collaborative-editing socket.
|
||||
"""Open the live collaborative-editing socket
|
||||
|
||||
Opens the live collaborative-editing socket. It upgrades to the hocuspocus WebSocket the Team editor syncs its Y.js documents over: binary frames of document name, message type and payload, with ONE socket multiplexing every document a tab has open. The server is a relay and an ordered update log, not a CRDT engine — it replays the log to each joining peer and broadcasts every update to the rest, which converges because Y.js updates are commutative and idempotent. There is no body; the response is a protocol upgrade. IT SITS OUTSIDE /v1 ON PURPOSE. The client derives both collaborator lanes from one configured URL — this socket at its root, the markup-snapshot RPC one segment in — so the path is fixed by the editor library's contract rather than chosen by this service. AUTH IS IN-BAND, PER DOCUMENT, NOT ON THE UPGRADE. The handshake gates only on browser Origin (403 outside the team surfaces; no Origin at all is admitted, which is what a non-browser sends), and then the first frame for a document must be an Auth message carrying the same session or workspace token every other team route verifies — a browser WebSocket cannot set an Authorization header, which is why the token rides inside the protocol. Anything else on an unauthenticated document is answered with one permission denial and nothing further. Every document is authorized on its own: the document's workspace must be the token's workspace when the token pins one, and the caller must be a member of it. A mismatch, an unknown workspace and a non-member deny alike with \"document not found\". Rooms are keyed by org and workspace and the persisted log's key embeds both, so a foreign document id can neither join a room nor read a blob. The server pings every twenty seconds and drops a socket silent for sixty, so a backgrounded tab — whose JS timers are throttled but whose network stack still auto-pongs — stays connected instead of dying into a reconnect loop.
|
||||
Upgrades to the hocuspocus WebSocket the Team editor syncs its Y.js documents over: binary frames of document name, message type and payload, with ONE socket multiplexing every document a tab has open. The server is a relay and an ordered update log, not a CRDT engine — it replays the log to each joining peer and broadcasts every update to the rest, which converges because Y.js updates are commutative and idempotent. There is no body; the response is a protocol upgrade. IT SITS OUTSIDE /v1 ON PURPOSE. The client derives both collaborator lanes from one configured URL — this socket at its root, the markup-snapshot RPC one segment in — so the path is fixed by the editor library's contract rather than chosen by this service. AUTH IS IN-BAND, PER DOCUMENT, NOT ON THE UPGRADE. The handshake gates only on browser Origin (403 outside the team surfaces; no Origin at all is admitted, which is what a non-browser sends), and then the first frame for a document must be an Auth message carrying the same session or workspace token every other team route verifies — a browser WebSocket cannot set an Authorization header, which is why the token rides inside the protocol. Anything else on an unauthenticated document is answered with one permission denial and nothing further. Every document is authorized on its own: the document's workspace must be the token's workspace when the token pins one, and the caller must be a member of it. A mismatch, an unknown workspace and a non-member deny alike with \"document not found\". Rooms are keyed by org and workspace and the persisted log's key embeds both, so a foreign document id can neither join a room nor read a blob. The server pings every twenty seconds and drops a socket silent for sixty, so a backgrounded tab — whose JS timers are throttled but whose network stack still auto-pongs — stays connected instead of dying into a reconnect loop.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3506,9 +3506,9 @@ class DefaultApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Opens the live collaborative-editing socket.
|
||||
"""Open the live collaborative-editing socket
|
||||
|
||||
Opens the live collaborative-editing socket. It upgrades to the hocuspocus WebSocket the Team editor syncs its Y.js documents over: binary frames of document name, message type and payload, with ONE socket multiplexing every document a tab has open. The server is a relay and an ordered update log, not a CRDT engine — it replays the log to each joining peer and broadcasts every update to the rest, which converges because Y.js updates are commutative and idempotent. There is no body; the response is a protocol upgrade. IT SITS OUTSIDE /v1 ON PURPOSE. The client derives both collaborator lanes from one configured URL — this socket at its root, the markup-snapshot RPC one segment in — so the path is fixed by the editor library's contract rather than chosen by this service. AUTH IS IN-BAND, PER DOCUMENT, NOT ON THE UPGRADE. The handshake gates only on browser Origin (403 outside the team surfaces; no Origin at all is admitted, which is what a non-browser sends), and then the first frame for a document must be an Auth message carrying the same session or workspace token every other team route verifies — a browser WebSocket cannot set an Authorization header, which is why the token rides inside the protocol. Anything else on an unauthenticated document is answered with one permission denial and nothing further. Every document is authorized on its own: the document's workspace must be the token's workspace when the token pins one, and the caller must be a member of it. A mismatch, an unknown workspace and a non-member deny alike with \"document not found\". Rooms are keyed by org and workspace and the persisted log's key embeds both, so a foreign document id can neither join a room nor read a blob. The server pings every twenty seconds and drops a socket silent for sixty, so a backgrounded tab — whose JS timers are throttled but whose network stack still auto-pongs — stays connected instead of dying into a reconnect loop.
|
||||
Upgrades to the hocuspocus WebSocket the Team editor syncs its Y.js documents over: binary frames of document name, message type and payload, with ONE socket multiplexing every document a tab has open. The server is a relay and an ordered update log, not a CRDT engine — it replays the log to each joining peer and broadcasts every update to the rest, which converges because Y.js updates are commutative and idempotent. There is no body; the response is a protocol upgrade. IT SITS OUTSIDE /v1 ON PURPOSE. The client derives both collaborator lanes from one configured URL — this socket at its root, the markup-snapshot RPC one segment in — so the path is fixed by the editor library's contract rather than chosen by this service. AUTH IS IN-BAND, PER DOCUMENT, NOT ON THE UPGRADE. The handshake gates only on browser Origin (403 outside the team surfaces; no Origin at all is admitted, which is what a non-browser sends), and then the first frame for a document must be an Auth message carrying the same session or workspace token every other team route verifies — a browser WebSocket cannot set an Authorization header, which is why the token rides inside the protocol. Anything else on an unauthenticated document is answered with one permission denial and nothing further. Every document is authorized on its own: the document's workspace must be the token's workspace when the token pins one, and the caller must be a member of it. A mismatch, an unknown workspace and a non-member deny alike with \"document not found\". Rooms are keyed by org and workspace and the persisted log's key embeds both, so a foreign document id can neither join a room nor read a blob. The server pings every twenty seconds and drops a socket silent for sixty, so a backgrounded tab — whose JS timers are throttled but whose network stack still auto-pongs — stays connected instead of dying into a reconnect loop.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -825,9 +825,9 @@ class DestinationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> DestinationStatus:
|
||||
"""Connects one conversion destination for the caller's org, or updates the one already there.
|
||||
"""Connect one conversion destination for your org, or update the one you have
|
||||
|
||||
Connects one conversion destination for the caller's org, or updates the one already there. It stores the addressed platform's non-secret ids (its measurement, pixel or dataset ids) and seals its API credential into KMS under a path scoped to the caller's own org, then answers the same status card the read routes do — with live telling you whether the credential actually resolves right now. The body's property NAMES are the platform's own: each field the platform declares, plus each secret under its camelCase name, so the accepted keys differ per platform and a missing REQUIRED field is refused. Connecting is an ORG ADMIN action — a validated member without the admin bit gets 403 — and it fails closed with 503 when the KMS master key is unavailable rather than persisting a destination whose secret was never sealed. The secret itself never appears in the response, in the store, or in a log line; only its NAME is ever published. Set enabled to false to keep the connection but stop the analytics fan-out to it.
|
||||
Stores the addressed platform's non-secret ids (its measurement, pixel or dataset ids) and seals its API credential into KMS under a path scoped to the caller's own org, then answers the same status card the read routes do — with live telling you whether the credential actually resolves right now. The body's property NAMES are the platform's own: each field the platform declares, plus each secret under its camelCase name, so the accepted keys differ per platform and a missing REQUIRED field is refused. Connecting is an ORG ADMIN action — a validated member without the admin bit gets 403 — and it fails closed with 503 when the KMS master key is unavailable rather than persisting a destination whose secret was never sealed. The secret itself never appears in the response, in the store, or in a log line; only its NAME is ever published. Set enabled to false to keep the connection but stop the analytics fan-out to it.
|
||||
|
||||
:param platform: (required)
|
||||
:type platform: str
|
||||
@@ -896,9 +896,9 @@ class DestinationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[DestinationStatus]:
|
||||
"""Connects one conversion destination for the caller's org, or updates the one already there.
|
||||
"""Connect one conversion destination for your org, or update the one you have
|
||||
|
||||
Connects one conversion destination for the caller's org, or updates the one already there. It stores the addressed platform's non-secret ids (its measurement, pixel or dataset ids) and seals its API credential into KMS under a path scoped to the caller's own org, then answers the same status card the read routes do — with live telling you whether the credential actually resolves right now. The body's property NAMES are the platform's own: each field the platform declares, plus each secret under its camelCase name, so the accepted keys differ per platform and a missing REQUIRED field is refused. Connecting is an ORG ADMIN action — a validated member without the admin bit gets 403 — and it fails closed with 503 when the KMS master key is unavailable rather than persisting a destination whose secret was never sealed. The secret itself never appears in the response, in the store, or in a log line; only its NAME is ever published. Set enabled to false to keep the connection but stop the analytics fan-out to it.
|
||||
Stores the addressed platform's non-secret ids (its measurement, pixel or dataset ids) and seals its API credential into KMS under a path scoped to the caller's own org, then answers the same status card the read routes do — with live telling you whether the credential actually resolves right now. The body's property NAMES are the platform's own: each field the platform declares, plus each secret under its camelCase name, so the accepted keys differ per platform and a missing REQUIRED field is refused. Connecting is an ORG ADMIN action — a validated member without the admin bit gets 403 — and it fails closed with 503 when the KMS master key is unavailable rather than persisting a destination whose secret was never sealed. The secret itself never appears in the response, in the store, or in a log line; only its NAME is ever published. Set enabled to false to keep the connection but stop the analytics fan-out to it.
|
||||
|
||||
:param platform: (required)
|
||||
:type platform: str
|
||||
@@ -967,9 +967,9 @@ class DestinationsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Connects one conversion destination for the caller's org, or updates the one already there.
|
||||
"""Connect one conversion destination for your org, or update the one you have
|
||||
|
||||
Connects one conversion destination for the caller's org, or updates the one already there. It stores the addressed platform's non-secret ids (its measurement, pixel or dataset ids) and seals its API credential into KMS under a path scoped to the caller's own org, then answers the same status card the read routes do — with live telling you whether the credential actually resolves right now. The body's property NAMES are the platform's own: each field the platform declares, plus each secret under its camelCase name, so the accepted keys differ per platform and a missing REQUIRED field is refused. Connecting is an ORG ADMIN action — a validated member without the admin bit gets 403 — and it fails closed with 503 when the KMS master key is unavailable rather than persisting a destination whose secret was never sealed. The secret itself never appears in the response, in the store, or in a log line; only its NAME is ever published. Set enabled to false to keep the connection but stop the analytics fan-out to it.
|
||||
Stores the addressed platform's non-secret ids (its measurement, pixel or dataset ids) and seals its API credential into KMS under a path scoped to the caller's own org, then answers the same status card the read routes do — with live telling you whether the credential actually resolves right now. The body's property NAMES are the platform's own: each field the platform declares, plus each secret under its camelCase name, so the accepted keys differ per platform and a missing REQUIRED field is refused. Connecting is an ORG ADMIN action — a validated member without the admin bit gets 403 — and it fails closed with 503 when the KMS master key is unavailable rather than persisting a destination whose secret was never sealed. The secret itself never appears in the response, in the store, or in a log line; only its NAME is ever published. Set enabled to false to keep the connection but stop the analytics fan-out to it.
|
||||
|
||||
:param platform: (required)
|
||||
:type platform: str
|
||||
|
||||
@@ -16,7 +16,6 @@ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from pydantic import StrictStr
|
||||
|
||||
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
|
||||
from hanzoai.cloud.api_response import ApiResponse
|
||||
@@ -274,7 +273,6 @@ class DocumentsApi:
|
||||
@validate_call
|
||||
def get_v1_documents_by_file_id_context(
|
||||
self,
|
||||
file_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -292,8 +290,6 @@ class DocumentsApi:
|
||||
|
||||
Handles GET /v1/documents/:file_id/context — every chunk of a file, as LangChain Documents (used when RAG_USE_FULL_CONTEXT is on).
|
||||
|
||||
:param file_id: (required)
|
||||
:type file_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -317,7 +313,6 @@ class DocumentsApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_documents_by_file_id_context_serialize(
|
||||
file_id=file_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -340,7 +335,6 @@ class DocumentsApi:
|
||||
@validate_call
|
||||
def get_v1_documents_by_file_id_context_with_http_info(
|
||||
self,
|
||||
file_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -358,8 +352,6 @@ class DocumentsApi:
|
||||
|
||||
Handles GET /v1/documents/:file_id/context — every chunk of a file, as LangChain Documents (used when RAG_USE_FULL_CONTEXT is on).
|
||||
|
||||
:param file_id: (required)
|
||||
:type file_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -383,7 +375,6 @@ class DocumentsApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_documents_by_file_id_context_serialize(
|
||||
file_id=file_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -406,7 +397,6 @@ class DocumentsApi:
|
||||
@validate_call
|
||||
def get_v1_documents_by_file_id_context_without_preload_content(
|
||||
self,
|
||||
file_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -424,8 +414,6 @@ class DocumentsApi:
|
||||
|
||||
Handles GET /v1/documents/:file_id/context — every chunk of a file, as LangChain Documents (used when RAG_USE_FULL_CONTEXT is on).
|
||||
|
||||
:param file_id: (required)
|
||||
:type file_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -449,7 +437,6 @@ class DocumentsApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_documents_by_file_id_context_serialize(
|
||||
file_id=file_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -467,7 +454,6 @@ class DocumentsApi:
|
||||
|
||||
def _get_v1_documents_by_file_id_context_serialize(
|
||||
self,
|
||||
file_id,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -489,8 +475,6 @@ class DocumentsApi:
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
if file_id is not None:
|
||||
_path_params['file_id'] = file_id
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
|
||||
@@ -2956,9 +2956,9 @@ class FrameworkApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Creates one document of a DocType, from that DocType's own fields.
|
||||
"""Create one document of a DocType, from that DocType's own fields.
|
||||
|
||||
Creates one document of a DocType, from that DocType's own fields. The body is the DOCUMENT'S field data: a flat JSON object whose properties are the fieldnames the DocType declares, not a fixed envelope. That is why this operation publishes no request schema — the shape is metadata the DocType defines at run time, and no Go struct both accepts it verbatim and describes it, so nothing is asserted rather than something false. The engine validates and coerces every field against the DocType, runs the before_insert and before_save hooks (either may reject the write), stores the document, then runs the after hooks. It answers 201 with the stored document: the field data plus the managed envelope — `name`, `doctype`, `docstatus`, `createdAt`, `updatedAt`. A Password field comes back as a fixed redaction marker and is dropped when empty; its stored value is never returned by this or any other read on this surface. `name` in the body is the REQUESTED DOCUMENT NAME, not a data field. A DocType with an autoname rule names the document itself and ignores it; a prompt-named DocType takes it. This collision is also why the two path segments cannot be folded into the body, and so why the route stays untyped. Scoped to the org of the validated principal, and the engine's own permission calculus decides the rest: the caller needs create rights on this DocType through a role it holds, or a platform admin bit. A caller with no validated principal reaches the engine as the zero Caller and is refused before any store is opened — a forged org header alone buys nothing. A DocType declared Single has exactly ONE document per org, so this writes that one instance instead of adding a row. The body is size-bounded by the engine, the same bound on every host.
|
||||
The body is the DOCUMENT'S field data: a flat JSON object whose properties are the fieldnames the DocType declares, not a fixed envelope. That is why this operation publishes no request schema — the shape is metadata the DocType defines at run time, and no Go struct both accepts it verbatim and describes it, so nothing is asserted rather than something false. The engine validates and coerces every field against the DocType, runs the before_insert and before_save hooks (either may reject the write), stores the document, then runs the after hooks. It answers 201 with the stored document: the field data plus the managed envelope — `name`, `doctype`, `docstatus`, `createdAt`, `updatedAt`. A Password field comes back as a fixed redaction marker and is dropped when empty; its stored value is never returned by this or any other read on this surface. `name` in the body is the REQUESTED DOCUMENT NAME, not a data field. A DocType with an autoname rule names the document itself and ignores it; a prompt-named DocType takes it. This collision is also why the two path segments cannot be folded into the body, and so why the route stays untyped. Scoped to the org of the validated principal, and the engine's own permission calculus decides the rest: the caller needs create rights on this DocType through a role it holds, or a platform admin bit. A caller with no validated principal reaches the engine as the zero Caller and is refused before any store is opened — a forged org header alone buys nothing. A DocType declared Single has exactly ONE document per org, so this writes that one instance instead of adding a row. The body is size-bounded by the engine, the same bound on every host.
|
||||
|
||||
:param doctype: (required)
|
||||
:type doctype: str
|
||||
@@ -3022,9 +3022,9 @@ class FrameworkApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Creates one document of a DocType, from that DocType's own fields.
|
||||
"""Create one document of a DocType, from that DocType's own fields.
|
||||
|
||||
Creates one document of a DocType, from that DocType's own fields. The body is the DOCUMENT'S field data: a flat JSON object whose properties are the fieldnames the DocType declares, not a fixed envelope. That is why this operation publishes no request schema — the shape is metadata the DocType defines at run time, and no Go struct both accepts it verbatim and describes it, so nothing is asserted rather than something false. The engine validates and coerces every field against the DocType, runs the before_insert and before_save hooks (either may reject the write), stores the document, then runs the after hooks. It answers 201 with the stored document: the field data plus the managed envelope — `name`, `doctype`, `docstatus`, `createdAt`, `updatedAt`. A Password field comes back as a fixed redaction marker and is dropped when empty; its stored value is never returned by this or any other read on this surface. `name` in the body is the REQUESTED DOCUMENT NAME, not a data field. A DocType with an autoname rule names the document itself and ignores it; a prompt-named DocType takes it. This collision is also why the two path segments cannot be folded into the body, and so why the route stays untyped. Scoped to the org of the validated principal, and the engine's own permission calculus decides the rest: the caller needs create rights on this DocType through a role it holds, or a platform admin bit. A caller with no validated principal reaches the engine as the zero Caller and is refused before any store is opened — a forged org header alone buys nothing. A DocType declared Single has exactly ONE document per org, so this writes that one instance instead of adding a row. The body is size-bounded by the engine, the same bound on every host.
|
||||
The body is the DOCUMENT'S field data: a flat JSON object whose properties are the fieldnames the DocType declares, not a fixed envelope. That is why this operation publishes no request schema — the shape is metadata the DocType defines at run time, and no Go struct both accepts it verbatim and describes it, so nothing is asserted rather than something false. The engine validates and coerces every field against the DocType, runs the before_insert and before_save hooks (either may reject the write), stores the document, then runs the after hooks. It answers 201 with the stored document: the field data plus the managed envelope — `name`, `doctype`, `docstatus`, `createdAt`, `updatedAt`. A Password field comes back as a fixed redaction marker and is dropped when empty; its stored value is never returned by this or any other read on this surface. `name` in the body is the REQUESTED DOCUMENT NAME, not a data field. A DocType with an autoname rule names the document itself and ignores it; a prompt-named DocType takes it. This collision is also why the two path segments cannot be folded into the body, and so why the route stays untyped. Scoped to the org of the validated principal, and the engine's own permission calculus decides the rest: the caller needs create rights on this DocType through a role it holds, or a platform admin bit. A caller with no validated principal reaches the engine as the zero Caller and is refused before any store is opened — a forged org header alone buys nothing. A DocType declared Single has exactly ONE document per org, so this writes that one instance instead of adding a row. The body is size-bounded by the engine, the same bound on every host.
|
||||
|
||||
:param doctype: (required)
|
||||
:type doctype: str
|
||||
@@ -3088,9 +3088,9 @@ class FrameworkApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Creates one document of a DocType, from that DocType's own fields.
|
||||
"""Create one document of a DocType, from that DocType's own fields.
|
||||
|
||||
Creates one document of a DocType, from that DocType's own fields. The body is the DOCUMENT'S field data: a flat JSON object whose properties are the fieldnames the DocType declares, not a fixed envelope. That is why this operation publishes no request schema — the shape is metadata the DocType defines at run time, and no Go struct both accepts it verbatim and describes it, so nothing is asserted rather than something false. The engine validates and coerces every field against the DocType, runs the before_insert and before_save hooks (either may reject the write), stores the document, then runs the after hooks. It answers 201 with the stored document: the field data plus the managed envelope — `name`, `doctype`, `docstatus`, `createdAt`, `updatedAt`. A Password field comes back as a fixed redaction marker and is dropped when empty; its stored value is never returned by this or any other read on this surface. `name` in the body is the REQUESTED DOCUMENT NAME, not a data field. A DocType with an autoname rule names the document itself and ignores it; a prompt-named DocType takes it. This collision is also why the two path segments cannot be folded into the body, and so why the route stays untyped. Scoped to the org of the validated principal, and the engine's own permission calculus decides the rest: the caller needs create rights on this DocType through a role it holds, or a platform admin bit. A caller with no validated principal reaches the engine as the zero Caller and is refused before any store is opened — a forged org header alone buys nothing. A DocType declared Single has exactly ONE document per org, so this writes that one instance instead of adding a row. The body is size-bounded by the engine, the same bound on every host.
|
||||
The body is the DOCUMENT'S field data: a flat JSON object whose properties are the fieldnames the DocType declares, not a fixed envelope. That is why this operation publishes no request schema — the shape is metadata the DocType defines at run time, and no Go struct both accepts it verbatim and describes it, so nothing is asserted rather than something false. The engine validates and coerces every field against the DocType, runs the before_insert and before_save hooks (either may reject the write), stores the document, then runs the after hooks. It answers 201 with the stored document: the field data plus the managed envelope — `name`, `doctype`, `docstatus`, `createdAt`, `updatedAt`. A Password field comes back as a fixed redaction marker and is dropped when empty; its stored value is never returned by this or any other read on this surface. `name` in the body is the REQUESTED DOCUMENT NAME, not a data field. A DocType with an autoname rule names the document itself and ignores it; a prompt-named DocType takes it. This collision is also why the two path segments cannot be folded into the body, and so why the route stays untyped. Scoped to the org of the validated principal, and the engine's own permission calculus decides the rest: the caller needs create rights on this DocType through a role it holds, or a platform admin bit. A caller with no validated principal reaches the engine as the zero Caller and is refused before any store is opened — a forged org header alone buys nothing. A DocType declared Single has exactly ONE document per org, so this writes that one instance instead of adding a row. The body is size-bounded by the engine, the same bound on every host.
|
||||
|
||||
:param doctype: (required)
|
||||
:type doctype: str
|
||||
@@ -4563,9 +4563,9 @@ class FrameworkApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Replaces a draft document's field data wholesale.
|
||||
"""Replace a draft document's field data wholesale.
|
||||
|
||||
Replaces a draft document's field data wholesale. PUT semantics: the stored field data BECOMES the body, so a field the body omits is not left at its previous value. The body is the document's own field data — the same metadata-defined open object the create takes, and the same reason this operation publishes no request schema. Only a DRAFT can be edited. A document that has been submitted or cancelled is immutable and the write is refused as a conflict, so the submit lifecycle cannot be bypassed by a plain update — cancel it first, and note that a cancelled document can be deleted but never re-submitted or re-edited. The engine validates the new data against the DocType, runs before_save (which may reject), writes, then runs the after hooks, and answers 200 with the stored document plus its managed envelope, Password fields redacted. The document name in the path is percent-decoded before it is matched, so a name containing a space is addressed as it is stored. An unknown DocType or document is not found, and the same answer covers a document that exists in another tenant: the org comes from the validated principal and is part of the store key, so a caller cannot learn that another org's document exists. Write rights on the DocType are required, decided by the engine's permission calculus. For a Single DocType the path name is ignored — there is one instance per org and this writes it.
|
||||
PUT semantics: the stored field data BECOMES the body, so a field the body omits is not left at its previous value. The body is the document's own field data — the same metadata-defined open object the create takes, and the same reason this operation publishes no request schema. Only a DRAFT can be edited. A document that has been submitted or cancelled is immutable and the write is refused as a conflict, so the submit lifecycle cannot be bypassed by a plain update — cancel it first, and note that a cancelled document can be deleted but never re-submitted or re-edited. The engine validates the new data against the DocType, runs before_save (which may reject), writes, then runs the after hooks, and answers 200 with the stored document plus its managed envelope, Password fields redacted. The document name in the path is percent-decoded before it is matched, so a name containing a space is addressed as it is stored. An unknown DocType or document is not found, and the same answer covers a document that exists in another tenant: the org comes from the validated principal and is part of the store key, so a caller cannot learn that another org's document exists. Write rights on the DocType are required, decided by the engine's permission calculus. For a Single DocType the path name is ignored — there is one instance per org and this writes it.
|
||||
|
||||
:param doctype: (required)
|
||||
:type doctype: str
|
||||
@@ -4633,9 +4633,9 @@ class FrameworkApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Replaces a draft document's field data wholesale.
|
||||
"""Replace a draft document's field data wholesale.
|
||||
|
||||
Replaces a draft document's field data wholesale. PUT semantics: the stored field data BECOMES the body, so a field the body omits is not left at its previous value. The body is the document's own field data — the same metadata-defined open object the create takes, and the same reason this operation publishes no request schema. Only a DRAFT can be edited. A document that has been submitted or cancelled is immutable and the write is refused as a conflict, so the submit lifecycle cannot be bypassed by a plain update — cancel it first, and note that a cancelled document can be deleted but never re-submitted or re-edited. The engine validates the new data against the DocType, runs before_save (which may reject), writes, then runs the after hooks, and answers 200 with the stored document plus its managed envelope, Password fields redacted. The document name in the path is percent-decoded before it is matched, so a name containing a space is addressed as it is stored. An unknown DocType or document is not found, and the same answer covers a document that exists in another tenant: the org comes from the validated principal and is part of the store key, so a caller cannot learn that another org's document exists. Write rights on the DocType are required, decided by the engine's permission calculus. For a Single DocType the path name is ignored — there is one instance per org and this writes it.
|
||||
PUT semantics: the stored field data BECOMES the body, so a field the body omits is not left at its previous value. The body is the document's own field data — the same metadata-defined open object the create takes, and the same reason this operation publishes no request schema. Only a DRAFT can be edited. A document that has been submitted or cancelled is immutable and the write is refused as a conflict, so the submit lifecycle cannot be bypassed by a plain update — cancel it first, and note that a cancelled document can be deleted but never re-submitted or re-edited. The engine validates the new data against the DocType, runs before_save (which may reject), writes, then runs the after hooks, and answers 200 with the stored document plus its managed envelope, Password fields redacted. The document name in the path is percent-decoded before it is matched, so a name containing a space is addressed as it is stored. An unknown DocType or document is not found, and the same answer covers a document that exists in another tenant: the org comes from the validated principal and is part of the store key, so a caller cannot learn that another org's document exists. Write rights on the DocType are required, decided by the engine's permission calculus. For a Single DocType the path name is ignored — there is one instance per org and this writes it.
|
||||
|
||||
:param doctype: (required)
|
||||
:type doctype: str
|
||||
@@ -4703,9 +4703,9 @@ class FrameworkApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Replaces a draft document's field data wholesale.
|
||||
"""Replace a draft document's field data wholesale.
|
||||
|
||||
Replaces a draft document's field data wholesale. PUT semantics: the stored field data BECOMES the body, so a field the body omits is not left at its previous value. The body is the document's own field data — the same metadata-defined open object the create takes, and the same reason this operation publishes no request schema. Only a DRAFT can be edited. A document that has been submitted or cancelled is immutable and the write is refused as a conflict, so the submit lifecycle cannot be bypassed by a plain update — cancel it first, and note that a cancelled document can be deleted but never re-submitted or re-edited. The engine validates the new data against the DocType, runs before_save (which may reject), writes, then runs the after hooks, and answers 200 with the stored document plus its managed envelope, Password fields redacted. The document name in the path is percent-decoded before it is matched, so a name containing a space is addressed as it is stored. An unknown DocType or document is not found, and the same answer covers a document that exists in another tenant: the org comes from the validated principal and is part of the store key, so a caller cannot learn that another org's document exists. Write rights on the DocType are required, decided by the engine's permission calculus. For a Single DocType the path name is ignored — there is one instance per org and this writes it.
|
||||
PUT semantics: the stored field data BECOMES the body, so a field the body omits is not left at its previous value. The body is the document's own field data — the same metadata-defined open object the create takes, and the same reason this operation publishes no request schema. Only a DRAFT can be edited. A document that has been submitted or cancelled is immutable and the write is refused as a conflict, so the submit lifecycle cannot be bypassed by a plain update — cancel it first, and note that a cancelled document can be deleted but never re-submitted or re-edited. The engine validates the new data against the DocType, runs before_save (which may reject), writes, then runs the after hooks, and answers 200 with the stored document plus its managed envelope, Password fields redacted. The document name in the path is percent-decoded before it is matched, so a name containing a space is addressed as it is stored. An unknown DocType or document is not found, and the same answer covers a document that exists in another tenant: the org comes from the validated principal and is part of the store key, so a caller cannot learn that another org's document exists. Write rights on the DocType are required, decided by the engine's permission calculus. For a Single DocType the path name is ignored — there is one instance per org and this writes it.
|
||||
|
||||
:param doctype: (required)
|
||||
:type doctype: str
|
||||
|
||||
@@ -9509,9 +9509,9 @@ class GitApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Is retired — forge pushes build via platform.hanzo.ai.
|
||||
"""Retired — forge pushes build via platform.hanzo.ai
|
||||
|
||||
Is retired — forge pushes build via platform.hanzo.ai. GONE (410). This was the canonical forge's push-to-deploy door, and it never dispatched a build in its life. It handed each verified push to cloud.OnGitPush, a single-registrant seam whose only registrant lives in apps/platform. cloud runs each app as its own OS process, so in the git process that builder is nil forever — and this handler answered 204 either way. Delivered, signature valid, green on the forge's hook page, and nothing built. Push-to-deploy now belongs to POST https://platform.hanzo.ai/v1/git-webhook, which owns the build system-of-record and dispatches BuildKit Jobs. git.hanzo.ai delivers there through ONE forge-wide system webhook covering every repository; a repo opts in by committing hanzo.yml, not by owning a hook of its own. The route is kept, and answers 410 naming that address, precisely so a misdirected delivery says what is wrong. Deleting it would 404, and a 404 here reads as \"the API is switched off\" — the wrong conclusion this estate has already drawn twice. It reads no body: there is nothing here to authenticate and nothing to parse.
|
||||
GONE (410). This was the canonical forge's push-to-deploy door, and it never dispatched a build in its life. It handed each verified push to cloud.OnGitPush, a single-registrant seam whose only registrant lives in apps/platform. cloud runs each app as its own OS process, so in the git process that builder is nil forever — and this handler answered 204 either way. Delivered, signature valid, green on the forge's hook page, and nothing built. Push-to-deploy now belongs to POST https://platform.hanzo.ai/v1/git-webhook, which owns the build system-of-record and dispatches BuildKit Jobs. git.hanzo.ai delivers there through ONE forge-wide system webhook covering every repository; a repo opts in by committing hanzo.yml, not by owning a hook of its own. The route is kept, and answers 410 naming that address, precisely so a misdirected delivery says what is wrong. Deleting it would 404, and a 404 here reads as 'the API is switched off' — the wrong conclusion this estate has already drawn twice.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -9571,9 +9571,9 @@ class GitApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Is retired — forge pushes build via platform.hanzo.ai.
|
||||
"""Retired — forge pushes build via platform.hanzo.ai
|
||||
|
||||
Is retired — forge pushes build via platform.hanzo.ai. GONE (410). This was the canonical forge's push-to-deploy door, and it never dispatched a build in its life. It handed each verified push to cloud.OnGitPush, a single-registrant seam whose only registrant lives in apps/platform. cloud runs each app as its own OS process, so in the git process that builder is nil forever — and this handler answered 204 either way. Delivered, signature valid, green on the forge's hook page, and nothing built. Push-to-deploy now belongs to POST https://platform.hanzo.ai/v1/git-webhook, which owns the build system-of-record and dispatches BuildKit Jobs. git.hanzo.ai delivers there through ONE forge-wide system webhook covering every repository; a repo opts in by committing hanzo.yml, not by owning a hook of its own. The route is kept, and answers 410 naming that address, precisely so a misdirected delivery says what is wrong. Deleting it would 404, and a 404 here reads as \"the API is switched off\" — the wrong conclusion this estate has already drawn twice. It reads no body: there is nothing here to authenticate and nothing to parse.
|
||||
GONE (410). This was the canonical forge's push-to-deploy door, and it never dispatched a build in its life. It handed each verified push to cloud.OnGitPush, a single-registrant seam whose only registrant lives in apps/platform. cloud runs each app as its own OS process, so in the git process that builder is nil forever — and this handler answered 204 either way. Delivered, signature valid, green on the forge's hook page, and nothing built. Push-to-deploy now belongs to POST https://platform.hanzo.ai/v1/git-webhook, which owns the build system-of-record and dispatches BuildKit Jobs. git.hanzo.ai delivers there through ONE forge-wide system webhook covering every repository; a repo opts in by committing hanzo.yml, not by owning a hook of its own. The route is kept, and answers 410 naming that address, precisely so a misdirected delivery says what is wrong. Deleting it would 404, and a 404 here reads as 'the API is switched off' — the wrong conclusion this estate has already drawn twice.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -9633,9 +9633,9 @@ class GitApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Is retired — forge pushes build via platform.hanzo.ai.
|
||||
"""Retired — forge pushes build via platform.hanzo.ai
|
||||
|
||||
Is retired — forge pushes build via platform.hanzo.ai. GONE (410). This was the canonical forge's push-to-deploy door, and it never dispatched a build in its life. It handed each verified push to cloud.OnGitPush, a single-registrant seam whose only registrant lives in apps/platform. cloud runs each app as its own OS process, so in the git process that builder is nil forever — and this handler answered 204 either way. Delivered, signature valid, green on the forge's hook page, and nothing built. Push-to-deploy now belongs to POST https://platform.hanzo.ai/v1/git-webhook, which owns the build system-of-record and dispatches BuildKit Jobs. git.hanzo.ai delivers there through ONE forge-wide system webhook covering every repository; a repo opts in by committing hanzo.yml, not by owning a hook of its own. The route is kept, and answers 410 naming that address, precisely so a misdirected delivery says what is wrong. Deleting it would 404, and a 404 here reads as \"the API is switched off\" — the wrong conclusion this estate has already drawn twice. It reads no body: there is nothing here to authenticate and nothing to parse.
|
||||
GONE (410). This was the canonical forge's push-to-deploy door, and it never dispatched a build in its life. It handed each verified push to cloud.OnGitPush, a single-registrant seam whose only registrant lives in apps/platform. cloud runs each app as its own OS process, so in the git process that builder is nil forever — and this handler answered 204 either way. Delivered, signature valid, green on the forge's hook page, and nothing built. Push-to-deploy now belongs to POST https://platform.hanzo.ai/v1/git-webhook, which owns the build system-of-record and dispatches BuildKit Jobs. git.hanzo.ai delivers there through ONE forge-wide system webhook covering every repository; a repo opts in by committing hanzo.yml, not by owning a hook of its own. The route is kept, and answers 410 naming that address, precisely so a misdirected delivery says what is wrong. Deleting it would 404, and a 404 here reads as 'the API is switched off' — the wrong conclusion this estate has already drawn twice.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -25,8 +25,8 @@ from hanzoai.cloud.models.ingress_status import IngressStatus
|
||||
from hanzoai.cloud.models.ingress_tls import IngressTLS
|
||||
from hanzoai.cloud.models.middleware import Middleware
|
||||
from hanzoai.cloud.models.route import Route
|
||||
from hanzoai.cloud.models.service import Service
|
||||
from hanzoai.cloud.models.tls_config import TLSConfig
|
||||
from hanzoai.cloud.models.upstream import Upstream
|
||||
|
||||
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
|
||||
from hanzoai.cloud.api_response import ApiResponse
|
||||
@@ -2076,7 +2076,7 @@ class IngressApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> Service:
|
||||
) -> Upstream:
|
||||
"""Returns one of the caller org's backend pools by id.
|
||||
|
||||
Returns one of the caller org's backend pools by id.
|
||||
@@ -2114,7 +2114,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -2143,7 +2143,7 @@ class IngressApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[Service]:
|
||||
) -> ApiResponse[Upstream]:
|
||||
"""Returns one of the caller org's backend pools by id.
|
||||
|
||||
Returns one of the caller org's backend pools by id.
|
||||
@@ -2181,7 +2181,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -2248,7 +2248,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -3359,7 +3359,7 @@ class IngressApi:
|
||||
@validate_call
|
||||
def post_v1_ingress_services(
|
||||
self,
|
||||
service: Service,
|
||||
upstream: Upstream,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -3372,13 +3372,13 @@ class IngressApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> Service:
|
||||
) -> Upstream:
|
||||
"""Creates or replaces one backend pool and hot-applies it.
|
||||
|
||||
Creates or replaces one backend pool and hot-applies it. POST mints an id when the body omits one; PUT takes the id from the URL, which wins over any id in the body. A pool needs at least one backend and every backend URL must be http(s)://host[:port].
|
||||
|
||||
:param service: (required)
|
||||
:type service: Service
|
||||
:param upstream: (required)
|
||||
:type upstream: Upstream
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -3402,7 +3402,7 @@ class IngressApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_ingress_services_serialize(
|
||||
service=service,
|
||||
upstream=upstream,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -3410,7 +3410,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -3426,7 +3426,7 @@ class IngressApi:
|
||||
@validate_call
|
||||
def post_v1_ingress_services_with_http_info(
|
||||
self,
|
||||
service: Service,
|
||||
upstream: Upstream,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -3439,13 +3439,13 @@ class IngressApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[Service]:
|
||||
) -> ApiResponse[Upstream]:
|
||||
"""Creates or replaces one backend pool and hot-applies it.
|
||||
|
||||
Creates or replaces one backend pool and hot-applies it. POST mints an id when the body omits one; PUT takes the id from the URL, which wins over any id in the body. A pool needs at least one backend and every backend URL must be http(s)://host[:port].
|
||||
|
||||
:param service: (required)
|
||||
:type service: Service
|
||||
:param upstream: (required)
|
||||
:type upstream: Upstream
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -3469,7 +3469,7 @@ class IngressApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_ingress_services_serialize(
|
||||
service=service,
|
||||
upstream=upstream,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -3477,7 +3477,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -3493,7 +3493,7 @@ class IngressApi:
|
||||
@validate_call
|
||||
def post_v1_ingress_services_without_preload_content(
|
||||
self,
|
||||
service: Service,
|
||||
upstream: Upstream,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -3511,8 +3511,8 @@ class IngressApi:
|
||||
|
||||
Creates or replaces one backend pool and hot-applies it. POST mints an id when the body omits one; PUT takes the id from the URL, which wins over any id in the body. A pool needs at least one backend and every backend URL must be http(s)://host[:port].
|
||||
|
||||
:param service: (required)
|
||||
:type service: Service
|
||||
:param upstream: (required)
|
||||
:type upstream: Upstream
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -3536,7 +3536,7 @@ class IngressApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_ingress_services_serialize(
|
||||
service=service,
|
||||
upstream=upstream,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -3544,7 +3544,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -3555,7 +3555,7 @@ class IngressApi:
|
||||
|
||||
def _post_v1_ingress_services_serialize(
|
||||
self,
|
||||
service,
|
||||
upstream,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -3581,8 +3581,8 @@ class IngressApi:
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
# process the body parameter
|
||||
if service is not None:
|
||||
_body_params = service
|
||||
if upstream is not None:
|
||||
_body_params = upstream
|
||||
|
||||
|
||||
# set the HTTP header `Accept`
|
||||
@@ -4209,7 +4209,7 @@ class IngressApi:
|
||||
def put_v1_ingress_services_by_id(
|
||||
self,
|
||||
id: Annotated[StrictStr, Field(description="ID identifies the pool within the org: [A-Za-z0-9-_.], at most 128 chars. A create that omits it gets a generated one. Routes reference it by this id.")],
|
||||
service: Service,
|
||||
upstream: Upstream,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -4222,15 +4222,15 @@ class IngressApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> Service:
|
||||
) -> Upstream:
|
||||
"""Creates or replaces one backend pool and hot-applies it.
|
||||
|
||||
Creates or replaces one backend pool and hot-applies it. POST mints an id when the body omits one; PUT takes the id from the URL, which wins over any id in the body. A pool needs at least one backend and every backend URL must be http(s)://host[:port].
|
||||
|
||||
:param id: ID identifies the pool within the org: [A-Za-z0-9-_.], at most 128 chars. A create that omits it gets a generated one. Routes reference it by this id. (required)
|
||||
:type id: str
|
||||
:param service: (required)
|
||||
:type service: Service
|
||||
:param upstream: (required)
|
||||
:type upstream: Upstream
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -4255,7 +4255,7 @@ class IngressApi:
|
||||
|
||||
_param = self._put_v1_ingress_services_by_id_serialize(
|
||||
id=id,
|
||||
service=service,
|
||||
upstream=upstream,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -4263,7 +4263,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -4280,7 +4280,7 @@ class IngressApi:
|
||||
def put_v1_ingress_services_by_id_with_http_info(
|
||||
self,
|
||||
id: Annotated[StrictStr, Field(description="ID identifies the pool within the org: [A-Za-z0-9-_.], at most 128 chars. A create that omits it gets a generated one. Routes reference it by this id.")],
|
||||
service: Service,
|
||||
upstream: Upstream,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -4293,15 +4293,15 @@ class IngressApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[Service]:
|
||||
) -> ApiResponse[Upstream]:
|
||||
"""Creates or replaces one backend pool and hot-applies it.
|
||||
|
||||
Creates or replaces one backend pool and hot-applies it. POST mints an id when the body omits one; PUT takes the id from the URL, which wins over any id in the body. A pool needs at least one backend and every backend URL must be http(s)://host[:port].
|
||||
|
||||
:param id: ID identifies the pool within the org: [A-Za-z0-9-_.], at most 128 chars. A create that omits it gets a generated one. Routes reference it by this id. (required)
|
||||
:type id: str
|
||||
:param service: (required)
|
||||
:type service: Service
|
||||
:param upstream: (required)
|
||||
:type upstream: Upstream
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -4326,7 +4326,7 @@ class IngressApi:
|
||||
|
||||
_param = self._put_v1_ingress_services_by_id_serialize(
|
||||
id=id,
|
||||
service=service,
|
||||
upstream=upstream,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -4334,7 +4334,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -4351,7 +4351,7 @@ class IngressApi:
|
||||
def put_v1_ingress_services_by_id_without_preload_content(
|
||||
self,
|
||||
id: Annotated[StrictStr, Field(description="ID identifies the pool within the org: [A-Za-z0-9-_.], at most 128 chars. A create that omits it gets a generated one. Routes reference it by this id.")],
|
||||
service: Service,
|
||||
upstream: Upstream,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -4371,8 +4371,8 @@ class IngressApi:
|
||||
|
||||
:param id: ID identifies the pool within the org: [A-Za-z0-9-_.], at most 128 chars. A create that omits it gets a generated one. Routes reference it by this id. (required)
|
||||
:type id: str
|
||||
:param service: (required)
|
||||
:type service: Service
|
||||
:param upstream: (required)
|
||||
:type upstream: Upstream
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -4397,7 +4397,7 @@ class IngressApi:
|
||||
|
||||
_param = self._put_v1_ingress_services_by_id_serialize(
|
||||
id=id,
|
||||
service=service,
|
||||
upstream=upstream,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -4405,7 +4405,7 @@ class IngressApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "Service",
|
||||
'200': "Upstream",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
@@ -4417,7 +4417,7 @@ class IngressApi:
|
||||
def _put_v1_ingress_services_by_id_serialize(
|
||||
self,
|
||||
id,
|
||||
service,
|
||||
upstream,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -4445,8 +4445,8 @@ class IngressApi:
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
# process the body parameter
|
||||
if service is not None:
|
||||
_body_params = service
|
||||
if upstream is not None:
|
||||
_body_params = upstream
|
||||
|
||||
|
||||
# set the HTTP header `Accept`
|
||||
|
||||
@@ -26,6 +26,8 @@ from hanzoai.cloud.models.github_backfill_in import GithubBackfillIn
|
||||
from hanzoai.cloud.models.github_backfill_result import GithubBackfillResult
|
||||
from hanzoai.cloud.models.github_claim_in import GithubClaimIn
|
||||
from hanzoai.cloud.models.github_claim_out import GithubClaimOut
|
||||
from hanzoai.cloud.models.github_fork_out import GithubForkOut
|
||||
from hanzoai.cloud.models.github_fork_req import GithubForkReq
|
||||
from hanzoai.cloud.models.github_import_in import GithubImportIn
|
||||
from hanzoai.cloud.models.github_import_out import GithubImportOut
|
||||
from hanzoai.cloud.models.github_installations_out import GithubInstallationsOut
|
||||
@@ -36,6 +38,8 @@ from hanzoai.cloud.models.github_pages_update_req import GithubPagesUpdateReq
|
||||
from hanzoai.cloud.models.github_pages_updated_out import GithubPagesUpdatedOut
|
||||
from hanzoai.cloud.models.github_pages_view import GithubPagesView
|
||||
from hanzoai.cloud.models.github_repos_out import GithubReposOut
|
||||
from hanzoai.cloud.models.github_search_out import GithubSearchOut
|
||||
from hanzoai.cloud.models.github_search_req import GithubSearchReq
|
||||
from hanzoai.cloud.models.list_out import ListOut
|
||||
from hanzoai.cloud.models.provider_view import ProviderView
|
||||
from hanzoai.cloud.models.verify_out import VerifyOut
|
||||
@@ -6194,6 +6198,279 @@ class IntegrationsApi:
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_fork(
|
||||
self,
|
||||
github_fork_req: GithubForkReq,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> GithubForkOut:
|
||||
"""Forks a granted repository.
|
||||
|
||||
Forks a granted repository. GitHub's fork is ASYNCHRONOUS: it answers 202 with the target repo and populates it in the background, and it answers the same 202 when the fork already exists. So this reports what GitHub said rather than waiting — a call that blocked until the clone finished would time out on a large repository and tell the caller nothing it does not already know.
|
||||
|
||||
:param github_fork_req: (required)
|
||||
:type github_fork_req: GithubForkReq
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_integrations_github_fork_serialize(
|
||||
github_fork_req=github_fork_req,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "GithubForkOut",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
).data
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_fork_with_http_info(
|
||||
self,
|
||||
github_fork_req: GithubForkReq,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[GithubForkOut]:
|
||||
"""Forks a granted repository.
|
||||
|
||||
Forks a granted repository. GitHub's fork is ASYNCHRONOUS: it answers 202 with the target repo and populates it in the background, and it answers the same 202 when the fork already exists. So this reports what GitHub said rather than waiting — a call that blocked until the clone finished would time out on a large repository and tell the caller nothing it does not already know.
|
||||
|
||||
:param github_fork_req: (required)
|
||||
:type github_fork_req: GithubForkReq
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_integrations_github_fork_serialize(
|
||||
github_fork_req=github_fork_req,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "GithubForkOut",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
)
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_fork_without_preload_content(
|
||||
self,
|
||||
github_fork_req: GithubForkReq,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Forks a granted repository.
|
||||
|
||||
Forks a granted repository. GitHub's fork is ASYNCHRONOUS: it answers 202 with the target repo and populates it in the background, and it answers the same 202 when the fork already exists. So this reports what GitHub said rather than waiting — a call that blocked until the clone finished would time out on a large repository and tell the caller nothing it does not already know.
|
||||
|
||||
:param github_fork_req: (required)
|
||||
:type github_fork_req: GithubForkReq
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_integrations_github_fork_serialize(
|
||||
github_fork_req=github_fork_req,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "GithubForkOut",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
return response_data.response
|
||||
|
||||
|
||||
def _post_v1_integrations_github_fork_serialize(
|
||||
self,
|
||||
github_fork_req,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
_host_index,
|
||||
) -> RequestSerialized:
|
||||
|
||||
_host = None
|
||||
|
||||
_collection_formats: Dict[str, str] = {
|
||||
}
|
||||
|
||||
_path_params: Dict[str, str] = {}
|
||||
_query_params: List[Tuple[str, str]] = []
|
||||
_header_params: Dict[str, Optional[str]] = _headers or {}
|
||||
_form_params: List[Tuple[str, str]] = []
|
||||
_files: Dict[
|
||||
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
||||
] = {}
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
# process the body parameter
|
||||
if github_fork_req is not None:
|
||||
_body_params = github_fork_req
|
||||
|
||||
|
||||
# set the HTTP header `Accept`
|
||||
if 'Accept' not in _header_params:
|
||||
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||
[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
|
||||
# set the HTTP header `Content-Type`
|
||||
if _content_type:
|
||||
_header_params['Content-Type'] = _content_type
|
||||
else:
|
||||
_default_content_type = (
|
||||
self.api_client.select_header_content_type(
|
||||
[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
)
|
||||
if _default_content_type is not None:
|
||||
_header_params['Content-Type'] = _default_content_type
|
||||
|
||||
# authentication setting
|
||||
_auth_settings: List[str] = [
|
||||
]
|
||||
|
||||
return self.api_client.param_serialize(
|
||||
method='POST',
|
||||
resource_path='/v1/integrations/github/fork',
|
||||
path_params=_path_params,
|
||||
query_params=_query_params,
|
||||
header_params=_header_params,
|
||||
body=_body_params,
|
||||
post_params=_form_params,
|
||||
files=_files,
|
||||
auth_settings=_auth_settings,
|
||||
collection_formats=_collection_formats,
|
||||
_host=_host,
|
||||
_request_auth=_request_auth
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_issues_backfill(
|
||||
self,
|
||||
@@ -7288,6 +7565,279 @@ class IntegrationsApi:
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_search(
|
||||
self,
|
||||
github_search_req: GithubSearchReq,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> GithubSearchOut:
|
||||
"""Finds repositories on GitHub.
|
||||
|
||||
Finds repositories on GitHub. This reads the PUBLIC index and returns nothing an installation unlocks: it is how you find a repository to fork, not a way to see inside one. The org's own token is used only so the query is rate-limited against the installation rather than anonymously — the results are the same ones anyone would get.
|
||||
|
||||
:param github_search_req: (required)
|
||||
:type github_search_req: GithubSearchReq
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_integrations_github_search_serialize(
|
||||
github_search_req=github_search_req,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "GithubSearchOut",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
).data
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_search_with_http_info(
|
||||
self,
|
||||
github_search_req: GithubSearchReq,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[GithubSearchOut]:
|
||||
"""Finds repositories on GitHub.
|
||||
|
||||
Finds repositories on GitHub. This reads the PUBLIC index and returns nothing an installation unlocks: it is how you find a repository to fork, not a way to see inside one. The org's own token is used only so the query is rate-limited against the installation rather than anonymously — the results are the same ones anyone would get.
|
||||
|
||||
:param github_search_req: (required)
|
||||
:type github_search_req: GithubSearchReq
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_integrations_github_search_serialize(
|
||||
github_search_req=github_search_req,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "GithubSearchOut",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
)
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_github_search_without_preload_content(
|
||||
self,
|
||||
github_search_req: GithubSearchReq,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Finds repositories on GitHub.
|
||||
|
||||
Finds repositories on GitHub. This reads the PUBLIC index and returns nothing an installation unlocks: it is how you find a repository to fork, not a way to see inside one. The org's own token is used only so the query is rate-limited against the installation rather than anonymously — the results are the same ones anyone would get.
|
||||
|
||||
:param github_search_req: (required)
|
||||
:type github_search_req: GithubSearchReq
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_integrations_github_search_serialize(
|
||||
github_search_req=github_search_req,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "GithubSearchOut",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
return response_data.response
|
||||
|
||||
|
||||
def _post_v1_integrations_github_search_serialize(
|
||||
self,
|
||||
github_search_req,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
_host_index,
|
||||
) -> RequestSerialized:
|
||||
|
||||
_host = None
|
||||
|
||||
_collection_formats: Dict[str, str] = {
|
||||
}
|
||||
|
||||
_path_params: Dict[str, str] = {}
|
||||
_query_params: List[Tuple[str, str]] = []
|
||||
_header_params: Dict[str, Optional[str]] = _headers or {}
|
||||
_form_params: List[Tuple[str, str]] = []
|
||||
_files: Dict[
|
||||
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
||||
] = {}
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
# process the body parameter
|
||||
if github_search_req is not None:
|
||||
_body_params = github_search_req
|
||||
|
||||
|
||||
# set the HTTP header `Accept`
|
||||
if 'Accept' not in _header_params:
|
||||
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||
[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
|
||||
# set the HTTP header `Content-Type`
|
||||
if _content_type:
|
||||
_header_params['Content-Type'] = _content_type
|
||||
else:
|
||||
_default_content_type = (
|
||||
self.api_client.select_header_content_type(
|
||||
[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
)
|
||||
if _default_content_type is not None:
|
||||
_header_params['Content-Type'] = _default_content_type
|
||||
|
||||
# authentication setting
|
||||
_auth_settings: List[str] = [
|
||||
]
|
||||
|
||||
return self.api_client.param_serialize(
|
||||
method='POST',
|
||||
resource_path='/v1/integrations/github/search',
|
||||
path_params=_path_params,
|
||||
query_params=_query_params,
|
||||
header_params=_header_params,
|
||||
body=_body_params,
|
||||
post_params=_form_params,
|
||||
files=_files,
|
||||
auth_settings=_auth_settings,
|
||||
collection_formats=_collection_formats,
|
||||
_host=_host,
|
||||
_request_auth=_request_auth
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_integrations_slack_commands(
|
||||
self,
|
||||
|
||||
@@ -1905,9 +1905,9 @@ class KbApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Imports an Obsidian, Notion, Roam or Evernote export into the org's knowledge base.
|
||||
"""Import an Obsidian, Notion, Roam or Evernote export into the org's knowledge base
|
||||
|
||||
Imports an Obsidian, Notion, Roam or Evernote export into the org's knowledge base. It ingests an uploaded export as a tree of kb-page documents with its link structure intact. `?format=` picks the normalizer — obsidian, notion, roam or evernote — and the export arrives as a multipart `file` part, or as the raw request body when there is no multipart part: an Obsidian or Notion vault zip, a Roam JSON (raw or inside the zip Roam downloads), or an Evernote .enex. The pages are filed through the SAME ingest path a connector sync uses, so the kb-page hook indexes each one for retrieval AND extracts its `[[wikilinks]]` into kb-link edges — the imported vault is searchable and its graph is navigable without a second pass. Parents are filed before their children, and each page takes a slug unique within the org (suffixed -2, -3, … on collision), so a re-import adds pages rather than overwriting the ones already there. Scoped to the caller's validated org; `?project=` narrows every imported page to one project. No validated principal is 403, and an org that has not installed the kb module is refused with the install call to make first. The bounds are 64 MB per upload, 5000 pages and 8 MB per archive entry: pages past the five-thousandth are dropped and a larger entry is truncated at its bound, and a page the store rejects is skipped — so the answer's `imported` count is what was actually filed, not what was sent.
|
||||
Ingests an uploaded export as a tree of kb-page documents with its link structure intact. `?format=` picks the normalizer — obsidian, notion, roam or evernote — and the export arrives as a multipart `file` part, or as the raw request body when there is no multipart part: an Obsidian or Notion vault zip, a Roam JSON (raw or inside the zip Roam downloads), or an Evernote .enex. The pages are filed through the SAME ingest path a connector sync uses, so the kb-page hook indexes each one for retrieval AND extracts its `[[wikilinks]]` into kb-link edges — the imported vault is searchable and its graph is navigable without a second pass. Parents are filed before their children, and each page takes a slug unique within the org (suffixed -2, -3, … on collision), so a re-import adds pages rather than overwriting the ones already there. Scoped to the caller's validated org; `?project=` narrows every imported page to one project. No validated principal is 403, and an org that has not installed the kb module is refused with the install call to make first. The bounds are 64 MB per upload, 5000 pages and 8 MB per archive entry: pages past the five-thousandth are dropped and a larger entry is truncated at its bound, and a page the store rejects is skipped — so the answer's `imported` count is what was actually filed, not what was sent.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1967,9 +1967,9 @@ class KbApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Imports an Obsidian, Notion, Roam or Evernote export into the org's knowledge base.
|
||||
"""Import an Obsidian, Notion, Roam or Evernote export into the org's knowledge base
|
||||
|
||||
Imports an Obsidian, Notion, Roam or Evernote export into the org's knowledge base. It ingests an uploaded export as a tree of kb-page documents with its link structure intact. `?format=` picks the normalizer — obsidian, notion, roam or evernote — and the export arrives as a multipart `file` part, or as the raw request body when there is no multipart part: an Obsidian or Notion vault zip, a Roam JSON (raw or inside the zip Roam downloads), or an Evernote .enex. The pages are filed through the SAME ingest path a connector sync uses, so the kb-page hook indexes each one for retrieval AND extracts its `[[wikilinks]]` into kb-link edges — the imported vault is searchable and its graph is navigable without a second pass. Parents are filed before their children, and each page takes a slug unique within the org (suffixed -2, -3, … on collision), so a re-import adds pages rather than overwriting the ones already there. Scoped to the caller's validated org; `?project=` narrows every imported page to one project. No validated principal is 403, and an org that has not installed the kb module is refused with the install call to make first. The bounds are 64 MB per upload, 5000 pages and 8 MB per archive entry: pages past the five-thousandth are dropped and a larger entry is truncated at its bound, and a page the store rejects is skipped — so the answer's `imported` count is what was actually filed, not what was sent.
|
||||
Ingests an uploaded export as a tree of kb-page documents with its link structure intact. `?format=` picks the normalizer — obsidian, notion, roam or evernote — and the export arrives as a multipart `file` part, or as the raw request body when there is no multipart part: an Obsidian or Notion vault zip, a Roam JSON (raw or inside the zip Roam downloads), or an Evernote .enex. The pages are filed through the SAME ingest path a connector sync uses, so the kb-page hook indexes each one for retrieval AND extracts its `[[wikilinks]]` into kb-link edges — the imported vault is searchable and its graph is navigable without a second pass. Parents are filed before their children, and each page takes a slug unique within the org (suffixed -2, -3, … on collision), so a re-import adds pages rather than overwriting the ones already there. Scoped to the caller's validated org; `?project=` narrows every imported page to one project. No validated principal is 403, and an org that has not installed the kb module is refused with the install call to make first. The bounds are 64 MB per upload, 5000 pages and 8 MB per archive entry: pages past the five-thousandth are dropped and a larger entry is truncated at its bound, and a page the store rejects is skipped — so the answer's `imported` count is what was actually filed, not what was sent.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -2029,9 +2029,9 @@ class KbApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Imports an Obsidian, Notion, Roam or Evernote export into the org's knowledge base.
|
||||
"""Import an Obsidian, Notion, Roam or Evernote export into the org's knowledge base
|
||||
|
||||
Imports an Obsidian, Notion, Roam or Evernote export into the org's knowledge base. It ingests an uploaded export as a tree of kb-page documents with its link structure intact. `?format=` picks the normalizer — obsidian, notion, roam or evernote — and the export arrives as a multipart `file` part, or as the raw request body when there is no multipart part: an Obsidian or Notion vault zip, a Roam JSON (raw or inside the zip Roam downloads), or an Evernote .enex. The pages are filed through the SAME ingest path a connector sync uses, so the kb-page hook indexes each one for retrieval AND extracts its `[[wikilinks]]` into kb-link edges — the imported vault is searchable and its graph is navigable without a second pass. Parents are filed before their children, and each page takes a slug unique within the org (suffixed -2, -3, … on collision), so a re-import adds pages rather than overwriting the ones already there. Scoped to the caller's validated org; `?project=` narrows every imported page to one project. No validated principal is 403, and an org that has not installed the kb module is refused with the install call to make first. The bounds are 64 MB per upload, 5000 pages and 8 MB per archive entry: pages past the five-thousandth are dropped and a larger entry is truncated at its bound, and a page the store rejects is skipped — so the answer's `imported` count is what was actually filed, not what was sent.
|
||||
Ingests an uploaded export as a tree of kb-page documents with its link structure intact. `?format=` picks the normalizer — obsidian, notion, roam or evernote — and the export arrives as a multipart `file` part, or as the raw request body when there is no multipart part: an Obsidian or Notion vault zip, a Roam JSON (raw or inside the zip Roam downloads), or an Evernote .enex. The pages are filed through the SAME ingest path a connector sync uses, so the kb-page hook indexes each one for retrieval AND extracts its `[[wikilinks]]` into kb-link edges — the imported vault is searchable and its graph is navigable without a second pass. Parents are filed before their children, and each page takes a slug unique within the org (suffixed -2, -3, … on collision), so a re-import adds pages rather than overwriting the ones already there. Scoped to the caller's validated org; `?project=` narrows every imported page to one project. No validated principal is 403, and an org that has not installed the kb module is refused with the install call to make first. The bounds are 64 MB per upload, 5000 pages and 8 MB per archive entry: pages past the five-thousandth are dropped and a larger entry is truncated at its bound, and a page the store rejects is skipped — so the answer's `imported` count is what was actually filed, not what was sent.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -53,9 +53,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Deletes one secret from the caller's org.
|
||||
"""Delete one secret from your org
|
||||
|
||||
Deletes one secret from the caller's org. It removes one secret from the caller's own org and confirms the name and environment that were removed. Deleting a secret that is not there is a 404, not a silent success, so a caller can tell a real deletion from a typo. The trailing path is the secret's subpath and name beneath the caller's org root, and `env` selects the environment, defaulting when omitted. Scoped to the caller's own org — the store root comes from the validated claim, never from the request — under the same fail-closed admission as the reads.
|
||||
Removes one secret from the caller's own org and confirms the name and environment that were removed. Deleting a secret that is not there is a 404, not a silent success, so a caller can tell a real deletion from a typo. The trailing path is the secret's subpath and name beneath the caller's org root, and `env` selects the environment, defaulting when omitted. Scoped to the caller's own org — the store root comes from the validated claim, never from the request — under the same fail-closed admission as the reads.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -119,9 +119,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Deletes one secret from the caller's org.
|
||||
"""Delete one secret from your org
|
||||
|
||||
Deletes one secret from the caller's org. It removes one secret from the caller's own org and confirms the name and environment that were removed. Deleting a secret that is not there is a 404, not a silent success, so a caller can tell a real deletion from a typo. The trailing path is the secret's subpath and name beneath the caller's org root, and `env` selects the environment, defaulting when omitted. Scoped to the caller's own org — the store root comes from the validated claim, never from the request — under the same fail-closed admission as the reads.
|
||||
Removes one secret from the caller's own org and confirms the name and environment that were removed. Deleting a secret that is not there is a 404, not a silent success, so a caller can tell a real deletion from a typo. The trailing path is the secret's subpath and name beneath the caller's org root, and `env` selects the environment, defaulting when omitted. Scoped to the caller's own org — the store root comes from the validated claim, never from the request — under the same fail-closed admission as the reads.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -185,9 +185,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Deletes one secret from the caller's org.
|
||||
"""Delete one secret from your org
|
||||
|
||||
Deletes one secret from the caller's org. It removes one secret from the caller's own org and confirms the name and environment that were removed. Deleting a secret that is not there is a 404, not a silent success, so a caller can tell a real deletion from a typo. The trailing path is the secret's subpath and name beneath the caller's org root, and `env` selects the environment, defaulting when omitted. Scoped to the caller's own org — the store root comes from the validated claim, never from the request — under the same fail-closed admission as the reads.
|
||||
Removes one secret from the caller's own org and confirms the name and environment that were removed. Deleting a secret that is not there is a 404, not a silent success, so a caller can tell a real deletion from a typo. The trailing path is the secret's subpath and name beneath the caller's org root, and `env` selects the environment, defaulting when omitted. Scoped to the caller's own org — the store root comes from the validated claim, never from the request — under the same fail-closed admission as the reads.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -302,9 +302,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Serves the runtime configuration for the KMS console.
|
||||
"""Runtime configuration for the KMS console
|
||||
|
||||
Serves the runtime configuration for the KMS console. It returns what the console needs before anyone has signed in: the brand, the OIDC issuer it authenticates against, the API base for this subsystem and the path of the login exchange. Public on purpose, and it holds nothing sensitive — it is deliberately kept under this subsystem's own namespace rather than under an admin prefix, so a gateway that admin-gates the admin routes cannot break the console's legitimate pre-login fetch.
|
||||
Returns what the console needs before anyone has signed in: the brand, the OIDC issuer it authenticates against, the API base for this subsystem and the path of the login exchange. Public on purpose, and it holds nothing sensitive — it is deliberately kept under this subsystem's own namespace rather than under an admin prefix, so a gateway that admin-gates the admin routes cannot break the console's legitimate pre-login fetch.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -364,9 +364,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Serves the runtime configuration for the KMS console.
|
||||
"""Runtime configuration for the KMS console
|
||||
|
||||
Serves the runtime configuration for the KMS console. It returns what the console needs before anyone has signed in: the brand, the OIDC issuer it authenticates against, the API base for this subsystem and the path of the login exchange. Public on purpose, and it holds nothing sensitive — it is deliberately kept under this subsystem's own namespace rather than under an admin prefix, so a gateway that admin-gates the admin routes cannot break the console's legitimate pre-login fetch.
|
||||
Returns what the console needs before anyone has signed in: the brand, the OIDC issuer it authenticates against, the API base for this subsystem and the path of the login exchange. Public on purpose, and it holds nothing sensitive — it is deliberately kept under this subsystem's own namespace rather than under an admin prefix, so a gateway that admin-gates the admin routes cannot break the console's legitimate pre-login fetch.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -426,9 +426,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Serves the runtime configuration for the KMS console.
|
||||
"""Runtime configuration for the KMS console
|
||||
|
||||
Serves the runtime configuration for the KMS console. It returns what the console needs before anyone has signed in: the brand, the OIDC issuer it authenticates against, the API base for this subsystem and the path of the login exchange. Public on purpose, and it holds nothing sensitive — it is deliberately kept under this subsystem's own namespace rather than under an admin prefix, so a gateway that admin-gates the admin routes cannot break the console's legitimate pre-login fetch.
|
||||
Returns what the console needs before anyone has signed in: the brand, the OIDC issuer it authenticates against, the API base for this subsystem and the path of the login exchange. Public on purpose, and it holds nothing sensitive — it is deliberately kept under this subsystem's own namespace rather than under an admin prefix, so a gateway that admin-gates the admin routes cannot break the console's legitimate pre-login fetch.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -537,9 +537,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Reports whether this broker can actually serve secrets.
|
||||
"""Whether this broker can actually serve secrets
|
||||
|
||||
Reports whether this broker can actually serve secrets. A real readiness probe, not a liveness stub: 200 only when the store is open AND a master key is configured, with `signing` reporting whether signing keys are set up too. Anything less answers 503 with `ready:false` and the reason — no in-process store, or no master key — which are exactly the two states in which the secret operations refuse. Not token-gated, because the platform must be able to probe it without a credential. It reports the broker's configuration state only; no secret, no key material and no tenant name appears in it.
|
||||
A real readiness probe, not a liveness stub: 200 only when the store is open AND a master key is configured, with `signing` reporting whether signing keys are set up too. Anything less answers 503 with `ready:false` and the reason — no in-process store, or no master key — which are exactly the two states in which the secret operations refuse. Not token-gated, because the platform must be able to probe it without a credential. It reports the broker's configuration state only; no secret, no key material and no tenant name appears in it.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -599,9 +599,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Reports whether this broker can actually serve secrets.
|
||||
"""Whether this broker can actually serve secrets
|
||||
|
||||
Reports whether this broker can actually serve secrets. A real readiness probe, not a liveness stub: 200 only when the store is open AND a master key is configured, with `signing` reporting whether signing keys are set up too. Anything less answers 503 with `ready:false` and the reason — no in-process store, or no master key — which are exactly the two states in which the secret operations refuse. Not token-gated, because the platform must be able to probe it without a credential. It reports the broker's configuration state only; no secret, no key material and no tenant name appears in it.
|
||||
A real readiness probe, not a liveness stub: 200 only when the store is open AND a master key is configured, with `signing` reporting whether signing keys are set up too. Anything less answers 503 with `ready:false` and the reason — no in-process store, or no master key — which are exactly the two states in which the secret operations refuse. Not token-gated, because the platform must be able to probe it without a credential. It reports the broker's configuration state only; no secret, no key material and no tenant name appears in it.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -661,9 +661,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Reports whether this broker can actually serve secrets.
|
||||
"""Whether this broker can actually serve secrets
|
||||
|
||||
Reports whether this broker can actually serve secrets. A real readiness probe, not a liveness stub: 200 only when the store is open AND a master key is configured, with `signing` reporting whether signing keys are set up too. Anything less answers 503 with `ready:false` and the reason — no in-process store, or no master key — which are exactly the two states in which the secret operations refuse. Not token-gated, because the platform must be able to probe it without a credential. It reports the broker's configuration state only; no secret, no key material and no tenant name appears in it.
|
||||
A real readiness probe, not a liveness stub: 200 only when the store is open AND a master key is configured, with `signing` reporting whether signing keys are set up too. Anything less answers 503 with `ready:false` and the reason — no in-process store, or no master key — which are exactly the two states in which the secret operations refuse. Not token-gated, because the platform must be able to probe it without a credential. It reports the broker's configuration state only; no secret, no key material and no tenant name appears in it.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -772,9 +772,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Lists the secrets the caller's org holds, without their values.
|
||||
"""List the secrets your org holds, without their values
|
||||
|
||||
Lists the secrets the caller's org holds, without their values. It returns the METADATA of the caller's own secrets: each one's name, path, environment and sealing scheme. No value and no ciphertext is included — this operation exists to enumerate what is held, and reading a value is a separate, per-secret call. Scoped to the caller's own org and nothing else, structurally: there is no org in the path, the store root is derived from the validated org claim, and a caller therefore has no way to name another tenant's namespace. `path` narrows to a subpath and `env` selects the environment; both are also accepted under the operator's spellings, `secretPath` and `environment`. Admission is fail-closed and in order: a validated member, an org that is a DNS-1123 label, and a store holding a master key — 403, 400 and 503 respectively, all decided before any record is touched.
|
||||
Returns the METADATA of the caller's own secrets: each one's name, path, environment and sealing scheme. No value and no ciphertext is included — this operation exists to enumerate what is held, and reading a value is a separate, per-secret call. Scoped to the caller's own org and nothing else, structurally: there is no org in the path, the store root is derived from the validated org claim, and a caller therefore has no way to name another tenant's namespace. `path` narrows to a subpath and `env` selects the environment; both are also accepted under the operator's spellings, `secretPath` and `environment`. Admission is fail-closed and in order: a validated member, an org that is a DNS-1123 label, and a store holding a master key — 403, 400 and 503 respectively, all decided before any record is touched.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -834,9 +834,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Lists the secrets the caller's org holds, without their values.
|
||||
"""List the secrets your org holds, without their values
|
||||
|
||||
Lists the secrets the caller's org holds, without their values. It returns the METADATA of the caller's own secrets: each one's name, path, environment and sealing scheme. No value and no ciphertext is included — this operation exists to enumerate what is held, and reading a value is a separate, per-secret call. Scoped to the caller's own org and nothing else, structurally: there is no org in the path, the store root is derived from the validated org claim, and a caller therefore has no way to name another tenant's namespace. `path` narrows to a subpath and `env` selects the environment; both are also accepted under the operator's spellings, `secretPath` and `environment`. Admission is fail-closed and in order: a validated member, an org that is a DNS-1123 label, and a store holding a master key — 403, 400 and 503 respectively, all decided before any record is touched.
|
||||
Returns the METADATA of the caller's own secrets: each one's name, path, environment and sealing scheme. No value and no ciphertext is included — this operation exists to enumerate what is held, and reading a value is a separate, per-secret call. Scoped to the caller's own org and nothing else, structurally: there is no org in the path, the store root is derived from the validated org claim, and a caller therefore has no way to name another tenant's namespace. `path` narrows to a subpath and `env` selects the environment; both are also accepted under the operator's spellings, `secretPath` and `environment`. Admission is fail-closed and in order: a validated member, an org that is a DNS-1123 label, and a store holding a master key — 403, 400 and 503 respectively, all decided before any record is touched.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -896,9 +896,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Lists the secrets the caller's org holds, without their values.
|
||||
"""List the secrets your org holds, without their values
|
||||
|
||||
Lists the secrets the caller's org holds, without their values. It returns the METADATA of the caller's own secrets: each one's name, path, environment and sealing scheme. No value and no ciphertext is included — this operation exists to enumerate what is held, and reading a value is a separate, per-secret call. Scoped to the caller's own org and nothing else, structurally: there is no org in the path, the store root is derived from the validated org claim, and a caller therefore has no way to name another tenant's namespace. `path` narrows to a subpath and `env` selects the environment; both are also accepted under the operator's spellings, `secretPath` and `environment`. Admission is fail-closed and in order: a validated member, an org that is a DNS-1123 label, and a store holding a master key — 403, 400 and 503 respectively, all decided before any record is touched.
|
||||
Returns the METADATA of the caller's own secrets: each one's name, path, environment and sealing scheme. No value and no ciphertext is included — this operation exists to enumerate what is held, and reading a value is a separate, per-secret call. Scoped to the caller's own org and nothing else, structurally: there is no org in the path, the store root is derived from the validated org claim, and a caller therefore has no way to name another tenant's namespace. `path` narrows to a subpath and `env` selects the environment; both are also accepted under the operator's spellings, `secretPath` and `environment`. Admission is fail-closed and in order: a validated member, an org that is a DNS-1123 label, and a store holding a master key — 403, 400 and 503 respectively, all decided before any record is touched.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1008,9 +1008,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Reads one secret's value.
|
||||
"""Read one secret's value
|
||||
|
||||
Reads one secret's value. It opens one sealed secret belonging to the caller's own org and returns its value in the response body, with the name and environment it was resolved under. This is the broker's purpose, and the response body is the ONLY place the value appears — it is not logged, and it is never carried in an error. The trailing path is the secret's subpath and name beneath the caller's org root; `env` selects the environment and falls back to the default when omitted. A secret that is not there is a plain 404 that names nothing about the store. Scoped to the caller's own org and nothing else: there is no org in the path, so another tenant's secret is not merely refused, it is unnameable. Admission is fail-closed — validated member, well-formed org, master key present — and an unconfigured master key is 503 rather than an empty read.
|
||||
Opens one sealed secret belonging to the caller's own org and returns its value in the response body, with the name and environment it was resolved under. This is the broker's purpose, and the response body is the ONLY place the value appears — it is not logged, and it is never carried in an error. The trailing path is the secret's subpath and name beneath the caller's org root; `env` selects the environment and falls back to the default when omitted. A secret that is not there is a plain 404 that names nothing about the store. Scoped to the caller's own org and nothing else: there is no org in the path, so another tenant's secret is not merely refused, it is unnameable. Admission is fail-closed — validated member, well-formed org, master key present — and an unconfigured master key is 503 rather than an empty read.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -1074,9 +1074,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Reads one secret's value.
|
||||
"""Read one secret's value
|
||||
|
||||
Reads one secret's value. It opens one sealed secret belonging to the caller's own org and returns its value in the response body, with the name and environment it was resolved under. This is the broker's purpose, and the response body is the ONLY place the value appears — it is not logged, and it is never carried in an error. The trailing path is the secret's subpath and name beneath the caller's org root; `env` selects the environment and falls back to the default when omitted. A secret that is not there is a plain 404 that names nothing about the store. Scoped to the caller's own org and nothing else: there is no org in the path, so another tenant's secret is not merely refused, it is unnameable. Admission is fail-closed — validated member, well-formed org, master key present — and an unconfigured master key is 503 rather than an empty read.
|
||||
Opens one sealed secret belonging to the caller's own org and returns its value in the response body, with the name and environment it was resolved under. This is the broker's purpose, and the response body is the ONLY place the value appears — it is not logged, and it is never carried in an error. The trailing path is the secret's subpath and name beneath the caller's org root; `env` selects the environment and falls back to the default when omitted. A secret that is not there is a plain 404 that names nothing about the store. Scoped to the caller's own org and nothing else: there is no org in the path, so another tenant's secret is not merely refused, it is unnameable. Admission is fail-closed — validated member, well-formed org, master key present — and an unconfigured master key is 503 rather than an empty read.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -1140,9 +1140,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Reads one secret's value.
|
||||
"""Read one secret's value
|
||||
|
||||
Reads one secret's value. It opens one sealed secret belonging to the caller's own org and returns its value in the response body, with the name and environment it was resolved under. This is the broker's purpose, and the response body is the ONLY place the value appears — it is not logged, and it is never carried in an error. The trailing path is the secret's subpath and name beneath the caller's org root; `env` selects the environment and falls back to the default when omitted. A secret that is not there is a plain 404 that names nothing about the store. Scoped to the caller's own org and nothing else: there is no org in the path, so another tenant's secret is not merely refused, it is unnameable. Admission is fail-closed — validated member, well-formed org, master key present — and an unconfigured master key is 503 rather than an empty read.
|
||||
Opens one sealed secret belonging to the caller's own org and returns its value in the response body, with the name and environment it was resolved under. This is the broker's purpose, and the response body is the ONLY place the value appears — it is not logged, and it is never carried in an error. The trailing path is the secret's subpath and name beneath the caller's org root; `env` selects the environment and falls back to the default when omitted. A secret that is not there is a plain 404 that names nothing about the store. Scoped to the caller's own org and nothing else: there is no org in the path, so another tenant's secret is not merely refused, it is unnameable. Admission is fail-closed — validated member, well-formed org, master key present — and an unconfigured master key is 503 rather than an empty read.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -1257,9 +1257,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Exchanges a machine credential for an IAM bearer token.
|
||||
"""Exchange a machine credential for an IAM bearer token
|
||||
|
||||
Exchanges a machine credential for an IAM bearer token. It takes a tenant's machine credential — a client id and client secret — and returns an owner-scoped IAM access token with its lifetime, which is the bearer the caller then carries on the org-scoped secret operations. It is deliberately public and unauthenticated, because it IS the credential exchange and runs before any principal exists. That makes it the one route in this subsystem rate-limited PER SOURCE IP, keyed on the real TCP peer rather than on any caller-supplied header. The submitted secret is never logged and never echoed, and failures collapse to one clean status with no upstream detail: 401 when the credential does not authenticate, 502 when the identity provider is unreachable, 503 when no issuer is configured. That is on purpose — a richer error would be a validity oracle for guessed credentials.
|
||||
Takes a tenant's machine credential — a client id and client secret — and returns an owner-scoped IAM access token with its lifetime, which is the bearer the caller then carries on the org-scoped secret operations. It is deliberately public and unauthenticated, because it IS the credential exchange and runs before any principal exists. That makes it the one route in this subsystem rate-limited PER SOURCE IP, keyed on the real TCP peer rather than on any caller-supplied header. The submitted secret is never logged and never echoed, and failures collapse to one clean status with no upstream detail: 401 when the credential does not authenticate, 502 when the identity provider is unreachable, 503 when no issuer is configured. That is on purpose — a richer error would be a validity oracle for guessed credentials.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1319,9 +1319,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Exchanges a machine credential for an IAM bearer token.
|
||||
"""Exchange a machine credential for an IAM bearer token
|
||||
|
||||
Exchanges a machine credential for an IAM bearer token. It takes a tenant's machine credential — a client id and client secret — and returns an owner-scoped IAM access token with its lifetime, which is the bearer the caller then carries on the org-scoped secret operations. It is deliberately public and unauthenticated, because it IS the credential exchange and runs before any principal exists. That makes it the one route in this subsystem rate-limited PER SOURCE IP, keyed on the real TCP peer rather than on any caller-supplied header. The submitted secret is never logged and never echoed, and failures collapse to one clean status with no upstream detail: 401 when the credential does not authenticate, 502 when the identity provider is unreachable, 503 when no issuer is configured. That is on purpose — a richer error would be a validity oracle for guessed credentials.
|
||||
Takes a tenant's machine credential — a client id and client secret — and returns an owner-scoped IAM access token with its lifetime, which is the bearer the caller then carries on the org-scoped secret operations. It is deliberately public and unauthenticated, because it IS the credential exchange and runs before any principal exists. That makes it the one route in this subsystem rate-limited PER SOURCE IP, keyed on the real TCP peer rather than on any caller-supplied header. The submitted secret is never logged and never echoed, and failures collapse to one clean status with no upstream detail: 401 when the credential does not authenticate, 502 when the identity provider is unreachable, 503 when no issuer is configured. That is on purpose — a richer error would be a validity oracle for guessed credentials.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1381,9 +1381,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Exchanges a machine credential for an IAM bearer token.
|
||||
"""Exchange a machine credential for an IAM bearer token
|
||||
|
||||
Exchanges a machine credential for an IAM bearer token. It takes a tenant's machine credential — a client id and client secret — and returns an owner-scoped IAM access token with its lifetime, which is the bearer the caller then carries on the org-scoped secret operations. It is deliberately public and unauthenticated, because it IS the credential exchange and runs before any principal exists. That makes it the one route in this subsystem rate-limited PER SOURCE IP, keyed on the real TCP peer rather than on any caller-supplied header. The submitted secret is never logged and never echoed, and failures collapse to one clean status with no upstream detail: 401 when the credential does not authenticate, 502 when the identity provider is unreachable, 503 when no issuer is configured. That is on purpose — a richer error would be a validity oracle for guessed credentials.
|
||||
Takes a tenant's machine credential — a client id and client secret — and returns an owner-scoped IAM access token with its lifetime, which is the bearer the caller then carries on the org-scoped secret operations. It is deliberately public and unauthenticated, because it IS the credential exchange and runs before any principal exists. That makes it the one route in this subsystem rate-limited PER SOURCE IP, keyed on the real TCP peer rather than on any caller-supplied header. The submitted secret is never logged and never echoed, and failures collapse to one clean status with no upstream detail: 401 when the credential does not authenticate, 502 when the identity provider is unreachable, 503 when no issuer is configured. That is on purpose — a richer error would be a validity oracle for guessed credentials.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1492,9 +1492,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Stores or replaces one secret in the caller's org.
|
||||
"""Store or replace one secret in your org
|
||||
|
||||
Stores or replaces one secret in the caller's org. It upserts one secret under the caller's own org. The value is sealed before it is written — a fresh per-secret data key, itself wrapped by the master key — so plaintext never reaches disk. The receipt confirms the name and environment that were written and does not echo the value. `env` is REQUIRED on a write and has no default, which is the rule most easily got wrong here: reads and deletes still fall back to the default environment for older callers, but a write must not, because the environment is part of the storage key. A silently defaulted write lands in a bucket the readers that resolve project, environment and path never look in, and the stale value keeps being served — so the write fails loudly instead. `name` is required, `path` is an optional subpath beneath the org root, and the org is taken from the validated claim rather than the body. Same fail-closed admission as the rest of the secret surface: validated member, well-formed org, master key present.
|
||||
Upserts one secret under the caller's own org. The value is sealed before it is written — a fresh per-secret data key, itself wrapped by the master key — so plaintext never reaches disk. The receipt confirms the name and environment that were written and does not echo the value. `env` is REQUIRED on a write and has no default, which is the rule most easily got wrong here: reads and deletes still fall back to the default environment for older callers, but a write must not, because the environment is part of the storage key. A silently defaulted write lands in a bucket the readers that resolve project, environment and path never look in, and the stale value keeps being served — so the write fails loudly instead. `name` is required, `path` is an optional subpath beneath the org root, and the org is taken from the validated claim rather than the body. Same fail-closed admission as the rest of the secret surface: validated member, well-formed org, master key present.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1554,9 +1554,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Stores or replaces one secret in the caller's org.
|
||||
"""Store or replace one secret in your org
|
||||
|
||||
Stores or replaces one secret in the caller's org. It upserts one secret under the caller's own org. The value is sealed before it is written — a fresh per-secret data key, itself wrapped by the master key — so plaintext never reaches disk. The receipt confirms the name and environment that were written and does not echo the value. `env` is REQUIRED on a write and has no default, which is the rule most easily got wrong here: reads and deletes still fall back to the default environment for older callers, but a write must not, because the environment is part of the storage key. A silently defaulted write lands in a bucket the readers that resolve project, environment and path never look in, and the stale value keeps being served — so the write fails loudly instead. `name` is required, `path` is an optional subpath beneath the org root, and the org is taken from the validated claim rather than the body. Same fail-closed admission as the rest of the secret surface: validated member, well-formed org, master key present.
|
||||
Upserts one secret under the caller's own org. The value is sealed before it is written — a fresh per-secret data key, itself wrapped by the master key — so plaintext never reaches disk. The receipt confirms the name and environment that were written and does not echo the value. `env` is REQUIRED on a write and has no default, which is the rule most easily got wrong here: reads and deletes still fall back to the default environment for older callers, but a write must not, because the environment is part of the storage key. A silently defaulted write lands in a bucket the readers that resolve project, environment and path never look in, and the stale value keeps being served — so the write fails loudly instead. `name` is required, `path` is an optional subpath beneath the org root, and the org is taken from the validated claim rather than the body. Same fail-closed admission as the rest of the secret surface: validated member, well-formed org, master key present.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1616,9 +1616,9 @@ class KmsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Stores or replaces one secret in the caller's org.
|
||||
"""Store or replace one secret in your org
|
||||
|
||||
Stores or replaces one secret in the caller's org. It upserts one secret under the caller's own org. The value is sealed before it is written — a fresh per-secret data key, itself wrapped by the master key — so plaintext never reaches disk. The receipt confirms the name and environment that were written and does not echo the value. `env` is REQUIRED on a write and has no default, which is the rule most easily got wrong here: reads and deletes still fall back to the default environment for older callers, but a write must not, because the environment is part of the storage key. A silently defaulted write lands in a bucket the readers that resolve project, environment and path never look in, and the stale value keeps being served — so the write fails loudly instead. `name` is required, `path` is an optional subpath beneath the org root, and the org is taken from the validated claim rather than the body. Same fail-closed admission as the rest of the secret surface: validated member, well-formed org, master key present.
|
||||
Upserts one secret under the caller's own org. The value is sealed before it is written — a fresh per-secret data key, itself wrapped by the master key — so plaintext never reaches disk. The receipt confirms the name and environment that were written and does not echo the value. `env` is REQUIRED on a write and has no default, which is the rule most easily got wrong here: reads and deletes still fall back to the default environment for older callers, but a write must not, because the environment is part of the storage key. A silently defaulted write lands in a bucket the readers that resolve project, environment and path never look in, and the stale value keeps being served — so the write fails loudly instead. `name` is required, `path` is an optional subpath beneath the org root, and the org is taken from the validated claim rather than the body. Same fail-closed admission as the rest of the secret surface: validated member, well-formed org, master key present.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -2162,9 +2162,9 @@ class LegalApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Records that a generated document's signature request completed, answering the document with a `signed` flag.
|
||||
"""Record that a generated document's signature request completed
|
||||
|
||||
Records that a generated document's signature request completed, answering the document with a `signed` flag. The e-sign provider's own status is consulted FIRST and is the default answer; an explicit `signed` field in the body overrides it. That override is the whole point: the default `manual` provider never self-completes, so a reviewer (or a real provider's webhook) is what moves the document. A completion flips the document to `signed`, stamps `signedAt`, and writes a `legal.document.signed` audit event; a provider still reporting incomplete answers 200 with the document unchanged, so the call is safe to repeat and never fabricates a signature. Org-scoped and fails closed: a validated principal is required (403 without one), the document is read under the caller's OWN org so another tenant's id is a 404, a document with no open signature request is a 400, and a provider whose status call errors is a 502.
|
||||
Records completion of the signature request opened over a generated document and answers the document with a `signed` flag. The e-sign provider's own status is consulted FIRST and is the default answer; an explicit `signed` field in the body overrides it. That override is the whole point: the default `manual` provider never self-completes, so a reviewer (or a real provider's webhook) is what moves the document. A completion flips the document to `signed`, stamps `signedAt`, and writes a `legal.document.signed` audit event; a provider still reporting incomplete answers 200 with the document unchanged, so the call is safe to repeat and never fabricates a signature. Org-scoped and fails closed: a validated principal is required (403 without one), the document is read under the caller's OWN org so another tenant's id is a 404, a document with no open signature request is a 400, and a provider whose status call errors is a 502.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2228,9 +2228,9 @@ class LegalApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Records that a generated document's signature request completed, answering the document with a `signed` flag.
|
||||
"""Record that a generated document's signature request completed
|
||||
|
||||
Records that a generated document's signature request completed, answering the document with a `signed` flag. The e-sign provider's own status is consulted FIRST and is the default answer; an explicit `signed` field in the body overrides it. That override is the whole point: the default `manual` provider never self-completes, so a reviewer (or a real provider's webhook) is what moves the document. A completion flips the document to `signed`, stamps `signedAt`, and writes a `legal.document.signed` audit event; a provider still reporting incomplete answers 200 with the document unchanged, so the call is safe to repeat and never fabricates a signature. Org-scoped and fails closed: a validated principal is required (403 without one), the document is read under the caller's OWN org so another tenant's id is a 404, a document with no open signature request is a 400, and a provider whose status call errors is a 502.
|
||||
Records completion of the signature request opened over a generated document and answers the document with a `signed` flag. The e-sign provider's own status is consulted FIRST and is the default answer; an explicit `signed` field in the body overrides it. That override is the whole point: the default `manual` provider never self-completes, so a reviewer (or a real provider's webhook) is what moves the document. A completion flips the document to `signed`, stamps `signedAt`, and writes a `legal.document.signed` audit event; a provider still reporting incomplete answers 200 with the document unchanged, so the call is safe to repeat and never fabricates a signature. Org-scoped and fails closed: a validated principal is required (403 without one), the document is read under the caller's OWN org so another tenant's id is a 404, a document with no open signature request is a 400, and a provider whose status call errors is a 502.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
@@ -2294,9 +2294,9 @@ class LegalApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Records that a generated document's signature request completed, answering the document with a `signed` flag.
|
||||
"""Record that a generated document's signature request completed
|
||||
|
||||
Records that a generated document's signature request completed, answering the document with a `signed` flag. The e-sign provider's own status is consulted FIRST and is the default answer; an explicit `signed` field in the body overrides it. That override is the whole point: the default `manual` provider never self-completes, so a reviewer (or a real provider's webhook) is what moves the document. A completion flips the document to `signed`, stamps `signedAt`, and writes a `legal.document.signed` audit event; a provider still reporting incomplete answers 200 with the document unchanged, so the call is safe to repeat and never fabricates a signature. Org-scoped and fails closed: a validated principal is required (403 without one), the document is read under the caller's OWN org so another tenant's id is a 404, a document with no open signature request is a 400, and a provider whose status call errors is a 502.
|
||||
Records completion of the signature request opened over a generated document and answers the document with a `signed` flag. The e-sign provider's own status is consulted FIRST and is the default answer; an explicit `signed` field in the body overrides it. That override is the whole point: the default `manual` provider never self-completes, so a reviewer (or a real provider's webhook) is what moves the document. A completion flips the document to `signed`, stamps `signedAt`, and writes a `legal.document.signed` audit event; a provider still reporting incomplete answers 200 with the document unchanged, so the call is safe to repeat and never fabricates a signature. Org-scoped and fails closed: a validated principal is required (403 without one), the document is read under the caller's OWN org so another tenant's id is a 404, a document with no open signature request is a 400, and a provider whose status call errors is a 502.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
|
||||
@@ -55017,9 +55017,9 @@ class O11yApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Lists the caller org's LLM sessions.
|
||||
"""List the caller org's LLM sessions
|
||||
|
||||
Lists the caller org's LLM sessions. It answers the caller org's LLM-observability sessions — traces grouped by session id on the gen_ai span plane — paged by limit and offset, in the runtime's own envelope, passed through unchanged. An org-less caller is refused HERE, at the cloud boundary, before the request reaches the runtime, and the org the runtime then scopes on is that SAME validated tenant. The two cannot disagree: the tenant is minted from the principal's own claim at ingress and a client copy never survives it. There is deliberately no session-detail route to pair with this. The runtime serves the list only; detail is composed client-side from this list plus the traces filtered by session, so a caller looking for one is looking for something that was never served rather than something that broke. Why an explicit cloud route rather than only the order-70 wildcard: this pins the public flat path to the runtime's internal /api/sessions route SERVER-SIDE AND enforces the tenant gate at the cloud boundary — an org-less caller gets a clean 403 here before the request reaches the runtime, and the org the runtime binds (gen_ai.hanzo.org_id from X-Org-Id) is the SAME validated tenant this handler refuses to proceed without. Registered by mountScope (order 69), so it precedes the wildcard. This used to cite query.go's composite-query pin as the precedent for the move. That file is GONE — it pinned POST /v1/o11y/query_range to the v3 engine, and when it went the module's v5 querier took the address, whose composite accepts only {queries:[…]}. The console still sent the v3 {queryType,panelType,builderQueries} envelope and every Logs page 400'd on \"unknown field \\\"queryType\\\" in composite query\". Citing a deleted pin as the discipline to follow is how the next route inherits the same break, so the reference is removed rather than reworded: this route stands on its OWN pin, three lines below, which is still here. The list query (?limit=&offset=) rides through unchanged; the runtime returns the llmobstypes.GettableSessions {items,offset,limit} under the {status,data} envelope the console's O11yApi.sessions already unwraps.
|
||||
Answers the caller org's LLM-observability sessions — traces grouped by session id on the gen_ai span plane — paged by limit and offset, in the runtime's own envelope, passed through unchanged. An org-less caller is refused HERE, at the cloud boundary, before the request reaches the runtime, and the org the runtime then scopes on is that SAME validated tenant. The two cannot disagree: the tenant is minted from the principal's own claim at ingress and a client copy never survives it. There is deliberately no session-detail route to pair with this. The runtime serves the list only; detail is composed client-side from this list plus the traces filtered by session, so a caller looking for one is looking for something that was never served rather than something that broke.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -55079,9 +55079,9 @@ class O11yApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Lists the caller org's LLM sessions.
|
||||
"""List the caller org's LLM sessions
|
||||
|
||||
Lists the caller org's LLM sessions. It answers the caller org's LLM-observability sessions — traces grouped by session id on the gen_ai span plane — paged by limit and offset, in the runtime's own envelope, passed through unchanged. An org-less caller is refused HERE, at the cloud boundary, before the request reaches the runtime, and the org the runtime then scopes on is that SAME validated tenant. The two cannot disagree: the tenant is minted from the principal's own claim at ingress and a client copy never survives it. There is deliberately no session-detail route to pair with this. The runtime serves the list only; detail is composed client-side from this list plus the traces filtered by session, so a caller looking for one is looking for something that was never served rather than something that broke. Why an explicit cloud route rather than only the order-70 wildcard: this pins the public flat path to the runtime's internal /api/sessions route SERVER-SIDE AND enforces the tenant gate at the cloud boundary — an org-less caller gets a clean 403 here before the request reaches the runtime, and the org the runtime binds (gen_ai.hanzo.org_id from X-Org-Id) is the SAME validated tenant this handler refuses to proceed without. Registered by mountScope (order 69), so it precedes the wildcard. This used to cite query.go's composite-query pin as the precedent for the move. That file is GONE — it pinned POST /v1/o11y/query_range to the v3 engine, and when it went the module's v5 querier took the address, whose composite accepts only {queries:[…]}. The console still sent the v3 {queryType,panelType,builderQueries} envelope and every Logs page 400'd on \"unknown field \\\"queryType\\\" in composite query\". Citing a deleted pin as the discipline to follow is how the next route inherits the same break, so the reference is removed rather than reworded: this route stands on its OWN pin, three lines below, which is still here. The list query (?limit=&offset=) rides through unchanged; the runtime returns the llmobstypes.GettableSessions {items,offset,limit} under the {status,data} envelope the console's O11yApi.sessions already unwraps.
|
||||
Answers the caller org's LLM-observability sessions — traces grouped by session id on the gen_ai span plane — paged by limit and offset, in the runtime's own envelope, passed through unchanged. An org-less caller is refused HERE, at the cloud boundary, before the request reaches the runtime, and the org the runtime then scopes on is that SAME validated tenant. The two cannot disagree: the tenant is minted from the principal's own claim at ingress and a client copy never survives it. There is deliberately no session-detail route to pair with this. The runtime serves the list only; detail is composed client-side from this list plus the traces filtered by session, so a caller looking for one is looking for something that was never served rather than something that broke.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -55141,9 +55141,9 @@ class O11yApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Lists the caller org's LLM sessions.
|
||||
"""List the caller org's LLM sessions
|
||||
|
||||
Lists the caller org's LLM sessions. It answers the caller org's LLM-observability sessions — traces grouped by session id on the gen_ai span plane — paged by limit and offset, in the runtime's own envelope, passed through unchanged. An org-less caller is refused HERE, at the cloud boundary, before the request reaches the runtime, and the org the runtime then scopes on is that SAME validated tenant. The two cannot disagree: the tenant is minted from the principal's own claim at ingress and a client copy never survives it. There is deliberately no session-detail route to pair with this. The runtime serves the list only; detail is composed client-side from this list plus the traces filtered by session, so a caller looking for one is looking for something that was never served rather than something that broke. Why an explicit cloud route rather than only the order-70 wildcard: this pins the public flat path to the runtime's internal /api/sessions route SERVER-SIDE AND enforces the tenant gate at the cloud boundary — an org-less caller gets a clean 403 here before the request reaches the runtime, and the org the runtime binds (gen_ai.hanzo.org_id from X-Org-Id) is the SAME validated tenant this handler refuses to proceed without. Registered by mountScope (order 69), so it precedes the wildcard. This used to cite query.go's composite-query pin as the precedent for the move. That file is GONE — it pinned POST /v1/o11y/query_range to the v3 engine, and when it went the module's v5 querier took the address, whose composite accepts only {queries:[…]}. The console still sent the v3 {queryType,panelType,builderQueries} envelope and every Logs page 400'd on \"unknown field \\\"queryType\\\" in composite query\". Citing a deleted pin as the discipline to follow is how the next route inherits the same break, so the reference is removed rather than reworded: this route stands on its OWN pin, three lines below, which is still here. The list query (?limit=&offset=) rides through unchanged; the runtime returns the llmobstypes.GettableSessions {items,offset,limit} under the {status,data} envelope the console's O11yApi.sessions already unwraps.
|
||||
Answers the caller org's LLM-observability sessions — traces grouped by session id on the gen_ai span plane — paged by limit and offset, in the runtime's own envelope, passed through unchanged. An org-less caller is refused HERE, at the cloud boundary, before the request reaches the runtime, and the org the runtime then scopes on is that SAME validated tenant. The two cannot disagree: the tenant is minted from the principal's own claim at ingress and a client copy never survives it. There is deliberately no session-detail route to pair with this. The runtime serves the list only; detail is composed client-side from this list plus the traces filtered by session, so a caller looking for one is looking for something that was never served rather than something that broke.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -827,9 +827,9 @@ class PluginsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> BuildOut:
|
||||
"""Builds a plugin for the caller's org from TypeScript, or from an API spec a model writes it from.
|
||||
"""Build a plugin for your org from TypeScript, or from an API spec a model writes it from
|
||||
|
||||
Builds a plugin for the caller's org from TypeScript, or from an API spec a model writes it from. It answers 201 with the bundle's size, whether a model wrote the source, and the plugin as stored. Post `source` to build TypeScript as-is, or `spec` — an OpenAPI document or plain prose describing the endpoints — to have one generated; the generated source comes back in the answer, so a caller reads what will run before it runs. Exactly one of the two, and `name` must be one lowercase path segment; both or neither is 400. COMPILING IS THE GATE. The source goes through the same pipeline the committed connectors do — esbuild to one CommonJS program, then compiled in the goja runtime that will actually execute it — and anything that fails is rejected and NEVER stored. So a plugin in the store is one this deployment has already loaded once, not one a model claimed was fine. A failed build answers 422 carrying the diagnostics a caller needs to fix it: the bundler's error, the source that failed, and whether the model wrote it — a body outside the declared success shape. CREDENTIALS ARE NOT PART OF A PLUGIN. A plugin names the connectors `provider` it needs and reads that credential from `ctx.auth` at run time, under KMS custody. Source that contains something shaped like a key is REFUSED rather than silently scrubbed, so a caller who pasted one finds out instead of shipping it — register it as a connector instead. Requires a validated principal; 403 without one. The plugin is stored under that principal's org and is what `/v1/plugins/authored` lists — never `/v1/plugins`, which is this deployment's mounted-subsystem inventory. Source over 512 KiB or a spec over 256 KiB is refused. Posting a `spec` to a deployment with no AI client configured is 503, and a generation that fails upstream is 502.
|
||||
Builds one plugin for the caller's org and answers 201 with the bundle's size, whether a model wrote the source, and the plugin as stored. Post `source` to build TypeScript as-is, or `spec` — an OpenAPI document or plain prose describing the endpoints — to have one generated; the generated source comes back in the answer, so a caller reads what will run before it runs. Exactly one of the two, and `name` must be one lowercase path segment; both or neither is 400. COMPILING IS THE GATE. The source goes through the same pipeline the committed connectors do — esbuild to one CommonJS program, then compiled in the goja runtime that will actually execute it — and anything that fails is rejected and NEVER stored. So a plugin in the store is one this deployment has already loaded once, not one a model claimed was fine. A failed build answers 422 carrying the diagnostics a caller needs to fix it: the bundler's error, the source that failed, and whether the model wrote it — a body outside the declared success shape. CREDENTIALS ARE NOT PART OF A PLUGIN. A plugin names the connectors `provider` it needs and reads that credential from `ctx.auth` at run time, under KMS custody. Source that contains something shaped like a key is REFUSED rather than silently scrubbed, so a caller who pasted one finds out instead of shipping it — register it as a connector instead. Requires a validated principal; 403 without one. The plugin is stored under that principal's org and is what `/v1/plugins/authored` lists — never `/v1/plugins`, which is this deployment's mounted-subsystem inventory. Source over 512 KiB or a spec over 256 KiB is refused. Posting a `spec` to a deployment with no AI client configured is 503, and a generation that fails upstream is 502.
|
||||
|
||||
:param build_request:
|
||||
:type build_request: BuildRequest
|
||||
@@ -894,9 +894,9 @@ class PluginsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[BuildOut]:
|
||||
"""Builds a plugin for the caller's org from TypeScript, or from an API spec a model writes it from.
|
||||
"""Build a plugin for your org from TypeScript, or from an API spec a model writes it from
|
||||
|
||||
Builds a plugin for the caller's org from TypeScript, or from an API spec a model writes it from. It answers 201 with the bundle's size, whether a model wrote the source, and the plugin as stored. Post `source` to build TypeScript as-is, or `spec` — an OpenAPI document or plain prose describing the endpoints — to have one generated; the generated source comes back in the answer, so a caller reads what will run before it runs. Exactly one of the two, and `name` must be one lowercase path segment; both or neither is 400. COMPILING IS THE GATE. The source goes through the same pipeline the committed connectors do — esbuild to one CommonJS program, then compiled in the goja runtime that will actually execute it — and anything that fails is rejected and NEVER stored. So a plugin in the store is one this deployment has already loaded once, not one a model claimed was fine. A failed build answers 422 carrying the diagnostics a caller needs to fix it: the bundler's error, the source that failed, and whether the model wrote it — a body outside the declared success shape. CREDENTIALS ARE NOT PART OF A PLUGIN. A plugin names the connectors `provider` it needs and reads that credential from `ctx.auth` at run time, under KMS custody. Source that contains something shaped like a key is REFUSED rather than silently scrubbed, so a caller who pasted one finds out instead of shipping it — register it as a connector instead. Requires a validated principal; 403 without one. The plugin is stored under that principal's org and is what `/v1/plugins/authored` lists — never `/v1/plugins`, which is this deployment's mounted-subsystem inventory. Source over 512 KiB or a spec over 256 KiB is refused. Posting a `spec` to a deployment with no AI client configured is 503, and a generation that fails upstream is 502.
|
||||
Builds one plugin for the caller's org and answers 201 with the bundle's size, whether a model wrote the source, and the plugin as stored. Post `source` to build TypeScript as-is, or `spec` — an OpenAPI document or plain prose describing the endpoints — to have one generated; the generated source comes back in the answer, so a caller reads what will run before it runs. Exactly one of the two, and `name` must be one lowercase path segment; both or neither is 400. COMPILING IS THE GATE. The source goes through the same pipeline the committed connectors do — esbuild to one CommonJS program, then compiled in the goja runtime that will actually execute it — and anything that fails is rejected and NEVER stored. So a plugin in the store is one this deployment has already loaded once, not one a model claimed was fine. A failed build answers 422 carrying the diagnostics a caller needs to fix it: the bundler's error, the source that failed, and whether the model wrote it — a body outside the declared success shape. CREDENTIALS ARE NOT PART OF A PLUGIN. A plugin names the connectors `provider` it needs and reads that credential from `ctx.auth` at run time, under KMS custody. Source that contains something shaped like a key is REFUSED rather than silently scrubbed, so a caller who pasted one finds out instead of shipping it — register it as a connector instead. Requires a validated principal; 403 without one. The plugin is stored under that principal's org and is what `/v1/plugins/authored` lists — never `/v1/plugins`, which is this deployment's mounted-subsystem inventory. Source over 512 KiB or a spec over 256 KiB is refused. Posting a `spec` to a deployment with no AI client configured is 503, and a generation that fails upstream is 502.
|
||||
|
||||
:param build_request:
|
||||
:type build_request: BuildRequest
|
||||
@@ -961,9 +961,9 @@ class PluginsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Builds a plugin for the caller's org from TypeScript, or from an API spec a model writes it from.
|
||||
"""Build a plugin for your org from TypeScript, or from an API spec a model writes it from
|
||||
|
||||
Builds a plugin for the caller's org from TypeScript, or from an API spec a model writes it from. It answers 201 with the bundle's size, whether a model wrote the source, and the plugin as stored. Post `source` to build TypeScript as-is, or `spec` — an OpenAPI document or plain prose describing the endpoints — to have one generated; the generated source comes back in the answer, so a caller reads what will run before it runs. Exactly one of the two, and `name` must be one lowercase path segment; both or neither is 400. COMPILING IS THE GATE. The source goes through the same pipeline the committed connectors do — esbuild to one CommonJS program, then compiled in the goja runtime that will actually execute it — and anything that fails is rejected and NEVER stored. So a plugin in the store is one this deployment has already loaded once, not one a model claimed was fine. A failed build answers 422 carrying the diagnostics a caller needs to fix it: the bundler's error, the source that failed, and whether the model wrote it — a body outside the declared success shape. CREDENTIALS ARE NOT PART OF A PLUGIN. A plugin names the connectors `provider` it needs and reads that credential from `ctx.auth` at run time, under KMS custody. Source that contains something shaped like a key is REFUSED rather than silently scrubbed, so a caller who pasted one finds out instead of shipping it — register it as a connector instead. Requires a validated principal; 403 without one. The plugin is stored under that principal's org and is what `/v1/plugins/authored` lists — never `/v1/plugins`, which is this deployment's mounted-subsystem inventory. Source over 512 KiB or a spec over 256 KiB is refused. Posting a `spec` to a deployment with no AI client configured is 503, and a generation that fails upstream is 502.
|
||||
Builds one plugin for the caller's org and answers 201 with the bundle's size, whether a model wrote the source, and the plugin as stored. Post `source` to build TypeScript as-is, or `spec` — an OpenAPI document or plain prose describing the endpoints — to have one generated; the generated source comes back in the answer, so a caller reads what will run before it runs. Exactly one of the two, and `name` must be one lowercase path segment; both or neither is 400. COMPILING IS THE GATE. The source goes through the same pipeline the committed connectors do — esbuild to one CommonJS program, then compiled in the goja runtime that will actually execute it — and anything that fails is rejected and NEVER stored. So a plugin in the store is one this deployment has already loaded once, not one a model claimed was fine. A failed build answers 422 carrying the diagnostics a caller needs to fix it: the bundler's error, the source that failed, and whether the model wrote it — a body outside the declared success shape. CREDENTIALS ARE NOT PART OF A PLUGIN. A plugin names the connectors `provider` it needs and reads that credential from `ctx.auth` at run time, under KMS custody. Source that contains something shaped like a key is REFUSED rather than silently scrubbed, so a caller who pasted one finds out instead of shipping it — register it as a connector instead. Requires a validated principal; 403 without one. The plugin is stored under that principal's org and is what `/v1/plugins/authored` lists — never `/v1/plugins`, which is this deployment's mounted-subsystem inventory. Source over 512 KiB or a spec over 256 KiB is refused. Posting a `spec` to a deployment with no AI client configured is 503, and a generation that fails upstream is 502.
|
||||
|
||||
:param build_request:
|
||||
:type build_request: BuildRequest
|
||||
|
||||
@@ -297,9 +297,9 @@ class PrefsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Saves the preference keys a surface owns, leaving every other key alone.
|
||||
"""Save the preference keys your surface owns, leaving every other key alone
|
||||
|
||||
Saves the preference keys a surface owns, leaving every other key alone. It merges a JSON object key-wise into the signed-in caller's OWN preference document and answers with the whole document after the merge, so a surface saves `theme` without having to send back the `density` another surface owns. The merge is SHALLOW and the key space is open: an unnamed key is left untouched, a named key is replaced whole, and a key sent with a `null` value is DELETED. The subject is the `<owner>/<name>` identity built from the validated credential and is the mandatory predicate on the write, so there is no path to another user's preferences — not for an org admin, not for a platform SuperAdmin. Fails closed: no validated principal is 403; an empty body or a literal `null` is 400; and a patch or a resulting document over 16 KiB or 128 keys is 413.
|
||||
Merges a JSON object key-wise into the signed-in caller's OWN preference document and answers with the whole document after the merge, so a surface saves `theme` without having to send back the `density` another surface owns. The merge is SHALLOW and the key space is open: an unnamed key is left untouched, a named key is replaced whole, and a key sent with a `null` value is DELETED. The subject is the `<owner>/<name>` identity built from the validated credential and is the mandatory predicate on the write, so there is no path to another user's preferences — not for an org admin, not for a platform SuperAdmin. Fails closed: no validated principal is 403; an empty body or a literal `null` is 400; and a patch or a resulting document over 16 KiB or 128 keys is 413.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -359,9 +359,9 @@ class PrefsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Saves the preference keys a surface owns, leaving every other key alone.
|
||||
"""Save the preference keys your surface owns, leaving every other key alone
|
||||
|
||||
Saves the preference keys a surface owns, leaving every other key alone. It merges a JSON object key-wise into the signed-in caller's OWN preference document and answers with the whole document after the merge, so a surface saves `theme` without having to send back the `density` another surface owns. The merge is SHALLOW and the key space is open: an unnamed key is left untouched, a named key is replaced whole, and a key sent with a `null` value is DELETED. The subject is the `<owner>/<name>` identity built from the validated credential and is the mandatory predicate on the write, so there is no path to another user's preferences — not for an org admin, not for a platform SuperAdmin. Fails closed: no validated principal is 403; an empty body or a literal `null` is 400; and a patch or a resulting document over 16 KiB or 128 keys is 413.
|
||||
Merges a JSON object key-wise into the signed-in caller's OWN preference document and answers with the whole document after the merge, so a surface saves `theme` without having to send back the `density` another surface owns. The merge is SHALLOW and the key space is open: an unnamed key is left untouched, a named key is replaced whole, and a key sent with a `null` value is DELETED. The subject is the `<owner>/<name>` identity built from the validated credential and is the mandatory predicate on the write, so there is no path to another user's preferences — not for an org admin, not for a platform SuperAdmin. Fails closed: no validated principal is 403; an empty body or a literal `null` is 400; and a patch or a resulting document over 16 KiB or 128 keys is 413.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -421,9 +421,9 @@ class PrefsApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Saves the preference keys a surface owns, leaving every other key alone.
|
||||
"""Save the preference keys your surface owns, leaving every other key alone
|
||||
|
||||
Saves the preference keys a surface owns, leaving every other key alone. It merges a JSON object key-wise into the signed-in caller's OWN preference document and answers with the whole document after the merge, so a surface saves `theme` without having to send back the `density` another surface owns. The merge is SHALLOW and the key space is open: an unnamed key is left untouched, a named key is replaced whole, and a key sent with a `null` value is DELETED. The subject is the `<owner>/<name>` identity built from the validated credential and is the mandatory predicate on the write, so there is no path to another user's preferences — not for an org admin, not for a platform SuperAdmin. Fails closed: no validated principal is 403; an empty body or a literal `null` is 400; and a patch or a resulting document over 16 KiB or 128 keys is 413.
|
||||
Merges a JSON object key-wise into the signed-in caller's OWN preference document and answers with the whole document after the merge, so a surface saves `theme` without having to send back the `density` another surface owns. The merge is SHALLOW and the key space is open: an unnamed key is left untouched, a named key is replaced whole, and a key sent with a `null` value is DELETED. The subject is the `<owner>/<name>` identity built from the validated credential and is the mandatory predicate on the write, so there is no path to another user's preferences — not for an org admin, not for a platform SuperAdmin. Fails closed: no validated principal is 403; an empty body or a literal `null` is 400; and a patch or a resulting document over 16 KiB or 128 keys is 413.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -361,9 +361,9 @@ class ResearchApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Fetches one recorded artifact's bytes by its content hash.
|
||||
"""Fetch one recorded artifact's bytes by its content hash.
|
||||
|
||||
Fetches one recorded artifact's bytes by its content hash. It streams the artifact's stored bytes — the retrieval half of hash-addressing, where the diary feed hands out hashes and this hands back what they name. The Content-Type is image/png when the artifact was recorded as a snapshot and application/octet-stream otherwise; it comes from the recorded KIND, not from sniffing the bytes, so an artifact filed as a report always arrives as opaque bytes. The hash is an address, and the read is NOT global. The store file IS the org, so the same bytes recorded by two tenants are two artifacts, and a hash that exists but belongs to somebody else is a 404 exactly like one that was never recorded — knowing a content hash is never enough to read it. A caller with no validated org is refused 403 outright. Project narrows further INSIDE that org: the artifact's project must equal the caller's, which is `?project=` when given and otherwise the caller's own project scope, defaulting to the default project. So an artifact filed under a named project is not found until the caller names that project — a mismatch is the same 404 an unknown hash gets, never a distinguishable refusal. The address can be trusted because the WRITE derived it: the server hashes the bytes it stores, inside the trust boundary, and refuses a client-supplied sha256 that disagrees with them, so poisoning a first write would take a preimage. This read does not re-hash — it looks the hash up as a key. One shape to expect: this route writes its errors IN-BAND as {\"error\": …} at the real status code, not the {status, error} envelope the typed ops beside it return. It is mounted under an error-flattening filter that would otherwise rewrite its 4xx, so the body is written before that filter runs. A store that cannot be opened is a 500.
|
||||
Streams the artifact's stored bytes — the retrieval half of hash-addressing, where the diary feed hands out hashes and this hands back what they name. The Content-Type is image/png when the artifact was recorded as a snapshot and application/octet-stream otherwise; it comes from the recorded KIND, not from sniffing the bytes, so an artifact filed as a report always arrives as opaque bytes. The hash is an address, and the read is NOT global. The store file IS the org, so the same bytes recorded by two tenants are two artifacts, and a hash that exists but belongs to somebody else is a 404 exactly like one that was never recorded — knowing a content hash is never enough to read it. A caller with no validated org is refused 403 outright. Project narrows further INSIDE that org: the artifact's project must equal the caller's, which is `?project=` when given and otherwise the caller's own project scope, defaulting to the default project. So an artifact filed under a named project is not found until the caller names that project — a mismatch is the same 404 an unknown hash gets, never a distinguishable refusal. The address can be trusted because the WRITE derived it: the server hashes the bytes it stores, inside the trust boundary, and refuses a client-supplied sha256 that disagrees with them, so poisoning a first write would take a preimage. This read does not re-hash — it looks the hash up as a key. One shape to expect: this route writes its errors IN-BAND as {\"error\": …} at the real status code, not the {status, error} envelope the typed ops beside it return. It is mounted under an error-flattening filter that would otherwise rewrite its 4xx, so the body is written before that filter runs. A store that cannot be opened is a 500.
|
||||
|
||||
:param sha256: (required)
|
||||
:type sha256: str
|
||||
@@ -427,9 +427,9 @@ class ResearchApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Fetches one recorded artifact's bytes by its content hash.
|
||||
"""Fetch one recorded artifact's bytes by its content hash.
|
||||
|
||||
Fetches one recorded artifact's bytes by its content hash. It streams the artifact's stored bytes — the retrieval half of hash-addressing, where the diary feed hands out hashes and this hands back what they name. The Content-Type is image/png when the artifact was recorded as a snapshot and application/octet-stream otherwise; it comes from the recorded KIND, not from sniffing the bytes, so an artifact filed as a report always arrives as opaque bytes. The hash is an address, and the read is NOT global. The store file IS the org, so the same bytes recorded by two tenants are two artifacts, and a hash that exists but belongs to somebody else is a 404 exactly like one that was never recorded — knowing a content hash is never enough to read it. A caller with no validated org is refused 403 outright. Project narrows further INSIDE that org: the artifact's project must equal the caller's, which is `?project=` when given and otherwise the caller's own project scope, defaulting to the default project. So an artifact filed under a named project is not found until the caller names that project — a mismatch is the same 404 an unknown hash gets, never a distinguishable refusal. The address can be trusted because the WRITE derived it: the server hashes the bytes it stores, inside the trust boundary, and refuses a client-supplied sha256 that disagrees with them, so poisoning a first write would take a preimage. This read does not re-hash — it looks the hash up as a key. One shape to expect: this route writes its errors IN-BAND as {\"error\": …} at the real status code, not the {status, error} envelope the typed ops beside it return. It is mounted under an error-flattening filter that would otherwise rewrite its 4xx, so the body is written before that filter runs. A store that cannot be opened is a 500.
|
||||
Streams the artifact's stored bytes — the retrieval half of hash-addressing, where the diary feed hands out hashes and this hands back what they name. The Content-Type is image/png when the artifact was recorded as a snapshot and application/octet-stream otherwise; it comes from the recorded KIND, not from sniffing the bytes, so an artifact filed as a report always arrives as opaque bytes. The hash is an address, and the read is NOT global. The store file IS the org, so the same bytes recorded by two tenants are two artifacts, and a hash that exists but belongs to somebody else is a 404 exactly like one that was never recorded — knowing a content hash is never enough to read it. A caller with no validated org is refused 403 outright. Project narrows further INSIDE that org: the artifact's project must equal the caller's, which is `?project=` when given and otherwise the caller's own project scope, defaulting to the default project. So an artifact filed under a named project is not found until the caller names that project — a mismatch is the same 404 an unknown hash gets, never a distinguishable refusal. The address can be trusted because the WRITE derived it: the server hashes the bytes it stores, inside the trust boundary, and refuses a client-supplied sha256 that disagrees with them, so poisoning a first write would take a preimage. This read does not re-hash — it looks the hash up as a key. One shape to expect: this route writes its errors IN-BAND as {\"error\": …} at the real status code, not the {status, error} envelope the typed ops beside it return. It is mounted under an error-flattening filter that would otherwise rewrite its 4xx, so the body is written before that filter runs. A store that cannot be opened is a 500.
|
||||
|
||||
:param sha256: (required)
|
||||
:type sha256: str
|
||||
@@ -493,9 +493,9 @@ class ResearchApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Fetches one recorded artifact's bytes by its content hash.
|
||||
"""Fetch one recorded artifact's bytes by its content hash.
|
||||
|
||||
Fetches one recorded artifact's bytes by its content hash. It streams the artifact's stored bytes — the retrieval half of hash-addressing, where the diary feed hands out hashes and this hands back what they name. The Content-Type is image/png when the artifact was recorded as a snapshot and application/octet-stream otherwise; it comes from the recorded KIND, not from sniffing the bytes, so an artifact filed as a report always arrives as opaque bytes. The hash is an address, and the read is NOT global. The store file IS the org, so the same bytes recorded by two tenants are two artifacts, and a hash that exists but belongs to somebody else is a 404 exactly like one that was never recorded — knowing a content hash is never enough to read it. A caller with no validated org is refused 403 outright. Project narrows further INSIDE that org: the artifact's project must equal the caller's, which is `?project=` when given and otherwise the caller's own project scope, defaulting to the default project. So an artifact filed under a named project is not found until the caller names that project — a mismatch is the same 404 an unknown hash gets, never a distinguishable refusal. The address can be trusted because the WRITE derived it: the server hashes the bytes it stores, inside the trust boundary, and refuses a client-supplied sha256 that disagrees with them, so poisoning a first write would take a preimage. This read does not re-hash — it looks the hash up as a key. One shape to expect: this route writes its errors IN-BAND as {\"error\": …} at the real status code, not the {status, error} envelope the typed ops beside it return. It is mounted under an error-flattening filter that would otherwise rewrite its 4xx, so the body is written before that filter runs. A store that cannot be opened is a 500.
|
||||
Streams the artifact's stored bytes — the retrieval half of hash-addressing, where the diary feed hands out hashes and this hands back what they name. The Content-Type is image/png when the artifact was recorded as a snapshot and application/octet-stream otherwise; it comes from the recorded KIND, not from sniffing the bytes, so an artifact filed as a report always arrives as opaque bytes. The hash is an address, and the read is NOT global. The store file IS the org, so the same bytes recorded by two tenants are two artifacts, and a hash that exists but belongs to somebody else is a 404 exactly like one that was never recorded — knowing a content hash is never enough to read it. A caller with no validated org is refused 403 outright. Project narrows further INSIDE that org: the artifact's project must equal the caller's, which is `?project=` when given and otherwise the caller's own project scope, defaulting to the default project. So an artifact filed under a named project is not found until the caller names that project — a mismatch is the same 404 an unknown hash gets, never a distinguishable refusal. The address can be trusted because the WRITE derived it: the server hashes the bytes it stores, inside the trust boundary, and refuses a client-supplied sha256 that disagrees with them, so poisoning a first write would take a preimage. This read does not re-hash — it looks the hash up as a key. One shape to expect: this route writes its errors IN-BAND as {\"error\": …} at the real status code, not the {status, error} envelope the typed ops beside it return. It is mounted under an error-flattening filter that would otherwise rewrite its 4xx, so the body is written before that filter runs. A store that cannot be opened is a 500.
|
||||
|
||||
:param sha256: (required)
|
||||
:type sha256: str
|
||||
|
||||
@@ -94,9 +94,9 @@ class RiskApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Reports whether the risk model plane can actually work right now.
|
||||
"""Whether the risk model plane can actually work right now
|
||||
|
||||
Reports whether the risk model plane can actually work right now. It is a REAL probe, not status theatre: it reports that the per-organisation model plane was built, that the per-organisation stores can be written, and whether the event surface the feature plane is rolled up from is reachable. 200 only when the plane can work; otherwise 503 CARRYING THE REPORT — which part failed and the real error. An unreachable event surface is REPORTED and is not a failure. Scoring reads in-memory aggregates and never the warehouse, so a warm that cannot run degrades how much history a model has seen and does not stop it deciding. It also reports how many organisations' models are resident, how many have been evicted to hold that bound, and how many of the resident ones are at their own aggregate bound. Eviction is lossless — learned state is written to that organisation's own store first and its aggregates rebuild from its own record — so a climbing count is a capacity signal, not a loss. A STRAINED model is different: it has started forgetting its own least-recently-active subjects, and each forgotten subject reads as inactive until it is active again. That is a control degrading, and it is reported here because it is otherwise silent. It answers about the process, not about a tenant: it takes no organisation and names none.
|
||||
Reports whether the per-organisation model plane is genuinely usable: that the plane was built, that the per-organisation stores can be written, and whether the event surface the feature plane is rolled up from is reachable. It is a REAL probe, not status theatre. 200 only when the plane can work. Otherwise 503 CARRYING THE REPORT — which part failed and the real error — and that body is why this is not a typed op: a typed op reaches a non-2xx by returning an error, and the envelope that produces would drop exactly the detail the probe exists to deliver. An unreachable event surface is REPORTED and is not a failure. Scoring reads in-memory aggregates and never the warehouse, so a warm that cannot run degrades how much history a model has seen and does not stop it deciding. It also reports how many organisations' models are resident, how many have been evicted to hold that bound, and how many of the resident ones are at their own aggregate bound. Eviction is lossless — learned state is written to that organisation's own store first and its aggregates rebuild from its own record — so a climbing count is a capacity signal, not a loss. A STRAINED model is different: it has started forgetting its own least-recently-active subjects, and each forgotten subject reads as inactive until it is active again. That is a control degrading, and it is reported here because it is otherwise silent. It answers about the process, not about a tenant: it takes no organisation and names none.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -156,9 +156,9 @@ class RiskApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Reports whether the risk model plane can actually work right now.
|
||||
"""Whether the risk model plane can actually work right now
|
||||
|
||||
Reports whether the risk model plane can actually work right now. It is a REAL probe, not status theatre: it reports that the per-organisation model plane was built, that the per-organisation stores can be written, and whether the event surface the feature plane is rolled up from is reachable. 200 only when the plane can work; otherwise 503 CARRYING THE REPORT — which part failed and the real error. An unreachable event surface is REPORTED and is not a failure. Scoring reads in-memory aggregates and never the warehouse, so a warm that cannot run degrades how much history a model has seen and does not stop it deciding. It also reports how many organisations' models are resident, how many have been evicted to hold that bound, and how many of the resident ones are at their own aggregate bound. Eviction is lossless — learned state is written to that organisation's own store first and its aggregates rebuild from its own record — so a climbing count is a capacity signal, not a loss. A STRAINED model is different: it has started forgetting its own least-recently-active subjects, and each forgotten subject reads as inactive until it is active again. That is a control degrading, and it is reported here because it is otherwise silent. It answers about the process, not about a tenant: it takes no organisation and names none.
|
||||
Reports whether the per-organisation model plane is genuinely usable: that the plane was built, that the per-organisation stores can be written, and whether the event surface the feature plane is rolled up from is reachable. It is a REAL probe, not status theatre. 200 only when the plane can work. Otherwise 503 CARRYING THE REPORT — which part failed and the real error — and that body is why this is not a typed op: a typed op reaches a non-2xx by returning an error, and the envelope that produces would drop exactly the detail the probe exists to deliver. An unreachable event surface is REPORTED and is not a failure. Scoring reads in-memory aggregates and never the warehouse, so a warm that cannot run degrades how much history a model has seen and does not stop it deciding. It also reports how many organisations' models are resident, how many have been evicted to hold that bound, and how many of the resident ones are at their own aggregate bound. Eviction is lossless — learned state is written to that organisation's own store first and its aggregates rebuild from its own record — so a climbing count is a capacity signal, not a loss. A STRAINED model is different: it has started forgetting its own least-recently-active subjects, and each forgotten subject reads as inactive until it is active again. That is a control degrading, and it is reported here because it is otherwise silent. It answers about the process, not about a tenant: it takes no organisation and names none.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -218,9 +218,9 @@ class RiskApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Reports whether the risk model plane can actually work right now.
|
||||
"""Whether the risk model plane can actually work right now
|
||||
|
||||
Reports whether the risk model plane can actually work right now. It is a REAL probe, not status theatre: it reports that the per-organisation model plane was built, that the per-organisation stores can be written, and whether the event surface the feature plane is rolled up from is reachable. 200 only when the plane can work; otherwise 503 CARRYING THE REPORT — which part failed and the real error. An unreachable event surface is REPORTED and is not a failure. Scoring reads in-memory aggregates and never the warehouse, so a warm that cannot run degrades how much history a model has seen and does not stop it deciding. It also reports how many organisations' models are resident, how many have been evicted to hold that bound, and how many of the resident ones are at their own aggregate bound. Eviction is lossless — learned state is written to that organisation's own store first and its aggregates rebuild from its own record — so a climbing count is a capacity signal, not a loss. A STRAINED model is different: it has started forgetting its own least-recently-active subjects, and each forgotten subject reads as inactive until it is active again. That is a control degrading, and it is reported here because it is otherwise silent. It answers about the process, not about a tenant: it takes no organisation and names none.
|
||||
Reports whether the per-organisation model plane is genuinely usable: that the plane was built, that the per-organisation stores can be written, and whether the event surface the feature plane is rolled up from is reachable. It is a REAL probe, not status theatre. 200 only when the plane can work. Otherwise 503 CARRYING THE REPORT — which part failed and the real error — and that body is why this is not a typed op: a typed op reaches a non-2xx by returning an error, and the envelope that produces would drop exactly the detail the probe exists to deliver. An unreachable event surface is REPORTED and is not a failure. Scoring reads in-memory aggregates and never the warehouse, so a warm that cannot run degrades how much history a model has seen and does not stop it deciding. It also reports how many organisations' models are resident, how many have been evicted to hold that bound, and how many of the resident ones are at their own aggregate bound. Eviction is lossless — learned state is written to that organisation's own store first and its aggregates rebuild from its own record — so a climbing count is a capacity signal, not a loss. A STRAINED model is different: it has started forgetting its own least-recently-active subjects, and each forgotten subject reads as inactive until it is active again. That is a control degrading, and it is reported here because it is otherwise silent. It answers about the process, not about a tenant: it takes no organisation and names none.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -16,7 +16,7 @@ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from hanzoai.cloud.models.ai_envelope import AiEnvelope
|
||||
from hanzoai.cloud.models.envelope import Envelope
|
||||
|
||||
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
|
||||
from hanzoai.cloud.api_response import ApiResponse
|
||||
@@ -286,7 +286,7 @@ class RouterApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> AiEnvelope:
|
||||
) -> Envelope:
|
||||
"""Data
|
||||
|
||||
|
||||
@@ -320,7 +320,7 @@ class RouterApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "AiEnvelope",
|
||||
'200': "Envelope",
|
||||
'401': None,
|
||||
'403': None,
|
||||
}
|
||||
@@ -350,7 +350,7 @@ class RouterApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[AiEnvelope]:
|
||||
) -> ApiResponse[Envelope]:
|
||||
"""Data
|
||||
|
||||
|
||||
@@ -384,7 +384,7 @@ class RouterApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "AiEnvelope",
|
||||
'200': "Envelope",
|
||||
'401': None,
|
||||
'403': None,
|
||||
}
|
||||
@@ -448,7 +448,7 @@ class RouterApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "AiEnvelope",
|
||||
'200': "Envelope",
|
||||
'401': None,
|
||||
'403': None,
|
||||
}
|
||||
@@ -1709,7 +1709,7 @@ class RouterApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> AiEnvelope:
|
||||
) -> Envelope:
|
||||
"""Data
|
||||
|
||||
|
||||
@@ -1743,7 +1743,7 @@ class RouterApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "AiEnvelope",
|
||||
'200': "Envelope",
|
||||
'401': None,
|
||||
'403': None,
|
||||
}
|
||||
@@ -1773,7 +1773,7 @@ class RouterApi:
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[AiEnvelope]:
|
||||
) -> ApiResponse[Envelope]:
|
||||
"""Data
|
||||
|
||||
|
||||
@@ -1807,7 +1807,7 @@ class RouterApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "AiEnvelope",
|
||||
'200': "Envelope",
|
||||
'401': None,
|
||||
'403': None,
|
||||
}
|
||||
@@ -1871,7 +1871,7 @@ class RouterApi:
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "AiEnvelope",
|
||||
'200': "Envelope",
|
||||
'401': None,
|
||||
'403': None,
|
||||
}
|
||||
|
||||
@@ -316,6 +316,7 @@ class SandboxesApi:
|
||||
) -> None:
|
||||
"""End a sandbox and release it
|
||||
|
||||
Ends the caller's sandbox lease: the pod goes, and the volume goes only when the caller asked for that too.
|
||||
|
||||
:param end_in: (required)
|
||||
:type end_in: EndIn
|
||||
@@ -382,6 +383,7 @@ class SandboxesApi:
|
||||
) -> ApiResponse[None]:
|
||||
"""End a sandbox and release it
|
||||
|
||||
Ends the caller's sandbox lease: the pod goes, and the volume goes only when the caller asked for that too.
|
||||
|
||||
:param end_in: (required)
|
||||
:type end_in: EndIn
|
||||
@@ -448,6 +450,7 @@ class SandboxesApi:
|
||||
) -> RESTResponseType:
|
||||
"""End a sandbox and release it
|
||||
|
||||
Ends the caller's sandbox lease: the pod goes, and the volume goes only when the caller asked for that too.
|
||||
|
||||
:param end_in: (required)
|
||||
:type end_in: EndIn
|
||||
@@ -1814,6 +1817,7 @@ class SandboxesApi:
|
||||
) -> Leased:
|
||||
"""Lease a sandbox — a real computer — or resume one you hold
|
||||
|
||||
Leases the caller's sandbox, or returns the one it named if that lease is still running. What comes back is a real computer: a pod under a runtime boundary with a toolchain already in it, its own filesystem, and a lease that ends it. Every other op here acts on the one this returns.
|
||||
|
||||
:param lease_in: (required)
|
||||
:type lease_in: LeaseIn
|
||||
@@ -1880,6 +1884,7 @@ class SandboxesApi:
|
||||
) -> ApiResponse[Leased]:
|
||||
"""Lease a sandbox — a real computer — or resume one you hold
|
||||
|
||||
Leases the caller's sandbox, or returns the one it named if that lease is still running. What comes back is a real computer: a pod under a runtime boundary with a toolchain already in it, its own filesystem, and a lease that ends it. Every other op here acts on the one this returns.
|
||||
|
||||
:param lease_in: (required)
|
||||
:type lease_in: LeaseIn
|
||||
@@ -1946,6 +1951,7 @@ class SandboxesApi:
|
||||
) -> RESTResponseType:
|
||||
"""Lease a sandbox — a real computer — or resume one you hold
|
||||
|
||||
Leases the caller's sandbox, or returns the one it named if that lease is still running. What comes back is a real computer: a pod under a runtime boundary with a toolchain already in it, its own filesystem, and a lease that ends it. Every other op here acts on the one this returns.
|
||||
|
||||
:param lease_in: (required)
|
||||
:type lease_in: LeaseIn
|
||||
@@ -3069,6 +3075,7 @@ class SandboxesApi:
|
||||
) -> Blob:
|
||||
"""Read a file from a sandbox you hold
|
||||
|
||||
Reads one path in the caller's sandbox: a file's bytes, or a directory's entries when the path names one.
|
||||
|
||||
:param path_in: (required)
|
||||
:type path_in: PathIn
|
||||
@@ -3135,6 +3142,7 @@ class SandboxesApi:
|
||||
) -> ApiResponse[Blob]:
|
||||
"""Read a file from a sandbox you hold
|
||||
|
||||
Reads one path in the caller's sandbox: a file's bytes, or a directory's entries when the path names one.
|
||||
|
||||
:param path_in: (required)
|
||||
:type path_in: PathIn
|
||||
@@ -3201,6 +3209,7 @@ class SandboxesApi:
|
||||
) -> RESTResponseType:
|
||||
"""Read a file from a sandbox you hold
|
||||
|
||||
Reads one path in the caller's sandbox: a file's bytes, or a directory's entries when the path names one.
|
||||
|
||||
:param path_in: (required)
|
||||
:type path_in: PathIn
|
||||
@@ -3339,6 +3348,7 @@ class SandboxesApi:
|
||||
) -> Ran:
|
||||
"""Run a command in a sandbox you hold and read its output
|
||||
|
||||
Runs one command inside the caller's sandbox and answers its exit code, stdout and stderr. A non-zero exit is a successful call carrying a failed program, so it comes back as data and not as an error. Name a `session` and the command NARRATES INTO IT: its output is appended to that session's live log as the program produces it, so anything watching the session — GET /v1/agents/sessions/stream, scoped to one run with ?root= — watches the work happen rather than waiting for the verdict. Without it the call is what it always was: silent until it returns, which for an agentic run is twenty-five minutes of blank screen. The session is named; the TENANT is not. It is the org the caller already proved, so a session belonging to somebody else is absent from the org this call acts for and the append is refused there.
|
||||
|
||||
:param run_in: (required)
|
||||
:type run_in: RunIn
|
||||
@@ -3405,6 +3415,7 @@ class SandboxesApi:
|
||||
) -> ApiResponse[Ran]:
|
||||
"""Run a command in a sandbox you hold and read its output
|
||||
|
||||
Runs one command inside the caller's sandbox and answers its exit code, stdout and stderr. A non-zero exit is a successful call carrying a failed program, so it comes back as data and not as an error. Name a `session` and the command NARRATES INTO IT: its output is appended to that session's live log as the program produces it, so anything watching the session — GET /v1/agents/sessions/stream, scoped to one run with ?root= — watches the work happen rather than waiting for the verdict. Without it the call is what it always was: silent until it returns, which for an agentic run is twenty-five minutes of blank screen. The session is named; the TENANT is not. It is the org the caller already proved, so a session belonging to somebody else is absent from the org this call acts for and the append is refused there.
|
||||
|
||||
:param run_in: (required)
|
||||
:type run_in: RunIn
|
||||
@@ -3471,6 +3482,7 @@ class SandboxesApi:
|
||||
) -> RESTResponseType:
|
||||
"""Run a command in a sandbox you hold and read its output
|
||||
|
||||
Runs one command inside the caller's sandbox and answers its exit code, stdout and stderr. A non-zero exit is a successful call carrying a failed program, so it comes back as data and not as an error. Name a `session` and the command NARRATES INTO IT: its output is appended to that session's live log as the program produces it, so anything watching the session — GET /v1/agents/sessions/stream, scoped to one run with ?root= — watches the work happen rather than waiting for the verdict. Without it the call is what it always was: silent until it returns, which for an agentic run is twenty-five minutes of blank screen. The session is named; the TENANT is not. It is the org the caller already proved, so a session belonging to somebody else is absent from the org this call acts for and the append is refused there.
|
||||
|
||||
:param run_in: (required)
|
||||
:type run_in: RunIn
|
||||
@@ -3609,6 +3621,7 @@ class SandboxesApi:
|
||||
) -> Stopped:
|
||||
"""Stop what a sandbox is running, and keep the sandbox
|
||||
|
||||
Interrupts whatever the caller's sandbox is running and answers how many commands it ended. The sandbox stays leased — stop ends the WORK, end ends the RESOURCE — so whoever stopped a run can still read what it left behind.
|
||||
|
||||
:param stop_in: (required)
|
||||
:type stop_in: StopIn
|
||||
@@ -3675,6 +3688,7 @@ class SandboxesApi:
|
||||
) -> ApiResponse[Stopped]:
|
||||
"""Stop what a sandbox is running, and keep the sandbox
|
||||
|
||||
Interrupts whatever the caller's sandbox is running and answers how many commands it ended. The sandbox stays leased — stop ends the WORK, end ends the RESOURCE — so whoever stopped a run can still read what it left behind.
|
||||
|
||||
:param stop_in: (required)
|
||||
:type stop_in: StopIn
|
||||
@@ -3741,6 +3755,7 @@ class SandboxesApi:
|
||||
) -> RESTResponseType:
|
||||
"""Stop what a sandbox is running, and keep the sandbox
|
||||
|
||||
Interrupts whatever the caller's sandbox is running and answers how many commands it ended. The sandbox stays leased — stop ends the WORK, end ends the RESOURCE — so whoever stopped a run can still read what it left behind.
|
||||
|
||||
:param stop_in: (required)
|
||||
:type stop_in: StopIn
|
||||
@@ -3879,6 +3894,7 @@ class SandboxesApi:
|
||||
) -> Wrote:
|
||||
"""Write a file into a sandbox you hold
|
||||
|
||||
Writes bytes to one path in the caller's sandbox, creating parents, and answers the resolved path.
|
||||
|
||||
:param write_in: (required)
|
||||
:type write_in: WriteIn
|
||||
@@ -3945,6 +3961,7 @@ class SandboxesApi:
|
||||
) -> ApiResponse[Wrote]:
|
||||
"""Write a file into a sandbox you hold
|
||||
|
||||
Writes bytes to one path in the caller's sandbox, creating parents, and answers the resolved path.
|
||||
|
||||
:param write_in: (required)
|
||||
:type write_in: WriteIn
|
||||
@@ -4011,6 +4028,7 @@ class SandboxesApi:
|
||||
) -> RESTResponseType:
|
||||
"""Write a file into a sandbox you hold
|
||||
|
||||
Writes bytes to one path in the caller's sandbox, creating parents, and answers the resolved path.
|
||||
|
||||
:param write_in: (required)
|
||||
:type write_in: WriteIn
|
||||
|
||||
@@ -56,9 +56,9 @@ class SbomApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Resolves everything inside a container image.
|
||||
"""Resolve everything inside a container image
|
||||
|
||||
Resolves everything inside a container image. It answers with the component set of one image — each component's name, version, type, package URL and license — addressed by either the image digest or the image ref. The captured segment is greedy and percent-decoded, so a ref carrying slashes and a tag is passed whole. This read is GLOBAL, not tenant-scoped, and deliberately so: a bill of materials belongs to a content-addressed digest rather than to an org, so every caller deploying the same image resolves the same components, and nothing tenant-owned is exposed by it. Ingest is the gated half of the pair. A miss is not the end of the lookup. The registry is the source of truth, so an unmaterialized ref is pulled from the SBOM attached to that image, persisted, and answered from the store — the first read of a freshly built image pays for the pull, later ones do not. A bare digest with no repository is not pullable and answers an honest 404, as does a ref with no attached document. Repeated ingests collapse to the latest, components come back ordered by type then name, and a result over 5000 components is capped with `truncated` set. When the datastore is not connected the answer is 503 rather than a fabricated empty image.
|
||||
Answers with the component set of one container image — each component's name, version, type, package URL and license — addressed by either the image digest or the image ref. The captured segment is greedy and percent-decoded, so a ref carrying slashes and a tag is passed whole. This read is GLOBAL, not tenant-scoped, and deliberately so: a bill of materials belongs to a content-addressed digest rather than to an org, so every caller deploying the same image resolves the same components, and nothing tenant-owned is exposed by it. Ingest is the gated half of the pair. A miss is not the end of the lookup. The registry is the source of truth, so an unmaterialized ref is pulled from the SBOM attached to that image, persisted, and answered from the store — the first read of a freshly built image pays for the pull, later ones do not. A bare digest with no repository is not pullable and answers an honest 404, as does a ref with no attached document. Repeated ingests collapse to the latest, components come back ordered by type then name, and a result over 5000 components is capped with `truncated` set. When the datastore is not connected the answer is 503 rather than a fabricated empty image.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -122,9 +122,9 @@ class SbomApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Resolves everything inside a container image.
|
||||
"""Resolve everything inside a container image
|
||||
|
||||
Resolves everything inside a container image. It answers with the component set of one image — each component's name, version, type, package URL and license — addressed by either the image digest or the image ref. The captured segment is greedy and percent-decoded, so a ref carrying slashes and a tag is passed whole. This read is GLOBAL, not tenant-scoped, and deliberately so: a bill of materials belongs to a content-addressed digest rather than to an org, so every caller deploying the same image resolves the same components, and nothing tenant-owned is exposed by it. Ingest is the gated half of the pair. A miss is not the end of the lookup. The registry is the source of truth, so an unmaterialized ref is pulled from the SBOM attached to that image, persisted, and answered from the store — the first read of a freshly built image pays for the pull, later ones do not. A bare digest with no repository is not pullable and answers an honest 404, as does a ref with no attached document. Repeated ingests collapse to the latest, components come back ordered by type then name, and a result over 5000 components is capped with `truncated` set. When the datastore is not connected the answer is 503 rather than a fabricated empty image.
|
||||
Answers with the component set of one container image — each component's name, version, type, package URL and license — addressed by either the image digest or the image ref. The captured segment is greedy and percent-decoded, so a ref carrying slashes and a tag is passed whole. This read is GLOBAL, not tenant-scoped, and deliberately so: a bill of materials belongs to a content-addressed digest rather than to an org, so every caller deploying the same image resolves the same components, and nothing tenant-owned is exposed by it. Ingest is the gated half of the pair. A miss is not the end of the lookup. The registry is the source of truth, so an unmaterialized ref is pulled from the SBOM attached to that image, persisted, and answered from the store — the first read of a freshly built image pays for the pull, later ones do not. A bare digest with no repository is not pullable and answers an honest 404, as does a ref with no attached document. Repeated ingests collapse to the latest, components come back ordered by type then name, and a result over 5000 components is capped with `truncated` set. When the datastore is not connected the answer is 503 rather than a fabricated empty image.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -188,9 +188,9 @@ class SbomApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Resolves everything inside a container image.
|
||||
"""Resolve everything inside a container image
|
||||
|
||||
Resolves everything inside a container image. It answers with the component set of one image — each component's name, version, type, package URL and license — addressed by either the image digest or the image ref. The captured segment is greedy and percent-decoded, so a ref carrying slashes and a tag is passed whole. This read is GLOBAL, not tenant-scoped, and deliberately so: a bill of materials belongs to a content-addressed digest rather than to an org, so every caller deploying the same image resolves the same components, and nothing tenant-owned is exposed by it. Ingest is the gated half of the pair. A miss is not the end of the lookup. The registry is the source of truth, so an unmaterialized ref is pulled from the SBOM attached to that image, persisted, and answered from the store — the first read of a freshly built image pays for the pull, later ones do not. A bare digest with no repository is not pullable and answers an honest 404, as does a ref with no attached document. Repeated ingests collapse to the latest, components come back ordered by type then name, and a result over 5000 components is capped with `truncated` set. When the datastore is not connected the answer is 503 rather than a fabricated empty image.
|
||||
Answers with the component set of one container image — each component's name, version, type, package URL and license — addressed by either the image digest or the image ref. The captured segment is greedy and percent-decoded, so a ref carrying slashes and a tag is passed whole. This read is GLOBAL, not tenant-scoped, and deliberately so: a bill of materials belongs to a content-addressed digest rather than to an org, so every caller deploying the same image resolves the same components, and nothing tenant-owned is exposed by it. Ingest is the gated half of the pair. A miss is not the end of the lookup. The registry is the source of truth, so an unmaterialized ref is pulled from the SBOM attached to that image, persisted, and answered from the store — the first read of a freshly built image pays for the pull, later ones do not. A bare digest with no repository is not pullable and answers an honest 404, as does a ref with no attached document. Repeated ingests collapse to the latest, components come back ordered by type then name, and a result over 5000 components is capped with `truncated` set. When the datastore is not connected the answer is 503 rather than a fabricated empty image.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
|
||||
@@ -591,9 +591,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Starts a sign-in at hanzo.id.
|
||||
"""Start a sign-in at hanzo.id
|
||||
|
||||
Starts a sign-in at hanzo.id. It STARTS the OAuth hop: answers 302 to hanzo.id's authorize endpoint and sets the short-lived HttpOnly state cookie that binds the flow to this browser. NO TOKEN COMES BACK FROM THIS CALL — the session is minted by the callback, and a client that expects JSON here gets a redirect with no body. A browser is the intended caller. Anything else must follow the Location AND keep the Set-Cookie, because the callback refuses a flow whose state it cannot match. That cookie carries the random nonce plus the client's navigateUrl, so the round trip needs no second channel, and it lives ten minutes — the whole budget for the hop. The provider segment only picks a hint: the redirect_uri is ALWAYS the canonical openid callback, the one IAM has registered. Measured end to end, hanzo.id strips that hint today, so /auth/google and /auth/openid land on the same Hanzo sign-in page — the federation shortcut is an upstream fix, not a second door here.
|
||||
STARTS the OAuth hop: answers 302 to hanzo.id's authorize endpoint and sets the short-lived HttpOnly state cookie that binds the flow to this browser. NO TOKEN COMES BACK FROM THIS CALL — the session is minted by the callback below, and a client that expects JSON here gets a redirect with no body. A browser is the intended caller. Anything else must follow the Location AND keep the Set-Cookie, because the callback refuses a flow whose state it cannot match. That cookie carries the random nonce plus the client's navigateUrl, so the round trip needs no second channel, and it lives ten minutes — the whole budget for the hop. The provider segment only picks a hint: the redirect_uri is ALWAYS the canonical openid callback, the one IAM has registered. Measured end to end, hanzo.id strips that hint today, so /auth/google and /auth/openid land on the same Hanzo sign-in page — the federation shortcut is an upstream fix, not a second door here.
|
||||
|
||||
:param provider: (required)
|
||||
:type provider: str
|
||||
@@ -657,9 +657,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Starts a sign-in at hanzo.id.
|
||||
"""Start a sign-in at hanzo.id
|
||||
|
||||
Starts a sign-in at hanzo.id. It STARTS the OAuth hop: answers 302 to hanzo.id's authorize endpoint and sets the short-lived HttpOnly state cookie that binds the flow to this browser. NO TOKEN COMES BACK FROM THIS CALL — the session is minted by the callback, and a client that expects JSON here gets a redirect with no body. A browser is the intended caller. Anything else must follow the Location AND keep the Set-Cookie, because the callback refuses a flow whose state it cannot match. That cookie carries the random nonce plus the client's navigateUrl, so the round trip needs no second channel, and it lives ten minutes — the whole budget for the hop. The provider segment only picks a hint: the redirect_uri is ALWAYS the canonical openid callback, the one IAM has registered. Measured end to end, hanzo.id strips that hint today, so /auth/google and /auth/openid land on the same Hanzo sign-in page — the federation shortcut is an upstream fix, not a second door here.
|
||||
STARTS the OAuth hop: answers 302 to hanzo.id's authorize endpoint and sets the short-lived HttpOnly state cookie that binds the flow to this browser. NO TOKEN COMES BACK FROM THIS CALL — the session is minted by the callback below, and a client that expects JSON here gets a redirect with no body. A browser is the intended caller. Anything else must follow the Location AND keep the Set-Cookie, because the callback refuses a flow whose state it cannot match. That cookie carries the random nonce plus the client's navigateUrl, so the round trip needs no second channel, and it lives ten minutes — the whole budget for the hop. The provider segment only picks a hint: the redirect_uri is ALWAYS the canonical openid callback, the one IAM has registered. Measured end to end, hanzo.id strips that hint today, so /auth/google and /auth/openid land on the same Hanzo sign-in page — the federation shortcut is an upstream fix, not a second door here.
|
||||
|
||||
:param provider: (required)
|
||||
:type provider: str
|
||||
@@ -723,9 +723,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Starts a sign-in at hanzo.id.
|
||||
"""Start a sign-in at hanzo.id
|
||||
|
||||
Starts a sign-in at hanzo.id. It STARTS the OAuth hop: answers 302 to hanzo.id's authorize endpoint and sets the short-lived HttpOnly state cookie that binds the flow to this browser. NO TOKEN COMES BACK FROM THIS CALL — the session is minted by the callback, and a client that expects JSON here gets a redirect with no body. A browser is the intended caller. Anything else must follow the Location AND keep the Set-Cookie, because the callback refuses a flow whose state it cannot match. That cookie carries the random nonce plus the client's navigateUrl, so the round trip needs no second channel, and it lives ten minutes — the whole budget for the hop. The provider segment only picks a hint: the redirect_uri is ALWAYS the canonical openid callback, the one IAM has registered. Measured end to end, hanzo.id strips that hint today, so /auth/google and /auth/openid land on the same Hanzo sign-in page — the federation shortcut is an upstream fix, not a second door here.
|
||||
STARTS the OAuth hop: answers 302 to hanzo.id's authorize endpoint and sets the short-lived HttpOnly state cookie that binds the flow to this browser. NO TOKEN COMES BACK FROM THIS CALL — the session is minted by the callback below, and a client that expects JSON here gets a redirect with no body. A browser is the intended caller. Anything else must follow the Location AND keep the Set-Cookie, because the callback refuses a flow whose state it cannot match. That cookie carries the random nonce plus the client's navigateUrl, so the round trip needs no second channel, and it lives ten minutes — the whole budget for the hop. The provider segment only picks a hint: the redirect_uri is ALWAYS the canonical openid callback, the one IAM has registered. Measured end to end, hanzo.id strips that hint today, so /auth/google and /auth/openid land on the same Hanzo sign-in page — the federation shortcut is an upstream fix, not a second door here.
|
||||
|
||||
:param provider: (required)
|
||||
:type provider: str
|
||||
@@ -841,9 +841,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Completes a sign-in and hands the browser its session.
|
||||
"""Complete a sign-in and hand the browser its session
|
||||
|
||||
Completes a sign-in and hands the browser its session. hanzo.id redirects the browser here with ?code and ?state, and the answer is another 302 — back to the client's login route carrying the freshly minted team session token in the query. Never JSON, and never a token in this response's own body. THE STATE IS CHECKED FIRST, before the code is even looked at: the flow cookie is read and cleared one-shot, and a callback whose ?state does not equal the nonce it held is bounced with error=state_mismatch and NEVER exchanged. That is what makes a forged or replayed callback inert. Only then is the code exchanged server-side — team is a confidential client with a client_secret, so there is no PKCE and the code never passes through the browser's JS. The tenant is derived from the IAM access token VERIFIED RS256 against the JWKS, the same trust anchor the identity boundary uses; a token whose owner claim is empty fails closed with no login at all. Every org that token proves gets a workspace ensured, so a member of two orgs is a counted seat in both. The IAM access token is also parked in an HttpOnly cookie for the same-origin agents proxy — page JS never reads it. EVERY failure is a redirect, not a status: a denied consent, a missing code, a failed exchange, an unreadable userinfo, an unverifiable org and a token-mint failure each bounce to the login page with an ?error code naming the step.
|
||||
COMPLETES the OAuth hop: hanzo.id redirects the browser here with ?code and ?state, and the answer is another 302 — back to the client's login route carrying the freshly minted team session token in the query. Never JSON, and never a token in this response's own body. THE STATE IS CHECKED FIRST, before the code is even looked at: the flow cookie is read and cleared one-shot, and a callback whose ?state does not equal the nonce it held is bounced with error=state_mismatch and NEVER exchanged. That is what makes a forged or replayed callback inert. Only then is the code exchanged server-side — team is a confidential client with a client_secret, so there is no PKCE and the code never passes through the browser's JS. The tenant is derived from the IAM access token VERIFIED RS256 against the JWKS, the same trust anchor the identity boundary uses; a token whose owner claim is empty fails closed with no login at all. Every org that token proves gets a workspace ensured, so a member of two orgs is a counted seat in both. The IAM access token is also parked in an HttpOnly cookie for the same-origin agents proxy — page JS never reads it. EVERY failure is a redirect, not a status: a denied consent, a missing code, a failed exchange, an unreadable userinfo, an unverifiable org and a token-mint failure each bounce to the login page with an ?error code naming the step.
|
||||
|
||||
:param provider: (required)
|
||||
:type provider: str
|
||||
@@ -907,9 +907,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Completes a sign-in and hands the browser its session.
|
||||
"""Complete a sign-in and hand the browser its session
|
||||
|
||||
Completes a sign-in and hands the browser its session. hanzo.id redirects the browser here with ?code and ?state, and the answer is another 302 — back to the client's login route carrying the freshly minted team session token in the query. Never JSON, and never a token in this response's own body. THE STATE IS CHECKED FIRST, before the code is even looked at: the flow cookie is read and cleared one-shot, and a callback whose ?state does not equal the nonce it held is bounced with error=state_mismatch and NEVER exchanged. That is what makes a forged or replayed callback inert. Only then is the code exchanged server-side — team is a confidential client with a client_secret, so there is no PKCE and the code never passes through the browser's JS. The tenant is derived from the IAM access token VERIFIED RS256 against the JWKS, the same trust anchor the identity boundary uses; a token whose owner claim is empty fails closed with no login at all. Every org that token proves gets a workspace ensured, so a member of two orgs is a counted seat in both. The IAM access token is also parked in an HttpOnly cookie for the same-origin agents proxy — page JS never reads it. EVERY failure is a redirect, not a status: a denied consent, a missing code, a failed exchange, an unreadable userinfo, an unverifiable org and a token-mint failure each bounce to the login page with an ?error code naming the step.
|
||||
COMPLETES the OAuth hop: hanzo.id redirects the browser here with ?code and ?state, and the answer is another 302 — back to the client's login route carrying the freshly minted team session token in the query. Never JSON, and never a token in this response's own body. THE STATE IS CHECKED FIRST, before the code is even looked at: the flow cookie is read and cleared one-shot, and a callback whose ?state does not equal the nonce it held is bounced with error=state_mismatch and NEVER exchanged. That is what makes a forged or replayed callback inert. Only then is the code exchanged server-side — team is a confidential client with a client_secret, so there is no PKCE and the code never passes through the browser's JS. The tenant is derived from the IAM access token VERIFIED RS256 against the JWKS, the same trust anchor the identity boundary uses; a token whose owner claim is empty fails closed with no login at all. Every org that token proves gets a workspace ensured, so a member of two orgs is a counted seat in both. The IAM access token is also parked in an HttpOnly cookie for the same-origin agents proxy — page JS never reads it. EVERY failure is a redirect, not a status: a denied consent, a missing code, a failed exchange, an unreadable userinfo, an unverifiable org and a token-mint failure each bounce to the login page with an ?error code naming the step.
|
||||
|
||||
:param provider: (required)
|
||||
:type provider: str
|
||||
@@ -973,9 +973,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Completes a sign-in and hands the browser its session.
|
||||
"""Complete a sign-in and hand the browser its session
|
||||
|
||||
Completes a sign-in and hands the browser its session. hanzo.id redirects the browser here with ?code and ?state, and the answer is another 302 — back to the client's login route carrying the freshly minted team session token in the query. Never JSON, and never a token in this response's own body. THE STATE IS CHECKED FIRST, before the code is even looked at: the flow cookie is read and cleared one-shot, and a callback whose ?state does not equal the nonce it held is bounced with error=state_mismatch and NEVER exchanged. That is what makes a forged or replayed callback inert. Only then is the code exchanged server-side — team is a confidential client with a client_secret, so there is no PKCE and the code never passes through the browser's JS. The tenant is derived from the IAM access token VERIFIED RS256 against the JWKS, the same trust anchor the identity boundary uses; a token whose owner claim is empty fails closed with no login at all. Every org that token proves gets a workspace ensured, so a member of two orgs is a counted seat in both. The IAM access token is also parked in an HttpOnly cookie for the same-origin agents proxy — page JS never reads it. EVERY failure is a redirect, not a status: a denied consent, a missing code, a failed exchange, an unreadable userinfo, an unverifiable org and a token-mint failure each bounce to the login page with an ?error code naming the step.
|
||||
COMPLETES the OAuth hop: hanzo.id redirects the browser here with ?code and ?state, and the answer is another 302 — back to the client's login route carrying the freshly minted team session token in the query. Never JSON, and never a token in this response's own body. THE STATE IS CHECKED FIRST, before the code is even looked at: the flow cookie is read and cleared one-shot, and a callback whose ?state does not equal the nonce it held is bounced with error=state_mismatch and NEVER exchanged. That is what makes a forged or replayed callback inert. Only then is the code exchanged server-side — team is a confidential client with a client_secret, so there is no PKCE and the code never passes through the browser's JS. The tenant is derived from the IAM access token VERIFIED RS256 against the JWKS, the same trust anchor the identity boundary uses; a token whose owner claim is empty fails closed with no login at all. Every org that token proves gets a workspace ensured, so a member of two orgs is a counted seat in both. The IAM access token is also parked in an HttpOnly cookie for the same-origin agents proxy — page JS never reads it. EVERY failure is a redirect, not a status: a denied consent, a missing code, a failed exchange, an unreadable userinfo, an unverifiable org and a token-mint failure each bounce to the login page with an ?error code naming the step.
|
||||
|
||||
:param provider: (required)
|
||||
:type provider: str
|
||||
@@ -1580,9 +1580,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Opens the wallet page.
|
||||
"""Open the wallet page
|
||||
|
||||
Opens the wallet page. It serves the usage-and-wallet page the Team front links to — HTML, not JSON. It is a static React build compiled into this binary, so there is no upstream to be down and no build step at request time. SESSION-GATED: without a verified team session token — bearer, else the HttpOnly account cookie — the caller gets 401 and not one byte of the page, so an anonymous browser meets a refusal rather than a shell that then fails to load anything. The page is markup only. It reads money SAME-ORIGIN from cloud's own balance and usage endpoints, which pin the org from the IAM cookie the team OAuth callback set — nothing under this path proxies a money read, so there is no second auth mechanism here to get wrong. A deployment whose page was never built answers 503 naming the missing bundle, never a blank 200.
|
||||
Serves the usage-and-wallet page the Team front links to — HTML, not JSON. It is a static React build compiled into this binary, so there is no upstream to be down and no build step at request time. SESSION-GATED: without a verified team session token — bearer, else the HttpOnly account cookie — the caller gets 401 and not one byte of the page, so an anonymous browser meets a refusal rather than a shell that then fails to load anything. The page is markup only. It reads money SAME-ORIGIN from cloud's own balance and usage endpoints, which pin the org from the IAM cookie the team OAuth callback set — nothing under this path proxies a money read, so there is no second auth mechanism here to get wrong. A deployment whose page was never built answers 503 naming the missing bundle, never a blank 200.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1642,9 +1642,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Opens the wallet page.
|
||||
"""Open the wallet page
|
||||
|
||||
Opens the wallet page. It serves the usage-and-wallet page the Team front links to — HTML, not JSON. It is a static React build compiled into this binary, so there is no upstream to be down and no build step at request time. SESSION-GATED: without a verified team session token — bearer, else the HttpOnly account cookie — the caller gets 401 and not one byte of the page, so an anonymous browser meets a refusal rather than a shell that then fails to load anything. The page is markup only. It reads money SAME-ORIGIN from cloud's own balance and usage endpoints, which pin the org from the IAM cookie the team OAuth callback set — nothing under this path proxies a money read, so there is no second auth mechanism here to get wrong. A deployment whose page was never built answers 503 naming the missing bundle, never a blank 200.
|
||||
Serves the usage-and-wallet page the Team front links to — HTML, not JSON. It is a static React build compiled into this binary, so there is no upstream to be down and no build step at request time. SESSION-GATED: without a verified team session token — bearer, else the HttpOnly account cookie — the caller gets 401 and not one byte of the page, so an anonymous browser meets a refusal rather than a shell that then fails to load anything. The page is markup only. It reads money SAME-ORIGIN from cloud's own balance and usage endpoints, which pin the org from the IAM cookie the team OAuth callback set — nothing under this path proxies a money read, so there is no second auth mechanism here to get wrong. A deployment whose page was never built answers 503 naming the missing bundle, never a blank 200.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1704,9 +1704,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Opens the wallet page.
|
||||
"""Open the wallet page
|
||||
|
||||
Opens the wallet page. It serves the usage-and-wallet page the Team front links to — HTML, not JSON. It is a static React build compiled into this binary, so there is no upstream to be down and no build step at request time. SESSION-GATED: without a verified team session token — bearer, else the HttpOnly account cookie — the caller gets 401 and not one byte of the page, so an anonymous browser meets a refusal rather than a shell that then fails to load anything. The page is markup only. It reads money SAME-ORIGIN from cloud's own balance and usage endpoints, which pin the org from the IAM cookie the team OAuth callback set — nothing under this path proxies a money read, so there is no second auth mechanism here to get wrong. A deployment whose page was never built answers 503 naming the missing bundle, never a blank 200.
|
||||
Serves the usage-and-wallet page the Team front links to — HTML, not JSON. It is a static React build compiled into this binary, so there is no upstream to be down and no build step at request time. SESSION-GATED: without a verified team session token — bearer, else the HttpOnly account cookie — the caller gets 401 and not one byte of the page, so an anonymous browser meets a refusal rather than a shell that then fails to load anything. The page is markup only. It reads money SAME-ORIGIN from cloud's own balance and usage endpoints, which pin the org from the IAM cookie the team OAuth callback set — nothing under this path proxies a money read, so there is no second auth mechanism here to get wrong. A deployment whose page was never built answers 503 naming the missing bundle, never a blank 200.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1816,9 +1816,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Loads an asset of the wallet page.
|
||||
"""Load an asset of the wallet page
|
||||
|
||||
Loads an asset of the wallet page. It serves one file of the embedded wallet bundle — a content-hashed script or stylesheet under assets/, an icon, or the page shell itself. A path that names NO REAL FILE falls back to the shell instead of 404ing, which is what makes a deep link into the page's own routes survive a hard refresh. So a 200 here is not proof the asset exists — a typo answers HTML. assets/ is immutable for a year (the names carry the content hash); the shell is no-cache, so a deploy is picked up on the next load. Gated exactly like the page: 401 without a verified session, 503 when the bundle was never built.
|
||||
Serves one file of the embedded wallet bundle — a content-hashed script or stylesheet under assets/, an icon, or the page shell itself. A path that names NO REAL FILE falls back to the shell instead of 404ing, which is what makes a deep link into the page's own routes survive a hard refresh. So a 200 here is not proof the asset exists — a typo answers HTML. assets/ is immutable for a year (the names carry the content hash); the shell is no-cache, so a deploy is picked up on the next load. Gated exactly like the page: 401 without a verified session, 503 when the bundle was never built.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -1882,9 +1882,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Loads an asset of the wallet page.
|
||||
"""Load an asset of the wallet page
|
||||
|
||||
Loads an asset of the wallet page. It serves one file of the embedded wallet bundle — a content-hashed script or stylesheet under assets/, an icon, or the page shell itself. A path that names NO REAL FILE falls back to the shell instead of 404ing, which is what makes a deep link into the page's own routes survive a hard refresh. So a 200 here is not proof the asset exists — a typo answers HTML. assets/ is immutable for a year (the names carry the content hash); the shell is no-cache, so a deploy is picked up on the next load. Gated exactly like the page: 401 without a verified session, 503 when the bundle was never built.
|
||||
Serves one file of the embedded wallet bundle — a content-hashed script or stylesheet under assets/, an icon, or the page shell itself. A path that names NO REAL FILE falls back to the shell instead of 404ing, which is what makes a deep link into the page's own routes survive a hard refresh. So a 200 here is not proof the asset exists — a typo answers HTML. assets/ is immutable for a year (the names carry the content hash); the shell is no-cache, so a deploy is picked up on the next load. Gated exactly like the page: 401 without a verified session, 503 when the bundle was never built.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -1948,9 +1948,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Loads an asset of the wallet page.
|
||||
"""Load an asset of the wallet page
|
||||
|
||||
Loads an asset of the wallet page. It serves one file of the embedded wallet bundle — a content-hashed script or stylesheet under assets/, an icon, or the page shell itself. A path that names NO REAL FILE falls back to the shell instead of 404ing, which is what makes a deep link into the page's own routes survive a hard refresh. So a 200 here is not proof the asset exists — a typo answers HTML. assets/ is immutable for a year (the names carry the content hash); the shell is no-cache, so a deploy is picked up on the next load. Gated exactly like the page: 401 without a verified session, 503 when the bundle was never built.
|
||||
Serves one file of the embedded wallet bundle — a content-hashed script or stylesheet under assets/, an icon, or the page shell itself. A path that names NO REAL FILE falls back to the shell instead of 404ing, which is what makes a deep link into the page's own routes survive a hard refresh. So a 200 here is not proof the asset exists — a typo answers HTML. assets/ is immutable for a year (the names carry the content hash); the shell is no-cache, so a deploy is picked up on the next load. Gated exactly like the page: 401 without a verified session, 503 when the bundle was never built.
|
||||
|
||||
:param wildcard1: (required)
|
||||
:type wildcard1: str
|
||||
@@ -2312,9 +2312,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Downloads a workspace file.
|
||||
"""Download a workspace file
|
||||
|
||||
Downloads a workspace file. It streams one blob's raw BYTES back — this is the read side of the workspace file store, not a JSON envelope around it. THE BLOB IS NAMED BY THE `file` QUERY PARAMETER, NOT BY :filename. The path segment is only the name a browser saves the download under; a request without ?file= is a 400 no matter what the path says. The Content-Type is derived from the STORED BYTES, never from the name: only png, jpeg, gif and webp, recognized by their magic bytes, are served inline under their true type, and everything else is served inert as application/octet-stream with an attachment disposition. Every response carries nosniff, so a file uploaded under an .svg or .html name cannot be talked into executing in a viewer's origin. Blobs are immutable, so a hit caches privately for a year. Same gate as the upload: verified token, membership of the workspace. A genuine miss, another tenant's workspace, a workspace the caller is not in, and a blob id belonging to a different workspace are ONE answer — 404 — because the physical key is org- and workspace-scoped and a foreign id is simply a key that does not exist. An unavailable backend is a 502, never an empty 200.
|
||||
Streams one blob's raw BYTES back — this is the read side of the workspace file store, not a JSON envelope around it. THE BLOB IS NAMED BY THE `file` QUERY PARAMETER, NOT BY :filename. The path segment is only the name a browser saves the download under; a request without ?file= is a 400 no matter what the path says. The Content-Type is derived from the STORED BYTES, never from the name: only png, jpeg, gif and webp, recognized by their magic bytes, are served inline under their true type, and everything else is served inert as application/octet-stream with an attachment disposition. Every response carries nosniff, so a file uploaded under an .svg or .html name cannot be talked into executing in a viewer's origin. Blobs are immutable, so a hit caches privately for a year. Same gate as the upload: verified token, membership of the workspace. A genuine miss, another tenant's workspace, a workspace the caller is not in, and a blob id belonging to a different workspace are ONE answer — 404 — because the physical key is org- and workspace-scoped and a foreign id is simply a key that does not exist. An unavailable backend is a 502, never an empty 200.
|
||||
|
||||
:param workspace: (required)
|
||||
:type workspace: str
|
||||
@@ -2382,9 +2382,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Downloads a workspace file.
|
||||
"""Download a workspace file
|
||||
|
||||
Downloads a workspace file. It streams one blob's raw BYTES back — this is the read side of the workspace file store, not a JSON envelope around it. THE BLOB IS NAMED BY THE `file` QUERY PARAMETER, NOT BY :filename. The path segment is only the name a browser saves the download under; a request without ?file= is a 400 no matter what the path says. The Content-Type is derived from the STORED BYTES, never from the name: only png, jpeg, gif and webp, recognized by their magic bytes, are served inline under their true type, and everything else is served inert as application/octet-stream with an attachment disposition. Every response carries nosniff, so a file uploaded under an .svg or .html name cannot be talked into executing in a viewer's origin. Blobs are immutable, so a hit caches privately for a year. Same gate as the upload: verified token, membership of the workspace. A genuine miss, another tenant's workspace, a workspace the caller is not in, and a blob id belonging to a different workspace are ONE answer — 404 — because the physical key is org- and workspace-scoped and a foreign id is simply a key that does not exist. An unavailable backend is a 502, never an empty 200.
|
||||
Streams one blob's raw BYTES back — this is the read side of the workspace file store, not a JSON envelope around it. THE BLOB IS NAMED BY THE `file` QUERY PARAMETER, NOT BY :filename. The path segment is only the name a browser saves the download under; a request without ?file= is a 400 no matter what the path says. The Content-Type is derived from the STORED BYTES, never from the name: only png, jpeg, gif and webp, recognized by their magic bytes, are served inline under their true type, and everything else is served inert as application/octet-stream with an attachment disposition. Every response carries nosniff, so a file uploaded under an .svg or .html name cannot be talked into executing in a viewer's origin. Blobs are immutable, so a hit caches privately for a year. Same gate as the upload: verified token, membership of the workspace. A genuine miss, another tenant's workspace, a workspace the caller is not in, and a blob id belonging to a different workspace are ONE answer — 404 — because the physical key is org- and workspace-scoped and a foreign id is simply a key that does not exist. An unavailable backend is a 502, never an empty 200.
|
||||
|
||||
:param workspace: (required)
|
||||
:type workspace: str
|
||||
@@ -2452,9 +2452,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Downloads a workspace file.
|
||||
"""Download a workspace file
|
||||
|
||||
Downloads a workspace file. It streams one blob's raw BYTES back — this is the read side of the workspace file store, not a JSON envelope around it. THE BLOB IS NAMED BY THE `file` QUERY PARAMETER, NOT BY :filename. The path segment is only the name a browser saves the download under; a request without ?file= is a 400 no matter what the path says. The Content-Type is derived from the STORED BYTES, never from the name: only png, jpeg, gif and webp, recognized by their magic bytes, are served inline under their true type, and everything else is served inert as application/octet-stream with an attachment disposition. Every response carries nosniff, so a file uploaded under an .svg or .html name cannot be talked into executing in a viewer's origin. Blobs are immutable, so a hit caches privately for a year. Same gate as the upload: verified token, membership of the workspace. A genuine miss, another tenant's workspace, a workspace the caller is not in, and a blob id belonging to a different workspace are ONE answer — 404 — because the physical key is org- and workspace-scoped and a foreign id is simply a key that does not exist. An unavailable backend is a 502, never an empty 200.
|
||||
Streams one blob's raw BYTES back — this is the read side of the workspace file store, not a JSON envelope around it. THE BLOB IS NAMED BY THE `file` QUERY PARAMETER, NOT BY :filename. The path segment is only the name a browser saves the download under; a request without ?file= is a 400 no matter what the path says. The Content-Type is derived from the STORED BYTES, never from the name: only png, jpeg, gif and webp, recognized by their magic bytes, are served inline under their true type, and everything else is served inert as application/octet-stream with an attachment disposition. Every response carries nosniff, so a file uploaded under an .svg or .html name cannot be talked into executing in a viewer's origin. Blobs are immutable, so a hit caches privately for a year. Same gate as the upload: verified token, membership of the workspace. A genuine miss, another tenant's workspace, a workspace the caller is not in, and a blob id belonging to a different workspace are ONE answer — 404 — because the physical key is org- and workspace-scoped and a foreign id is simply a key that does not exist. An unavailable backend is a 502, never an empty 200.
|
||||
|
||||
:param workspace: (required)
|
||||
:type workspace: str
|
||||
@@ -2838,9 +2838,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Opens the workspace data-plane socket.
|
||||
"""Open the workspace data-plane socket
|
||||
|
||||
Opens the workspace data-plane socket. It upgrades to the WebSocket the Team client runs an entire workspace over: every frame is a ZAP envelope wrapping one JSON-RPC message — findAll/findOne reads against the workspace's documents, tx writes that broadcast to the other live sessions, hello negotiating JSON rather than msgpack. The response is a protocol upgrade, so there is no body to read. THE PATH SEGMENT IS THE CREDENTIAL. It is the workspace token selectWorkspace minted — bearer-equivalent, and sitting in a URL that proxies and access logs record, which is exactly why it expires in twelve hours and is re-minted on demand rather than being long-lived like the session token. It is decoded and verified (signature and expiry) BEFORE the upgrade, so a bad one is a 401 and never a socket that is accepted and then dropped, and it must carry both an account and a workspace claim. Nothing ambient authorizes this socket: a WebSocket is exempt from CORS, so a cookie-borne credential would make the Origin check the only access control on the whole data plane. The tenant is the token's SIGNED org claim and it keys every store path, so no header can name another workspace's data. The upgrade ALSO refuses a browser Origin outside the team surfaces with 403 — otherwise any page could open an authenticated socket with a token it lured out of a logged-in browser — while a request with no Origin at all is admitted, because that is what a non-browser client sends. On connect the workspace's system spaces are seeded once and the roster is reconciled every time, so the org's human members and its bots are present as workspace people without a separate sync call.
|
||||
Upgrades to the WebSocket the Team client runs an entire workspace over: every frame is a ZAP envelope wrapping one JSON-RPC message — findAll/findOne reads against the workspace's documents, tx writes that broadcast to the other live sessions, hello negotiating JSON rather than msgpack. The response is a protocol upgrade, so there is no body to read. THE PATH SEGMENT IS THE CREDENTIAL. It is the workspace token selectWorkspace minted — bearer-equivalent, and sitting in a URL that proxies and access logs record, which is exactly why it expires in twelve hours and is re-minted on demand rather than being long-lived like the session token. It is decoded and verified (signature and expiry) BEFORE the upgrade, so a bad one is a 401 and never a socket that is accepted and then dropped, and it must carry both an account and a workspace claim. Nothing ambient authorizes this socket: a WebSocket is exempt from CORS, so a cookie-borne credential would make the Origin check the only access control on the whole data plane. The tenant is the token's SIGNED org claim and it keys every store path, so no header can name another workspace's data. The upgrade ALSO refuses a browser Origin outside the team surfaces with 403 — otherwise any page could open an authenticated socket with a token it lured out of a logged-in browser — while a request with no Origin at all is admitted, because that is what a non-browser client sends. On connect the workspace's system spaces are seeded once and the roster is reconciled every time, so the org's human members and its bots are present as workspace people without a separate sync call.
|
||||
|
||||
:param token: (required)
|
||||
:type token: str
|
||||
@@ -2904,9 +2904,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Opens the workspace data-plane socket.
|
||||
"""Open the workspace data-plane socket
|
||||
|
||||
Opens the workspace data-plane socket. It upgrades to the WebSocket the Team client runs an entire workspace over: every frame is a ZAP envelope wrapping one JSON-RPC message — findAll/findOne reads against the workspace's documents, tx writes that broadcast to the other live sessions, hello negotiating JSON rather than msgpack. The response is a protocol upgrade, so there is no body to read. THE PATH SEGMENT IS THE CREDENTIAL. It is the workspace token selectWorkspace minted — bearer-equivalent, and sitting in a URL that proxies and access logs record, which is exactly why it expires in twelve hours and is re-minted on demand rather than being long-lived like the session token. It is decoded and verified (signature and expiry) BEFORE the upgrade, so a bad one is a 401 and never a socket that is accepted and then dropped, and it must carry both an account and a workspace claim. Nothing ambient authorizes this socket: a WebSocket is exempt from CORS, so a cookie-borne credential would make the Origin check the only access control on the whole data plane. The tenant is the token's SIGNED org claim and it keys every store path, so no header can name another workspace's data. The upgrade ALSO refuses a browser Origin outside the team surfaces with 403 — otherwise any page could open an authenticated socket with a token it lured out of a logged-in browser — while a request with no Origin at all is admitted, because that is what a non-browser client sends. On connect the workspace's system spaces are seeded once and the roster is reconciled every time, so the org's human members and its bots are present as workspace people without a separate sync call.
|
||||
Upgrades to the WebSocket the Team client runs an entire workspace over: every frame is a ZAP envelope wrapping one JSON-RPC message — findAll/findOne reads against the workspace's documents, tx writes that broadcast to the other live sessions, hello negotiating JSON rather than msgpack. The response is a protocol upgrade, so there is no body to read. THE PATH SEGMENT IS THE CREDENTIAL. It is the workspace token selectWorkspace minted — bearer-equivalent, and sitting in a URL that proxies and access logs record, which is exactly why it expires in twelve hours and is re-minted on demand rather than being long-lived like the session token. It is decoded and verified (signature and expiry) BEFORE the upgrade, so a bad one is a 401 and never a socket that is accepted and then dropped, and it must carry both an account and a workspace claim. Nothing ambient authorizes this socket: a WebSocket is exempt from CORS, so a cookie-borne credential would make the Origin check the only access control on the whole data plane. The tenant is the token's SIGNED org claim and it keys every store path, so no header can name another workspace's data. The upgrade ALSO refuses a browser Origin outside the team surfaces with 403 — otherwise any page could open an authenticated socket with a token it lured out of a logged-in browser — while a request with no Origin at all is admitted, because that is what a non-browser client sends. On connect the workspace's system spaces are seeded once and the roster is reconciled every time, so the org's human members and its bots are present as workspace people without a separate sync call.
|
||||
|
||||
:param token: (required)
|
||||
:type token: str
|
||||
@@ -2970,9 +2970,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Opens the workspace data-plane socket.
|
||||
"""Open the workspace data-plane socket
|
||||
|
||||
Opens the workspace data-plane socket. It upgrades to the WebSocket the Team client runs an entire workspace over: every frame is a ZAP envelope wrapping one JSON-RPC message — findAll/findOne reads against the workspace's documents, tx writes that broadcast to the other live sessions, hello negotiating JSON rather than msgpack. The response is a protocol upgrade, so there is no body to read. THE PATH SEGMENT IS THE CREDENTIAL. It is the workspace token selectWorkspace minted — bearer-equivalent, and sitting in a URL that proxies and access logs record, which is exactly why it expires in twelve hours and is re-minted on demand rather than being long-lived like the session token. It is decoded and verified (signature and expiry) BEFORE the upgrade, so a bad one is a 401 and never a socket that is accepted and then dropped, and it must carry both an account and a workspace claim. Nothing ambient authorizes this socket: a WebSocket is exempt from CORS, so a cookie-borne credential would make the Origin check the only access control on the whole data plane. The tenant is the token's SIGNED org claim and it keys every store path, so no header can name another workspace's data. The upgrade ALSO refuses a browser Origin outside the team surfaces with 403 — otherwise any page could open an authenticated socket with a token it lured out of a logged-in browser — while a request with no Origin at all is admitted, because that is what a non-browser client sends. On connect the workspace's system spaces are seeded once and the roster is reconciled every time, so the org's human members and its bots are present as workspace people without a separate sync call.
|
||||
Upgrades to the WebSocket the Team client runs an entire workspace over: every frame is a ZAP envelope wrapping one JSON-RPC message — findAll/findOne reads against the workspace's documents, tx writes that broadcast to the other live sessions, hello negotiating JSON rather than msgpack. The response is a protocol upgrade, so there is no body to read. THE PATH SEGMENT IS THE CREDENTIAL. It is the workspace token selectWorkspace minted — bearer-equivalent, and sitting in a URL that proxies and access logs record, which is exactly why it expires in twelve hours and is re-minted on demand rather than being long-lived like the session token. It is decoded and verified (signature and expiry) BEFORE the upgrade, so a bad one is a 401 and never a socket that is accepted and then dropped, and it must carry both an account and a workspace claim. Nothing ambient authorizes this socket: a WebSocket is exempt from CORS, so a cookie-borne credential would make the Origin check the only access control on the whole data plane. The tenant is the token's SIGNED org claim and it keys every store path, so no header can name another workspace's data. The upgrade ALSO refuses a browser Origin outside the team surfaces with 403 — otherwise any page could open an authenticated socket with a token it lured out of a logged-in browser — while a request with no Origin at all is admitted, because that is what a non-browser client sends. On connect the workspace's system spaces are seeded once and the roster is reconciled every time, so the org's human members and its bots are present as workspace people without a separate sync call.
|
||||
|
||||
:param token: (required)
|
||||
:type token: str
|
||||
@@ -3349,9 +3349,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Reads the caller's account and switches workspace.
|
||||
"""Read the caller's account and switch workspace
|
||||
|
||||
Reads the caller's account and switches workspace. It is the account control plane the Team client speaks: one POST carries a `method` verb and its `params`, and answers {\"result\": …}. The verbs are the session's own reads and the workspace switch — getLoginInfoByToken, getUserWorkspaces, selectWorkspace, getWorkspaceInfo, getMemberships, getPerson, getSocialIds, getRegionInfo, isReadOnlyGuest — plus sendInvite, which adds a member to a workspace and is refused for a caller who is not its owner or admin. A REFUSAL IS HTTP 200 carrying {\"error\": {severity, code, params}} — the platform Status the client translates — not a 4xx. An unreadable body, an unauthorized session and an unknown verb all arrive that way, so a caller that reads only the status code reads every failure here as a success. NO CREDENTIAL IS EVER HANDLED HERE. login, signUp, the OTP verbs, password change and reset, join and the guest-token exchange each answer Unauthorized with \"sign in at hanzo.id\" — a stated policy, not an unknown method, so the door being shut is a fact a test can pin. Sessions come from the OAuth pair under /account/auth. Auth is the team session token: Authorization: Bearer, else the HttpOnly account-token cookie. The tenant is that token's SIGNED org claim, never a header, and selectWorkspace resolves only among the orgs the token proves membership of. It also demands an explicit workspaceUrl — it never falls back to a first workspace, and a slug that resolves in two of the caller's orgs answers Ambiguous rather than picking one.
|
||||
The account control plane the Team client speaks: one POST carries a `method` verb and its `params`, and answers {\"result\": …}. The verbs are the session's own reads and the workspace switch — getLoginInfoByToken, getUserWorkspaces, selectWorkspace, getWorkspaceInfo, getMemberships, getPerson, getSocialIds, getRegionInfo, isReadOnlyGuest — plus sendInvite, which adds a member to a workspace and is refused for a caller who is not its owner or admin. A REFUSAL IS HTTP 200 carrying {\"error\": {severity, code, params}} — the platform Status the client translates — not a 4xx. An unreadable body, an unauthorized session and an unknown verb all arrive that way, so a caller that reads only the status code reads every failure here as a success. NO CREDENTIAL IS EVER HANDLED HERE. login, signUp, the OTP verbs, password change and reset, join and the guest-token exchange each answer Unauthorized with \"sign in at hanzo.id\" — a stated policy, not an unknown method, so the door being shut is a fact a test can pin. Sessions come from the OAuth pair under /account/auth. Auth is the team session token: Authorization: Bearer, else the HttpOnly account-token cookie. The tenant is that token's SIGNED org claim, never a header, and selectWorkspace resolves only among the orgs the token proves membership of. It also demands an explicit workspaceUrl — it never falls back to a first workspace, and a slug that resolves in two of the caller's orgs answers Ambiguous rather than picking one.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3411,9 +3411,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Reads the caller's account and switches workspace.
|
||||
"""Read the caller's account and switch workspace
|
||||
|
||||
Reads the caller's account and switches workspace. It is the account control plane the Team client speaks: one POST carries a `method` verb and its `params`, and answers {\"result\": …}. The verbs are the session's own reads and the workspace switch — getLoginInfoByToken, getUserWorkspaces, selectWorkspace, getWorkspaceInfo, getMemberships, getPerson, getSocialIds, getRegionInfo, isReadOnlyGuest — plus sendInvite, which adds a member to a workspace and is refused for a caller who is not its owner or admin. A REFUSAL IS HTTP 200 carrying {\"error\": {severity, code, params}} — the platform Status the client translates — not a 4xx. An unreadable body, an unauthorized session and an unknown verb all arrive that way, so a caller that reads only the status code reads every failure here as a success. NO CREDENTIAL IS EVER HANDLED HERE. login, signUp, the OTP verbs, password change and reset, join and the guest-token exchange each answer Unauthorized with \"sign in at hanzo.id\" — a stated policy, not an unknown method, so the door being shut is a fact a test can pin. Sessions come from the OAuth pair under /account/auth. Auth is the team session token: Authorization: Bearer, else the HttpOnly account-token cookie. The tenant is that token's SIGNED org claim, never a header, and selectWorkspace resolves only among the orgs the token proves membership of. It also demands an explicit workspaceUrl — it never falls back to a first workspace, and a slug that resolves in two of the caller's orgs answers Ambiguous rather than picking one.
|
||||
The account control plane the Team client speaks: one POST carries a `method` verb and its `params`, and answers {\"result\": …}. The verbs are the session's own reads and the workspace switch — getLoginInfoByToken, getUserWorkspaces, selectWorkspace, getWorkspaceInfo, getMemberships, getPerson, getSocialIds, getRegionInfo, isReadOnlyGuest — plus sendInvite, which adds a member to a workspace and is refused for a caller who is not its owner or admin. A REFUSAL IS HTTP 200 carrying {\"error\": {severity, code, params}} — the platform Status the client translates — not a 4xx. An unreadable body, an unauthorized session and an unknown verb all arrive that way, so a caller that reads only the status code reads every failure here as a success. NO CREDENTIAL IS EVER HANDLED HERE. login, signUp, the OTP verbs, password change and reset, join and the guest-token exchange each answer Unauthorized with \"sign in at hanzo.id\" — a stated policy, not an unknown method, so the door being shut is a fact a test can pin. Sessions come from the OAuth pair under /account/auth. Auth is the team session token: Authorization: Bearer, else the HttpOnly account-token cookie. The tenant is that token's SIGNED org claim, never a header, and selectWorkspace resolves only among the orgs the token proves membership of. It also demands an explicit workspaceUrl — it never falls back to a first workspace, and a slug that resolves in two of the caller's orgs answers Ambiguous rather than picking one.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3473,9 +3473,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Reads the caller's account and switches workspace.
|
||||
"""Read the caller's account and switch workspace
|
||||
|
||||
Reads the caller's account and switches workspace. It is the account control plane the Team client speaks: one POST carries a `method` verb and its `params`, and answers {\"result\": …}. The verbs are the session's own reads and the workspace switch — getLoginInfoByToken, getUserWorkspaces, selectWorkspace, getWorkspaceInfo, getMemberships, getPerson, getSocialIds, getRegionInfo, isReadOnlyGuest — plus sendInvite, which adds a member to a workspace and is refused for a caller who is not its owner or admin. A REFUSAL IS HTTP 200 carrying {\"error\": {severity, code, params}} — the platform Status the client translates — not a 4xx. An unreadable body, an unauthorized session and an unknown verb all arrive that way, so a caller that reads only the status code reads every failure here as a success. NO CREDENTIAL IS EVER HANDLED HERE. login, signUp, the OTP verbs, password change and reset, join and the guest-token exchange each answer Unauthorized with \"sign in at hanzo.id\" — a stated policy, not an unknown method, so the door being shut is a fact a test can pin. Sessions come from the OAuth pair under /account/auth. Auth is the team session token: Authorization: Bearer, else the HttpOnly account-token cookie. The tenant is that token's SIGNED org claim, never a header, and selectWorkspace resolves only among the orgs the token proves membership of. It also demands an explicit workspaceUrl — it never falls back to a first workspace, and a slug that resolves in two of the caller's orgs answers Ambiguous rather than picking one.
|
||||
The account control plane the Team client speaks: one POST carries a `method` verb and its `params`, and answers {\"result\": …}. The verbs are the session's own reads and the workspace switch — getLoginInfoByToken, getUserWorkspaces, selectWorkspace, getWorkspaceInfo, getMemberships, getPerson, getSocialIds, getRegionInfo, isReadOnlyGuest — plus sendInvite, which adds a member to a workspace and is refused for a caller who is not its owner or admin. A REFUSAL IS HTTP 200 carrying {\"error\": {severity, code, params}} — the platform Status the client translates — not a 4xx. An unreadable body, an unauthorized session and an unknown verb all arrive that way, so a caller that reads only the status code reads every failure here as a success. NO CREDENTIAL IS EVER HANDLED HERE. login, signUp, the OTP verbs, password change and reset, join and the guest-token exchange each answer Unauthorized with \"sign in at hanzo.id\" — a stated policy, not an unknown method, so the door being shut is a fact a test can pin. Sessions come from the OAuth pair under /account/auth. Auth is the team session token: Authorization: Bearer, else the HttpOnly account-token cookie. The tenant is that token's SIGNED org claim, never a header, and selectWorkspace resolves only among the orgs the token proves membership of. It also demands an explicit workspaceUrl — it never falls back to a first workspace, and a slug that resolves in two of the caller's orgs answers Ambiguous rather than picking one.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -3830,9 +3830,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Uploads a file into a workspace.
|
||||
"""Upload a file into a workspace
|
||||
|
||||
Uploads a file into a workspace. It stores one file in a workspace's blob store and answers the blob id it is addressable by, as plain text — the front discards that body, it is there for a caller driving this by hand. The body is a multipart form with a `file` part, and THAT PART'S FILENAME IS THE BLOB ID: the client mints it (a uuid v4) and the server stores under it, so a part whose filename is not a uuid is refused rather than assigned one. A file over 100 MiB is 413 and an empty one is 400. The caller must hold a verified session or workspace token AND be a member of the workspace; an unknown workspace, another tenant's workspace and a workspace the caller is not in all answer the same 404, so a probe learns nothing about what exists. The stored key embeds the verified org and the workspace, so an upload cannot land in another tenant's box whatever id it names. A storage backend that is unavailable fails closed with 502 rather than reporting a write it never made.
|
||||
Stores one file in a workspace's blob store and answers the blob id it is addressable by, as plain text — the front discards that body, it is there for a caller driving this by hand. The body is a multipart form with a `file` part, and THAT PART'S FILENAME IS THE BLOB ID: the client mints it (a uuid v4) and the server stores under it, so a part whose filename is not a uuid is refused rather than assigned one. A file over 100 MiB is 413 and an empty one is 400. The caller must hold a verified session or workspace token AND be a member of the workspace; an unknown workspace, another tenant's workspace and a workspace the caller is not in all answer the same 404, so a probe learns nothing about what exists. The stored key embeds the verified org and the workspace, so an upload cannot land in another tenant's box whatever id it names. A storage backend that is unavailable fails closed with 502 rather than reporting a write it never made.
|
||||
|
||||
:param workspace: (required)
|
||||
:type workspace: str
|
||||
@@ -3896,9 +3896,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Uploads a file into a workspace.
|
||||
"""Upload a file into a workspace
|
||||
|
||||
Uploads a file into a workspace. It stores one file in a workspace's blob store and answers the blob id it is addressable by, as plain text — the front discards that body, it is there for a caller driving this by hand. The body is a multipart form with a `file` part, and THAT PART'S FILENAME IS THE BLOB ID: the client mints it (a uuid v4) and the server stores under it, so a part whose filename is not a uuid is refused rather than assigned one. A file over 100 MiB is 413 and an empty one is 400. The caller must hold a verified session or workspace token AND be a member of the workspace; an unknown workspace, another tenant's workspace and a workspace the caller is not in all answer the same 404, so a probe learns nothing about what exists. The stored key embeds the verified org and the workspace, so an upload cannot land in another tenant's box whatever id it names. A storage backend that is unavailable fails closed with 502 rather than reporting a write it never made.
|
||||
Stores one file in a workspace's blob store and answers the blob id it is addressable by, as plain text — the front discards that body, it is there for a caller driving this by hand. The body is a multipart form with a `file` part, and THAT PART'S FILENAME IS THE BLOB ID: the client mints it (a uuid v4) and the server stores under it, so a part whose filename is not a uuid is refused rather than assigned one. A file over 100 MiB is 413 and an empty one is 400. The caller must hold a verified session or workspace token AND be a member of the workspace; an unknown workspace, another tenant's workspace and a workspace the caller is not in all answer the same 404, so a probe learns nothing about what exists. The stored key embeds the verified org and the workspace, so an upload cannot land in another tenant's box whatever id it names. A storage backend that is unavailable fails closed with 502 rather than reporting a write it never made.
|
||||
|
||||
:param workspace: (required)
|
||||
:type workspace: str
|
||||
@@ -3962,9 +3962,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Uploads a file into a workspace.
|
||||
"""Upload a file into a workspace
|
||||
|
||||
Uploads a file into a workspace. It stores one file in a workspace's blob store and answers the blob id it is addressable by, as plain text — the front discards that body, it is there for a caller driving this by hand. The body is a multipart form with a `file` part, and THAT PART'S FILENAME IS THE BLOB ID: the client mints it (a uuid v4) and the server stores under it, so a part whose filename is not a uuid is refused rather than assigned one. A file over 100 MiB is 413 and an empty one is 400. The caller must hold a verified session or workspace token AND be a member of the workspace; an unknown workspace, another tenant's workspace and a workspace the caller is not in all answer the same 404, so a probe learns nothing about what exists. The stored key embeds the verified org and the workspace, so an upload cannot land in another tenant's box whatever id it names. A storage backend that is unavailable fails closed with 502 rather than reporting a write it never made.
|
||||
Stores one file in a workspace's blob store and answers the blob id it is addressable by, as plain text — the front discards that body, it is there for a caller driving this by hand. The body is a multipart form with a `file` part, and THAT PART'S FILENAME IS THE BLOB ID: the client mints it (a uuid v4) and the server stores under it, so a part whose filename is not a uuid is refused rather than assigned one. A file over 100 MiB is 413 and an empty one is 400. The caller must hold a verified session or workspace token AND be a member of the workspace; an unknown workspace, another tenant's workspace and a workspace the caller is not in all answer the same 404, so a probe learns nothing about what exists. The stored key embeds the verified org and the workspace, so an upload cannot land in another tenant's box whatever id it names. A storage backend that is unavailable fails closed with 502 rather than reporting a write it never made.
|
||||
|
||||
:param workspace: (required)
|
||||
:type workspace: str
|
||||
@@ -4079,9 +4079,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Stores the session token as this browser's cookie.
|
||||
"""Store the session token as this browser's cookie
|
||||
|
||||
Stores the session token as this browser's cookie. It writes the team session token into the HttpOnly `account-token` cookie — Secure, SameSite=Lax, whole-origin scope, thirty days — and answers {\"result\": true}. This is how the client turns the token it caught off the OAuth bounce into a credential page JS can no longer read, which IS the security property: script that cannot see the cookie cannot exfiltrate it, and every later call on the files, billing and collaborator planes authenticates from it when no bearer is sent. The token is VERIFIED — signature and expiry, against this service's own signing secret — BEFORE it is stored. Anything this service did not sign is 401 and nothing is written; persisting a caller-supplied value unchecked would be a session-fixation door, where an attacker pins a cookie the victim's browser then presents as its own. The token may arrive as `token` in the JSON body or, when the body is absent or unparseable, from the Authorization bearer — an unreadable body is NOT an error here. The sibling DELETE clears this same cookie and signs the browser out of team only: the IAM cookie set alongside it is a different credential with its own lifetime and is left alone.
|
||||
Writes the team session token into the HttpOnly `account-token` cookie — Secure, SameSite=Lax, whole-origin scope, thirty days — and answers {\"result\": true}. This is how the client turns the token it caught off the OAuth bounce into a credential page JS can no longer read, which IS the security property: script that cannot see the cookie cannot exfiltrate it, and every later call on the files, billing and collaborator planes authenticates from it when no bearer is sent. The token is VERIFIED — signature and expiry, against this service's own signing secret — BEFORE it is stored. Anything this service did not sign is 401 and nothing is written; persisting a caller-supplied value unchecked would be a session-fixation door, where an attacker pins a cookie the victim's browser then presents as its own. The token may arrive as `token` in the JSON body or, when the body is absent or unparseable, from the Authorization bearer — an unreadable body is NOT an error here. The sibling DELETE clears this same cookie and signs the browser out of team only: the IAM cookie set alongside it is a different credential with its own lifetime and is left alone.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -4141,9 +4141,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Stores the session token as this browser's cookie.
|
||||
"""Store the session token as this browser's cookie
|
||||
|
||||
Stores the session token as this browser's cookie. It writes the team session token into the HttpOnly `account-token` cookie — Secure, SameSite=Lax, whole-origin scope, thirty days — and answers {\"result\": true}. This is how the client turns the token it caught off the OAuth bounce into a credential page JS can no longer read, which IS the security property: script that cannot see the cookie cannot exfiltrate it, and every later call on the files, billing and collaborator planes authenticates from it when no bearer is sent. The token is VERIFIED — signature and expiry, against this service's own signing secret — BEFORE it is stored. Anything this service did not sign is 401 and nothing is written; persisting a caller-supplied value unchecked would be a session-fixation door, where an attacker pins a cookie the victim's browser then presents as its own. The token may arrive as `token` in the JSON body or, when the body is absent or unparseable, from the Authorization bearer — an unreadable body is NOT an error here. The sibling DELETE clears this same cookie and signs the browser out of team only: the IAM cookie set alongside it is a different credential with its own lifetime and is left alone.
|
||||
Writes the team session token into the HttpOnly `account-token` cookie — Secure, SameSite=Lax, whole-origin scope, thirty days — and answers {\"result\": true}. This is how the client turns the token it caught off the OAuth bounce into a credential page JS can no longer read, which IS the security property: script that cannot see the cookie cannot exfiltrate it, and every later call on the files, billing and collaborator planes authenticates from it when no bearer is sent. The token is VERIFIED — signature and expiry, against this service's own signing secret — BEFORE it is stored. Anything this service did not sign is 401 and nothing is written; persisting a caller-supplied value unchecked would be a session-fixation door, where an attacker pins a cookie the victim's browser then presents as its own. The token may arrive as `token` in the JSON body or, when the body is absent or unparseable, from the Authorization bearer — an unreadable body is NOT an error here. The sibling DELETE clears this same cookie and signs the browser out of team only: the IAM cookie set alongside it is a different credential with its own lifetime and is left alone.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -4203,9 +4203,9 @@ class TeamApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Stores the session token as this browser's cookie.
|
||||
"""Store the session token as this browser's cookie
|
||||
|
||||
Stores the session token as this browser's cookie. It writes the team session token into the HttpOnly `account-token` cookie — Secure, SameSite=Lax, whole-origin scope, thirty days — and answers {\"result\": true}. This is how the client turns the token it caught off the OAuth bounce into a credential page JS can no longer read, which IS the security property: script that cannot see the cookie cannot exfiltrate it, and every later call on the files, billing and collaborator planes authenticates from it when no bearer is sent. The token is VERIFIED — signature and expiry, against this service's own signing secret — BEFORE it is stored. Anything this service did not sign is 401 and nothing is written; persisting a caller-supplied value unchecked would be a session-fixation door, where an attacker pins a cookie the victim's browser then presents as its own. The token may arrive as `token` in the JSON body or, when the body is absent or unparseable, from the Authorization bearer — an unreadable body is NOT an error here. The sibling DELETE clears this same cookie and signs the browser out of team only: the IAM cookie set alongside it is a different credential with its own lifetime and is left alone.
|
||||
Writes the team session token into the HttpOnly `account-token` cookie — Secure, SameSite=Lax, whole-origin scope, thirty days — and answers {\"result\": true}. This is how the client turns the token it caught off the OAuth bounce into a credential page JS can no longer read, which IS the security property: script that cannot see the cookie cannot exfiltrate it, and every later call on the files, billing and collaborator planes authenticates from it when no bearer is sent. The token is VERIFIED — signature and expiry, against this service's own signing secret — BEFORE it is stored. Anything this service did not sign is 401 and nothing is written; persisting a caller-supplied value unchecked would be a session-fixation door, where an attacker pins a cookie the victim's browser then presents as its own. The token may arrive as `token` in the JSON body or, when the body is absent or unparseable, from the Authorization bearer — an unreadable body is NOT an error here. The sibling DELETE clears this same cookie and signs the browser out of team only: the IAM cookie set alongside it is a different credential with its own lifetime and is left alone.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -20,6 +20,8 @@ from pydantic import Field, StrictBool, StrictInt, StrictStr
|
||||
from typing import List, Optional
|
||||
from typing_extensions import Annotated
|
||||
from hanzoai.cloud.models.issue_edit import IssueEdit
|
||||
from hanzoai.cloud.models.issue_hit import IssueHit
|
||||
from hanzoai.cloud.models.issue_hits import IssueHits
|
||||
from hanzoai.cloud.models.issue_view import IssueView
|
||||
from hanzoai.cloud.models.milestone_view import MilestoneView
|
||||
from hanzoai.cloud.models.new_issue import NewIssue
|
||||
@@ -293,6 +295,387 @@ class TrackerApi:
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def get_v1_tracker_issues(
|
||||
self,
|
||||
q: Annotated[Optional[StrictStr], Field(description="Q matches an issue's title or description. A word from the issue, which is what someone remembers — not its number, which is what they are looking up.")] = None,
|
||||
project: Annotated[Optional[StrictStr], Field(description="Project narrows to one team key; \"\" searches every project in the org, which is the point of this op.")] = None,
|
||||
status: Annotated[Optional[StrictStr], Field(description="Status keeps one board column: backlog, todo, in_progress, done, canceled.")] = None,
|
||||
kind: Annotated[Optional[StrictStr], Field(description="Kind keeps one shape: issue, pr, epic.")] = None,
|
||||
repo: Annotated[Optional[StrictStr], Field(description="Repo keeps issues bound to one git repository.")] = None,
|
||||
source: Annotated[Optional[StrictStr], Field(description="Source keeps one origin: team, git, crm, helpdesk, cms, agent. \"git\" is how you ask for the mirrored GitHub issues specifically.")] = None,
|
||||
assignee: Annotated[Optional[StrictStr], Field(description="Assignee keeps issues held by one person. Pass \"me\" for yourself.")] = None,
|
||||
limit: Annotated[Optional[StrictInt], Field(description="Limit caps the answer; 0 means the default, and anything above the ceiling is clamped rather than refused — a search that errors on being too broad teaches people to guess.")] = None,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> IssueHits:
|
||||
"""Answers across every project in the org.
|
||||
|
||||
Answers across every project in the org. The org comes from the validated principal and never from the request: a caller able to name the org could read another tenant's backlog, and a search is exactly the shape that would quietly return it.
|
||||
|
||||
:param q: Q matches an issue's title or description. A word from the issue, which is what someone remembers — not its number, which is what they are looking up.
|
||||
:type q: str
|
||||
:param project: Project narrows to one team key; \"\" searches every project in the org, which is the point of this op.
|
||||
:type project: str
|
||||
:param status: Status keeps one board column: backlog, todo, in_progress, done, canceled.
|
||||
:type status: str
|
||||
:param kind: Kind keeps one shape: issue, pr, epic.
|
||||
:type kind: str
|
||||
:param repo: Repo keeps issues bound to one git repository.
|
||||
:type repo: str
|
||||
:param source: Source keeps one origin: team, git, crm, helpdesk, cms, agent. \"git\" is how you ask for the mirrored GitHub issues specifically.
|
||||
:type source: str
|
||||
:param assignee: Assignee keeps issues held by one person. Pass \"me\" for yourself.
|
||||
:type assignee: str
|
||||
:param limit: Limit caps the answer; 0 means the default, and anything above the ceiling is clamped rather than refused — a search that errors on being too broad teaches people to guess.
|
||||
:type limit: int
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_tracker_issues_serialize(
|
||||
q=q,
|
||||
project=project,
|
||||
status=status,
|
||||
kind=kind,
|
||||
repo=repo,
|
||||
source=source,
|
||||
assignee=assignee,
|
||||
limit=limit,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "IssueHits",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
).data
|
||||
|
||||
|
||||
@validate_call
|
||||
def get_v1_tracker_issues_with_http_info(
|
||||
self,
|
||||
q: Annotated[Optional[StrictStr], Field(description="Q matches an issue's title or description. A word from the issue, which is what someone remembers — not its number, which is what they are looking up.")] = None,
|
||||
project: Annotated[Optional[StrictStr], Field(description="Project narrows to one team key; \"\" searches every project in the org, which is the point of this op.")] = None,
|
||||
status: Annotated[Optional[StrictStr], Field(description="Status keeps one board column: backlog, todo, in_progress, done, canceled.")] = None,
|
||||
kind: Annotated[Optional[StrictStr], Field(description="Kind keeps one shape: issue, pr, epic.")] = None,
|
||||
repo: Annotated[Optional[StrictStr], Field(description="Repo keeps issues bound to one git repository.")] = None,
|
||||
source: Annotated[Optional[StrictStr], Field(description="Source keeps one origin: team, git, crm, helpdesk, cms, agent. \"git\" is how you ask for the mirrored GitHub issues specifically.")] = None,
|
||||
assignee: Annotated[Optional[StrictStr], Field(description="Assignee keeps issues held by one person. Pass \"me\" for yourself.")] = None,
|
||||
limit: Annotated[Optional[StrictInt], Field(description="Limit caps the answer; 0 means the default, and anything above the ceiling is clamped rather than refused — a search that errors on being too broad teaches people to guess.")] = None,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[IssueHits]:
|
||||
"""Answers across every project in the org.
|
||||
|
||||
Answers across every project in the org. The org comes from the validated principal and never from the request: a caller able to name the org could read another tenant's backlog, and a search is exactly the shape that would quietly return it.
|
||||
|
||||
:param q: Q matches an issue's title or description. A word from the issue, which is what someone remembers — not its number, which is what they are looking up.
|
||||
:type q: str
|
||||
:param project: Project narrows to one team key; \"\" searches every project in the org, which is the point of this op.
|
||||
:type project: str
|
||||
:param status: Status keeps one board column: backlog, todo, in_progress, done, canceled.
|
||||
:type status: str
|
||||
:param kind: Kind keeps one shape: issue, pr, epic.
|
||||
:type kind: str
|
||||
:param repo: Repo keeps issues bound to one git repository.
|
||||
:type repo: str
|
||||
:param source: Source keeps one origin: team, git, crm, helpdesk, cms, agent. \"git\" is how you ask for the mirrored GitHub issues specifically.
|
||||
:type source: str
|
||||
:param assignee: Assignee keeps issues held by one person. Pass \"me\" for yourself.
|
||||
:type assignee: str
|
||||
:param limit: Limit caps the answer; 0 means the default, and anything above the ceiling is clamped rather than refused — a search that errors on being too broad teaches people to guess.
|
||||
:type limit: int
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_tracker_issues_serialize(
|
||||
q=q,
|
||||
project=project,
|
||||
status=status,
|
||||
kind=kind,
|
||||
repo=repo,
|
||||
source=source,
|
||||
assignee=assignee,
|
||||
limit=limit,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "IssueHits",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
)
|
||||
|
||||
|
||||
@validate_call
|
||||
def get_v1_tracker_issues_without_preload_content(
|
||||
self,
|
||||
q: Annotated[Optional[StrictStr], Field(description="Q matches an issue's title or description. A word from the issue, which is what someone remembers — not its number, which is what they are looking up.")] = None,
|
||||
project: Annotated[Optional[StrictStr], Field(description="Project narrows to one team key; \"\" searches every project in the org, which is the point of this op.")] = None,
|
||||
status: Annotated[Optional[StrictStr], Field(description="Status keeps one board column: backlog, todo, in_progress, done, canceled.")] = None,
|
||||
kind: Annotated[Optional[StrictStr], Field(description="Kind keeps one shape: issue, pr, epic.")] = None,
|
||||
repo: Annotated[Optional[StrictStr], Field(description="Repo keeps issues bound to one git repository.")] = None,
|
||||
source: Annotated[Optional[StrictStr], Field(description="Source keeps one origin: team, git, crm, helpdesk, cms, agent. \"git\" is how you ask for the mirrored GitHub issues specifically.")] = None,
|
||||
assignee: Annotated[Optional[StrictStr], Field(description="Assignee keeps issues held by one person. Pass \"me\" for yourself.")] = None,
|
||||
limit: Annotated[Optional[StrictInt], Field(description="Limit caps the answer; 0 means the default, and anything above the ceiling is clamped rather than refused — a search that errors on being too broad teaches people to guess.")] = None,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Answers across every project in the org.
|
||||
|
||||
Answers across every project in the org. The org comes from the validated principal and never from the request: a caller able to name the org could read another tenant's backlog, and a search is exactly the shape that would quietly return it.
|
||||
|
||||
:param q: Q matches an issue's title or description. A word from the issue, which is what someone remembers — not its number, which is what they are looking up.
|
||||
:type q: str
|
||||
:param project: Project narrows to one team key; \"\" searches every project in the org, which is the point of this op.
|
||||
:type project: str
|
||||
:param status: Status keeps one board column: backlog, todo, in_progress, done, canceled.
|
||||
:type status: str
|
||||
:param kind: Kind keeps one shape: issue, pr, epic.
|
||||
:type kind: str
|
||||
:param repo: Repo keeps issues bound to one git repository.
|
||||
:type repo: str
|
||||
:param source: Source keeps one origin: team, git, crm, helpdesk, cms, agent. \"git\" is how you ask for the mirrored GitHub issues specifically.
|
||||
:type source: str
|
||||
:param assignee: Assignee keeps issues held by one person. Pass \"me\" for yourself.
|
||||
:type assignee: str
|
||||
:param limit: Limit caps the answer; 0 means the default, and anything above the ceiling is clamped rather than refused — a search that errors on being too broad teaches people to guess.
|
||||
:type limit: int
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_tracker_issues_serialize(
|
||||
q=q,
|
||||
project=project,
|
||||
status=status,
|
||||
kind=kind,
|
||||
repo=repo,
|
||||
source=source,
|
||||
assignee=assignee,
|
||||
limit=limit,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "IssueHits",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
return response_data.response
|
||||
|
||||
|
||||
def _get_v1_tracker_issues_serialize(
|
||||
self,
|
||||
q,
|
||||
project,
|
||||
status,
|
||||
kind,
|
||||
repo,
|
||||
source,
|
||||
assignee,
|
||||
limit,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
_host_index,
|
||||
) -> RequestSerialized:
|
||||
|
||||
_host = None
|
||||
|
||||
_collection_formats: Dict[str, str] = {
|
||||
}
|
||||
|
||||
_path_params: Dict[str, str] = {}
|
||||
_query_params: List[Tuple[str, str]] = []
|
||||
_header_params: Dict[str, Optional[str]] = _headers or {}
|
||||
_form_params: List[Tuple[str, str]] = []
|
||||
_files: Dict[
|
||||
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
||||
] = {}
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
# process the query parameters
|
||||
if q is not None:
|
||||
|
||||
_query_params.append(('q', q))
|
||||
|
||||
if project is not None:
|
||||
|
||||
_query_params.append(('project', project))
|
||||
|
||||
if status is not None:
|
||||
|
||||
_query_params.append(('status', status))
|
||||
|
||||
if kind is not None:
|
||||
|
||||
_query_params.append(('kind', kind))
|
||||
|
||||
if repo is not None:
|
||||
|
||||
_query_params.append(('repo', repo))
|
||||
|
||||
if source is not None:
|
||||
|
||||
_query_params.append(('source', source))
|
||||
|
||||
if assignee is not None:
|
||||
|
||||
_query_params.append(('assignee', assignee))
|
||||
|
||||
if limit is not None:
|
||||
|
||||
_query_params.append(('limit', limit))
|
||||
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
# process the body parameter
|
||||
|
||||
|
||||
# set the HTTP header `Accept`
|
||||
if 'Accept' not in _header_params:
|
||||
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||
[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
# authentication setting
|
||||
_auth_settings: List[str] = [
|
||||
]
|
||||
|
||||
return self.api_client.param_serialize(
|
||||
method='GET',
|
||||
resource_path='/v1/tracker/issues',
|
||||
path_params=_path_params,
|
||||
query_params=_query_params,
|
||||
header_params=_header_params,
|
||||
body=_body_params,
|
||||
post_params=_form_params,
|
||||
files=_files,
|
||||
auth_settings=_auth_settings,
|
||||
collection_formats=_collection_formats,
|
||||
_host=_host,
|
||||
_request_auth=_request_auth
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def get_v1_tracker_milestones(
|
||||
self,
|
||||
@@ -2462,3 +2845,278 @@ class TrackerApi:
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_tracker_projects_by_key_issues_by_num_claim(
|
||||
self,
|
||||
key: StrictStr,
|
||||
num: StrictInt,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> IssueHit:
|
||||
"""Takes an issue: it becomes yours and it moves to in_progress.
|
||||
|
||||
Takes an issue: it becomes yours and it moves to in_progress. The holder is the CALLER, never an argument. \"Assign this to someone else\" is a different act with different authority, and it already exists as a PATCH; conflating them would let anyone hand work to anyone by naming them. Claiming something already held by someone else is refused rather than silently taken — two agents on one issue is the failure this prevents, and a claim that quietly wins a race is worse than one that says no.
|
||||
|
||||
:param key: (required)
|
||||
:type key: str
|
||||
:param num: (required)
|
||||
:type num: int
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_tracker_projects_by_key_issues_by_num_claim_serialize(
|
||||
key=key,
|
||||
num=num,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "IssueHit",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
).data
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_tracker_projects_by_key_issues_by_num_claim_with_http_info(
|
||||
self,
|
||||
key: StrictStr,
|
||||
num: StrictInt,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[IssueHit]:
|
||||
"""Takes an issue: it becomes yours and it moves to in_progress.
|
||||
|
||||
Takes an issue: it becomes yours and it moves to in_progress. The holder is the CALLER, never an argument. \"Assign this to someone else\" is a different act with different authority, and it already exists as a PATCH; conflating them would let anyone hand work to anyone by naming them. Claiming something already held by someone else is refused rather than silently taken — two agents on one issue is the failure this prevents, and a claim that quietly wins a race is worse than one that says no.
|
||||
|
||||
:param key: (required)
|
||||
:type key: str
|
||||
:param num: (required)
|
||||
:type num: int
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_tracker_projects_by_key_issues_by_num_claim_serialize(
|
||||
key=key,
|
||||
num=num,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "IssueHit",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
response_data.read()
|
||||
return self.api_client.response_deserialize(
|
||||
response_data=response_data,
|
||||
response_types_map=_response_types_map,
|
||||
)
|
||||
|
||||
|
||||
@validate_call
|
||||
def post_v1_tracker_projects_by_key_issues_by_num_claim_without_preload_content(
|
||||
self,
|
||||
key: StrictStr,
|
||||
num: StrictInt,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Tuple[
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
Annotated[StrictFloat, Field(gt=0)]
|
||||
]
|
||||
] = None,
|
||||
_request_auth: Optional[Dict[StrictStr, Any]] = None,
|
||||
_content_type: Optional[StrictStr] = None,
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Takes an issue: it becomes yours and it moves to in_progress.
|
||||
|
||||
Takes an issue: it becomes yours and it moves to in_progress. The holder is the CALLER, never an argument. \"Assign this to someone else\" is a different act with different authority, and it already exists as a PATCH; conflating them would let anyone hand work to anyone by naming them. Claiming something already held by someone else is refused rather than silently taken — two agents on one issue is the failure this prevents, and a claim that quietly wins a race is worse than one that says no.
|
||||
|
||||
:param key: (required)
|
||||
:type key: str
|
||||
:param num: (required)
|
||||
:type num: int
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
(connection, read) timeouts.
|
||||
:type _request_timeout: int, tuple(int, int), optional
|
||||
:param _request_auth: set to override the auth_settings for an a single
|
||||
request; this effectively ignores the
|
||||
authentication in the spec for a single request.
|
||||
:type _request_auth: dict, optional
|
||||
:param _content_type: force content-type for the request.
|
||||
:type _content_type: str, Optional
|
||||
:param _headers: set to override the headers for a single
|
||||
request; this effectively ignores the headers
|
||||
in the spec for a single request.
|
||||
:type _headers: dict, optional
|
||||
:param _host_index: set to override the host_index for a single
|
||||
request; this effectively ignores the host_index
|
||||
in the spec for a single request.
|
||||
:type _host_index: int, optional
|
||||
:return: Returns the result object.
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_tracker_projects_by_key_issues_by_num_claim_serialize(
|
||||
key=key,
|
||||
num=num,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
_host_index=_host_index
|
||||
)
|
||||
|
||||
_response_types_map: Dict[str, Optional[str]] = {
|
||||
'200': "IssueHit",
|
||||
}
|
||||
response_data = self.api_client.call_api(
|
||||
*_param,
|
||||
_request_timeout=_request_timeout
|
||||
)
|
||||
return response_data.response
|
||||
|
||||
|
||||
def _post_v1_tracker_projects_by_key_issues_by_num_claim_serialize(
|
||||
self,
|
||||
key,
|
||||
num,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
_host_index,
|
||||
) -> RequestSerialized:
|
||||
|
||||
_host = None
|
||||
|
||||
_collection_formats: Dict[str, str] = {
|
||||
}
|
||||
|
||||
_path_params: Dict[str, str] = {}
|
||||
_query_params: List[Tuple[str, str]] = []
|
||||
_header_params: Dict[str, Optional[str]] = _headers or {}
|
||||
_form_params: List[Tuple[str, str]] = []
|
||||
_files: Dict[
|
||||
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
||||
] = {}
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
if key is not None:
|
||||
_path_params['key'] = key
|
||||
if num is not None:
|
||||
_path_params['num'] = num
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
# process the body parameter
|
||||
|
||||
|
||||
# set the HTTP header `Accept`
|
||||
if 'Accept' not in _header_params:
|
||||
_header_params['Accept'] = self.api_client.select_header_accept(
|
||||
[
|
||||
'application/json'
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
# authentication setting
|
||||
_auth_settings: List[str] = [
|
||||
]
|
||||
|
||||
return self.api_client.param_serialize(
|
||||
method='POST',
|
||||
resource_path='/v1/tracker/projects/{key}/issues/{num}/claim',
|
||||
path_params=_path_params,
|
||||
query_params=_query_params,
|
||||
header_params=_header_params,
|
||||
body=_body_params,
|
||||
post_params=_form_params,
|
||||
files=_files,
|
||||
auth_settings=_auth_settings,
|
||||
collection_formats=_collection_formats,
|
||||
_host=_host,
|
||||
_request_auth=_request_auth
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -353,9 +353,9 @@ class TranslateApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Translates a string or a batch into one target language.
|
||||
"""Translate a string or a batch into one target language
|
||||
|
||||
Translates a string or a batch into one target language. It returns one translation per input string, in input order, each carrying where it sits on the review ladder and whether it came from your memory rather than an engine — plus a usage block of REAL counts (strings, cached, translated, and the source characters that actually reached an engine). Send `text` for one string or `batch` for many, never both. When you name no `source`, the detected one is reported back. THE TRANSLATION MEMORY IS CONSULTED FIRST AND IT IS NORMATIVE, NOT A CACHE. Every string keys on (source text, target, glossary version, tier); a hit is returned VERBATIM and never re-translated, which is what makes a locale rebuild idempotent under a non-deterministic model and the bill proportional to what actually changed. Misses go to the engine and are written back at state `machine`. Editing a glossary term changes the key, so a stale rendering can never be served. IT CANNOT TRAMPLE REVIEWED WORK. A write from this route may create an entry or refresh one still at `machine`, and nothing else — a string a human moved to approved or published through the memory review lane survives every rebuild, and comes back here unchanged. The memory is the caller's OWN org's, a separate store per org: the source text you send is customer content and lands nowhere else. Read it back or review it at /v1/translate/memory. `tier` picks the engine and defaults to quality — the model plane, which carries context, terminology and tone, and which bills its own tokens, so nothing is charged twice here. `bulk` is the high-volume engine and is metered HERE, on the source characters that reached it: a fully-cached rebuild reports zero characters and costs zero. BULK NEVER FALLS BACK TO QUALITY — on a deployment that does not serve it the answer is 503 for that tier, so a caller is never quietly served, or charged, at a tier it did not ask for. A bulk request beyond its balance is refused with the nested {\"error\":{\"code\",\"message\"}} body at 402/503. `target` IS CHECKED FOR SHAPE, NOT FOR SUPPORT: anything BCP-47-shaped is accepted (`es`, `pt-BR`), anything else is 400. There is no unsupported-language error — a well-formed tag no engine can actually render is passed straight through, and whatever comes back is what gets stored and returned. `format` (text, html, markdown) tells the engine what markup to preserve; `glossary` fixes terms verbatim. Requires a validated principal — 401 without one, and the org is always that principal's. At most 512 strings per call and 32768 characters per string; an engine that fails or answers a reply that does not cover every input is 502, and nothing is stored.
|
||||
Returns one translation per input string, in input order, each carrying where it sits on the review ladder and whether it came from your memory rather than an engine — plus a usage block of REAL counts (strings, cached, translated, and the source characters that actually reached an engine). Send `text` for one string or `batch` for many, never both. When you name no `source`, the detected one is reported back. THE TRANSLATION MEMORY IS CONSULTED FIRST AND IT IS NORMATIVE, NOT A CACHE. Every string keys on (source text, target, glossary version, tier); a hit is returned VERBATIM and never re-translated, which is what makes a locale rebuild idempotent under a non-deterministic model and the bill proportional to what actually changed. Misses go to the engine and are written back at state `machine`. Editing a glossary term changes the key, so a stale rendering can never be served. IT CANNOT TRAMPLE REVIEWED WORK. A write from this route may create an entry or refresh one still at `machine`, and nothing else — a string a human moved to approved or published through the memory review lane survives every rebuild, and comes back here unchanged. The memory is the caller's OWN org's, a separate store per org: the source text you send is customer content and lands nowhere else. Read it back or review it at /v1/translate/memory. `tier` picks the engine and defaults to quality — the model plane, which carries context, terminology and tone, and which bills its own tokens, so nothing is charged twice here. `bulk` is the high-volume engine and is metered HERE, on the source characters that reached it: a fully-cached rebuild reports zero characters and costs zero. BULK NEVER FALLS BACK TO QUALITY — on a deployment that does not serve it the answer is 503 for that tier, so a caller is never quietly served, or charged, at a tier it did not ask for. A bulk request beyond its balance is refused with the nested {\"error\":{\"code\",\"message\"}} body at 402/503. `target` IS CHECKED FOR SHAPE, NOT FOR SUPPORT: anything BCP-47-shaped is accepted (`es`, `pt-BR`), anything else is 400. There is no unsupported-language error — a well-formed tag no engine can actually render is passed straight through, and whatever comes back is what gets stored and returned. `format` (text, html, markdown) tells the engine what markup to preserve; `glossary` fixes terms verbatim. Requires a validated principal — 401 without one, and the org is always that principal's. At most 512 strings per call and 32768 characters per string; an engine that fails or answers a reply that does not cover every input is 502, and nothing is stored.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -415,9 +415,9 @@ class TranslateApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Translates a string or a batch into one target language.
|
||||
"""Translate a string or a batch into one target language
|
||||
|
||||
Translates a string or a batch into one target language. It returns one translation per input string, in input order, each carrying where it sits on the review ladder and whether it came from your memory rather than an engine — plus a usage block of REAL counts (strings, cached, translated, and the source characters that actually reached an engine). Send `text` for one string or `batch` for many, never both. When you name no `source`, the detected one is reported back. THE TRANSLATION MEMORY IS CONSULTED FIRST AND IT IS NORMATIVE, NOT A CACHE. Every string keys on (source text, target, glossary version, tier); a hit is returned VERBATIM and never re-translated, which is what makes a locale rebuild idempotent under a non-deterministic model and the bill proportional to what actually changed. Misses go to the engine and are written back at state `machine`. Editing a glossary term changes the key, so a stale rendering can never be served. IT CANNOT TRAMPLE REVIEWED WORK. A write from this route may create an entry or refresh one still at `machine`, and nothing else — a string a human moved to approved or published through the memory review lane survives every rebuild, and comes back here unchanged. The memory is the caller's OWN org's, a separate store per org: the source text you send is customer content and lands nowhere else. Read it back or review it at /v1/translate/memory. `tier` picks the engine and defaults to quality — the model plane, which carries context, terminology and tone, and which bills its own tokens, so nothing is charged twice here. `bulk` is the high-volume engine and is metered HERE, on the source characters that reached it: a fully-cached rebuild reports zero characters and costs zero. BULK NEVER FALLS BACK TO QUALITY — on a deployment that does not serve it the answer is 503 for that tier, so a caller is never quietly served, or charged, at a tier it did not ask for. A bulk request beyond its balance is refused with the nested {\"error\":{\"code\",\"message\"}} body at 402/503. `target` IS CHECKED FOR SHAPE, NOT FOR SUPPORT: anything BCP-47-shaped is accepted (`es`, `pt-BR`), anything else is 400. There is no unsupported-language error — a well-formed tag no engine can actually render is passed straight through, and whatever comes back is what gets stored and returned. `format` (text, html, markdown) tells the engine what markup to preserve; `glossary` fixes terms verbatim. Requires a validated principal — 401 without one, and the org is always that principal's. At most 512 strings per call and 32768 characters per string; an engine that fails or answers a reply that does not cover every input is 502, and nothing is stored.
|
||||
Returns one translation per input string, in input order, each carrying where it sits on the review ladder and whether it came from your memory rather than an engine — plus a usage block of REAL counts (strings, cached, translated, and the source characters that actually reached an engine). Send `text` for one string or `batch` for many, never both. When you name no `source`, the detected one is reported back. THE TRANSLATION MEMORY IS CONSULTED FIRST AND IT IS NORMATIVE, NOT A CACHE. Every string keys on (source text, target, glossary version, tier); a hit is returned VERBATIM and never re-translated, which is what makes a locale rebuild idempotent under a non-deterministic model and the bill proportional to what actually changed. Misses go to the engine and are written back at state `machine`. Editing a glossary term changes the key, so a stale rendering can never be served. IT CANNOT TRAMPLE REVIEWED WORK. A write from this route may create an entry or refresh one still at `machine`, and nothing else — a string a human moved to approved or published through the memory review lane survives every rebuild, and comes back here unchanged. The memory is the caller's OWN org's, a separate store per org: the source text you send is customer content and lands nowhere else. Read it back or review it at /v1/translate/memory. `tier` picks the engine and defaults to quality — the model plane, which carries context, terminology and tone, and which bills its own tokens, so nothing is charged twice here. `bulk` is the high-volume engine and is metered HERE, on the source characters that reached it: a fully-cached rebuild reports zero characters and costs zero. BULK NEVER FALLS BACK TO QUALITY — on a deployment that does not serve it the answer is 503 for that tier, so a caller is never quietly served, or charged, at a tier it did not ask for. A bulk request beyond its balance is refused with the nested {\"error\":{\"code\",\"message\"}} body at 402/503. `target` IS CHECKED FOR SHAPE, NOT FOR SUPPORT: anything BCP-47-shaped is accepted (`es`, `pt-BR`), anything else is 400. There is no unsupported-language error — a well-formed tag no engine can actually render is passed straight through, and whatever comes back is what gets stored and returned. `format` (text, html, markdown) tells the engine what markup to preserve; `glossary` fixes terms verbatim. Requires a validated principal — 401 without one, and the org is always that principal's. At most 512 strings per call and 32768 characters per string; an engine that fails or answers a reply that does not cover every input is 502, and nothing is stored.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -477,9 +477,9 @@ class TranslateApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Translates a string or a batch into one target language.
|
||||
"""Translate a string or a batch into one target language
|
||||
|
||||
Translates a string or a batch into one target language. It returns one translation per input string, in input order, each carrying where it sits on the review ladder and whether it came from your memory rather than an engine — plus a usage block of REAL counts (strings, cached, translated, and the source characters that actually reached an engine). Send `text` for one string or `batch` for many, never both. When you name no `source`, the detected one is reported back. THE TRANSLATION MEMORY IS CONSULTED FIRST AND IT IS NORMATIVE, NOT A CACHE. Every string keys on (source text, target, glossary version, tier); a hit is returned VERBATIM and never re-translated, which is what makes a locale rebuild idempotent under a non-deterministic model and the bill proportional to what actually changed. Misses go to the engine and are written back at state `machine`. Editing a glossary term changes the key, so a stale rendering can never be served. IT CANNOT TRAMPLE REVIEWED WORK. A write from this route may create an entry or refresh one still at `machine`, and nothing else — a string a human moved to approved or published through the memory review lane survives every rebuild, and comes back here unchanged. The memory is the caller's OWN org's, a separate store per org: the source text you send is customer content and lands nowhere else. Read it back or review it at /v1/translate/memory. `tier` picks the engine and defaults to quality — the model plane, which carries context, terminology and tone, and which bills its own tokens, so nothing is charged twice here. `bulk` is the high-volume engine and is metered HERE, on the source characters that reached it: a fully-cached rebuild reports zero characters and costs zero. BULK NEVER FALLS BACK TO QUALITY — on a deployment that does not serve it the answer is 503 for that tier, so a caller is never quietly served, or charged, at a tier it did not ask for. A bulk request beyond its balance is refused with the nested {\"error\":{\"code\",\"message\"}} body at 402/503. `target` IS CHECKED FOR SHAPE, NOT FOR SUPPORT: anything BCP-47-shaped is accepted (`es`, `pt-BR`), anything else is 400. There is no unsupported-language error — a well-formed tag no engine can actually render is passed straight through, and whatever comes back is what gets stored and returned. `format` (text, html, markdown) tells the engine what markup to preserve; `glossary` fixes terms verbatim. Requires a validated principal — 401 without one, and the org is always that principal's. At most 512 strings per call and 32768 characters per string; an engine that fails or answers a reply that does not cover every input is 502, and nothing is stored.
|
||||
Returns one translation per input string, in input order, each carrying where it sits on the review ladder and whether it came from your memory rather than an engine — plus a usage block of REAL counts (strings, cached, translated, and the source characters that actually reached an engine). Send `text` for one string or `batch` for many, never both. When you name no `source`, the detected one is reported back. THE TRANSLATION MEMORY IS CONSULTED FIRST AND IT IS NORMATIVE, NOT A CACHE. Every string keys on (source text, target, glossary version, tier); a hit is returned VERBATIM and never re-translated, which is what makes a locale rebuild idempotent under a non-deterministic model and the bill proportional to what actually changed. Misses go to the engine and are written back at state `machine`. Editing a glossary term changes the key, so a stale rendering can never be served. IT CANNOT TRAMPLE REVIEWED WORK. A write from this route may create an entry or refresh one still at `machine`, and nothing else — a string a human moved to approved or published through the memory review lane survives every rebuild, and comes back here unchanged. The memory is the caller's OWN org's, a separate store per org: the source text you send is customer content and lands nowhere else. Read it back or review it at /v1/translate/memory. `tier` picks the engine and defaults to quality — the model plane, which carries context, terminology and tone, and which bills its own tokens, so nothing is charged twice here. `bulk` is the high-volume engine and is metered HERE, on the source characters that reached it: a fully-cached rebuild reports zero characters and costs zero. BULK NEVER FALLS BACK TO QUALITY — on a deployment that does not serve it the answer is 503 for that tier, so a caller is never quietly served, or charged, at a tier it did not ask for. A bulk request beyond its balance is refused with the nested {\"error\":{\"code\",\"message\"}} body at 402/503. `target` IS CHECKED FOR SHAPE, NOT FOR SUPPORT: anything BCP-47-shaped is accepted (`es`, `pt-BR`), anything else is 400. There is no unsupported-language error — a well-formed tag no engine can actually render is passed straight through, and whatever comes back is what gets stored and returned. `format` (text, html, markdown) tells the engine what markup to preserve; `glossary` fixes terms verbatim. Requires a validated principal — 401 without one, and the org is always that principal's. At most 512 strings per call and 32768 characters per string; an engine that fails or answers a reply that does not cover every input is 502, and nothing is stored.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -16,7 +16,6 @@ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from pydantic import StrictStr
|
||||
|
||||
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
|
||||
from hanzoai.cloud.api_response import ApiResponse
|
||||
@@ -39,7 +38,6 @@ class VideosApi:
|
||||
@validate_call
|
||||
def get_v1_videos_by_id(
|
||||
self,
|
||||
id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -57,8 +55,6 @@ class VideosApi:
|
||||
|
||||
Implements GET /v1/videos/{id} — poll a job's status. It authenticates the caller, verifies they OWN the job (the caller's billing subject must equal the job's), performs ONE upstream status poll, and — the first time the job is observed completed — settles the reservation with the actual cost and records the billable usage event (exactly once). Returns the OpenAI-shaped video object.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -82,7 +78,6 @@ class VideosApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_videos_by_id_serialize(
|
||||
id=id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -105,7 +100,6 @@ class VideosApi:
|
||||
@validate_call
|
||||
def get_v1_videos_by_id_with_http_info(
|
||||
self,
|
||||
id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -123,8 +117,6 @@ class VideosApi:
|
||||
|
||||
Implements GET /v1/videos/{id} — poll a job's status. It authenticates the caller, verifies they OWN the job (the caller's billing subject must equal the job's), performs ONE upstream status poll, and — the first time the job is observed completed — settles the reservation with the actual cost and records the billable usage event (exactly once). Returns the OpenAI-shaped video object.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -148,7 +140,6 @@ class VideosApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_videos_by_id_serialize(
|
||||
id=id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -171,7 +162,6 @@ class VideosApi:
|
||||
@validate_call
|
||||
def get_v1_videos_by_id_without_preload_content(
|
||||
self,
|
||||
id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -189,8 +179,6 @@ class VideosApi:
|
||||
|
||||
Implements GET /v1/videos/{id} — poll a job's status. It authenticates the caller, verifies they OWN the job (the caller's billing subject must equal the job's), performs ONE upstream status poll, and — the first time the job is observed completed — settles the reservation with the actual cost and records the billable usage event (exactly once). Returns the OpenAI-shaped video object.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -214,7 +202,6 @@ class VideosApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_videos_by_id_serialize(
|
||||
id=id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -232,7 +219,6 @@ class VideosApi:
|
||||
|
||||
def _get_v1_videos_by_id_serialize(
|
||||
self,
|
||||
id,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -254,8 +240,6 @@ class VideosApi:
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
if id is not None:
|
||||
_path_params['id'] = id
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
@@ -289,7 +273,6 @@ class VideosApi:
|
||||
@validate_call
|
||||
def get_v1_videos_by_id_content(
|
||||
self,
|
||||
id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -307,8 +290,6 @@ class VideosApi:
|
||||
|
||||
Implements GET /v1/videos/{id}/content — download the finished MP4. It authenticates + ownership-checks the caller, then proxies the upstream /content endpoint (bounded by the download concurrency ceiling) and streams the raw video bytes back inline. A successful download also bills the job once (for the client that downloads without first polling to completion) — idempotent with the poll path via job.markCompleted.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -332,7 +313,6 @@ class VideosApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_videos_by_id_content_serialize(
|
||||
id=id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -355,7 +335,6 @@ class VideosApi:
|
||||
@validate_call
|
||||
def get_v1_videos_by_id_content_with_http_info(
|
||||
self,
|
||||
id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -373,8 +352,6 @@ class VideosApi:
|
||||
|
||||
Implements GET /v1/videos/{id}/content — download the finished MP4. It authenticates + ownership-checks the caller, then proxies the upstream /content endpoint (bounded by the download concurrency ceiling) and streams the raw video bytes back inline. A successful download also bills the job once (for the client that downloads without first polling to completion) — idempotent with the poll path via job.markCompleted.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -398,7 +375,6 @@ class VideosApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_videos_by_id_content_serialize(
|
||||
id=id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -421,7 +397,6 @@ class VideosApi:
|
||||
@validate_call
|
||||
def get_v1_videos_by_id_content_without_preload_content(
|
||||
self,
|
||||
id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -439,8 +414,6 @@ class VideosApi:
|
||||
|
||||
Implements GET /v1/videos/{id}/content — download the finished MP4. It authenticates + ownership-checks the caller, then proxies the upstream /content endpoint (bounded by the download concurrency ceiling) and streams the raw video bytes back inline. A successful download also bills the job once (for the client that downloads without first polling to completion) — idempotent with the poll path via job.markCompleted.
|
||||
|
||||
:param id: (required)
|
||||
:type id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -464,7 +437,6 @@ class VideosApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_videos_by_id_content_serialize(
|
||||
id=id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -482,7 +454,6 @@ class VideosApi:
|
||||
|
||||
def _get_v1_videos_by_id_content_serialize(
|
||||
self,
|
||||
id,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -504,8 +475,6 @@ class VideosApi:
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
if id is not None:
|
||||
_path_params['id'] = id
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
|
||||
@@ -16,7 +16,6 @@ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from pydantic import StrictStr
|
||||
|
||||
from hanzoai.cloud.api_client import ApiClient, RequestSerialized
|
||||
from hanzoai.cloud.api_response import ApiResponse
|
||||
@@ -39,7 +38,6 @@ class WecomBotApi:
|
||||
@validate_call
|
||||
def get_v1_wecom_bot_callback_by_botid(
|
||||
self,
|
||||
bot_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -57,8 +55,6 @@ class WecomBotApi:
|
||||
|
||||
Verify WeChat work bot callback URL
|
||||
|
||||
:param bot_id: (required)
|
||||
:type bot_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -82,7 +78,6 @@ class WecomBotApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_wecom_bot_callback_by_botid_serialize(
|
||||
bot_id=bot_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -105,7 +100,6 @@ class WecomBotApi:
|
||||
@validate_call
|
||||
def get_v1_wecom_bot_callback_by_botid_with_http_info(
|
||||
self,
|
||||
bot_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -123,8 +117,6 @@ class WecomBotApi:
|
||||
|
||||
Verify WeChat work bot callback URL
|
||||
|
||||
:param bot_id: (required)
|
||||
:type bot_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -148,7 +140,6 @@ class WecomBotApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_wecom_bot_callback_by_botid_serialize(
|
||||
bot_id=bot_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -171,7 +162,6 @@ class WecomBotApi:
|
||||
@validate_call
|
||||
def get_v1_wecom_bot_callback_by_botid_without_preload_content(
|
||||
self,
|
||||
bot_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -189,8 +179,6 @@ class WecomBotApi:
|
||||
|
||||
Verify WeChat work bot callback URL
|
||||
|
||||
:param bot_id: (required)
|
||||
:type bot_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -214,7 +202,6 @@ class WecomBotApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._get_v1_wecom_bot_callback_by_botid_serialize(
|
||||
bot_id=bot_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -232,7 +219,6 @@ class WecomBotApi:
|
||||
|
||||
def _get_v1_wecom_bot_callback_by_botid_serialize(
|
||||
self,
|
||||
bot_id,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -254,8 +240,6 @@ class WecomBotApi:
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
if bot_id is not None:
|
||||
_path_params['botId'] = bot_id
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
@@ -289,7 +273,6 @@ class WecomBotApi:
|
||||
@validate_call
|
||||
def post_v1_wecom_bot_callback_by_botid(
|
||||
self,
|
||||
bot_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -307,8 +290,6 @@ class WecomBotApi:
|
||||
|
||||
Process WeChat work bot messages
|
||||
|
||||
:param bot_id: (required)
|
||||
:type bot_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -332,7 +313,6 @@ class WecomBotApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_wecom_bot_callback_by_botid_serialize(
|
||||
bot_id=bot_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -355,7 +335,6 @@ class WecomBotApi:
|
||||
@validate_call
|
||||
def post_v1_wecom_bot_callback_by_botid_with_http_info(
|
||||
self,
|
||||
bot_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -373,8 +352,6 @@ class WecomBotApi:
|
||||
|
||||
Process WeChat work bot messages
|
||||
|
||||
:param bot_id: (required)
|
||||
:type bot_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -398,7 +375,6 @@ class WecomBotApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_wecom_bot_callback_by_botid_serialize(
|
||||
bot_id=bot_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -421,7 +397,6 @@ class WecomBotApi:
|
||||
@validate_call
|
||||
def post_v1_wecom_bot_callback_by_botid_without_preload_content(
|
||||
self,
|
||||
bot_id: StrictStr,
|
||||
_request_timeout: Union[
|
||||
None,
|
||||
Annotated[StrictFloat, Field(gt=0)],
|
||||
@@ -439,8 +414,6 @@ class WecomBotApi:
|
||||
|
||||
Process WeChat work bot messages
|
||||
|
||||
:param bot_id: (required)
|
||||
:type bot_id: str
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
timeout. It can also be a pair (tuple) of
|
||||
@@ -464,7 +437,6 @@ class WecomBotApi:
|
||||
""" # noqa: E501
|
||||
|
||||
_param = self._post_v1_wecom_bot_callback_by_botid_serialize(
|
||||
bot_id=bot_id,
|
||||
_request_auth=_request_auth,
|
||||
_content_type=_content_type,
|
||||
_headers=_headers,
|
||||
@@ -482,7 +454,6 @@ class WecomBotApi:
|
||||
|
||||
def _post_v1_wecom_bot_callback_by_botid_serialize(
|
||||
self,
|
||||
bot_id,
|
||||
_request_auth,
|
||||
_content_type,
|
||||
_headers,
|
||||
@@ -504,8 +475,6 @@ class WecomBotApi:
|
||||
_body_params: Optional[bytes] = None
|
||||
|
||||
# process the path parameters
|
||||
if bot_id is not None:
|
||||
_path_params['botId'] = bot_id
|
||||
# process the query parameters
|
||||
# process the header parameters
|
||||
# process the form parameters
|
||||
|
||||
@@ -1056,9 +1056,9 @@ class WorldApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> None:
|
||||
"""Pushes live news refreshes for the caller's org and project as Server-Sent Events.
|
||||
"""Live news refreshes for the caller's org and project, as Server-Sent Events.
|
||||
|
||||
Pushes live news refreshes for the caller's org and project as Server-Sent Events. It holds the connection open as text/event-stream and pushes a `news` event — the same {items:[…]} body GET /v1/world/news answers — each time the caller's (org, project) feed refreshes, with a `: ping` heartbeat comment every 25s. Delivery is best-effort: a slow consumer is dropped on buffer overrun and reconnects, re-fetching GET /v1/world/news, which stays the source of truth. Requires a validated principal; 403 without one. Org-scoped fail-closed: the bus filters on org and the loop drops any update whose Project differs, so a subscriber only ever receives its own tenant+project. It streams over both the plain HTTP listener and the ZAP machine transport with no transport-specific code (zip SendStreamWriter is transport-agnostic). org and project are captured (both cloned by scope) BEFORE SendStreamWriter, so the loop never touches the request Ctx after the handler returns — client-gone is a flush error, bounded by the heartbeat.
|
||||
Holds the connection open as text/event-stream and pushes a `news` event — the same {items:[…]} body GET /v1/world/news answers — each time the caller's (org, project) feed refreshes, with a `: ping` heartbeat comment every 25s. Delivery is best-effort: a slow consumer is dropped on buffer overrun and reconnects, re-fetching GET /v1/world/news, which stays the source of truth. Requires a validated principal; 403 without one.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1118,9 +1118,9 @@ class WorldApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> ApiResponse[None]:
|
||||
"""Pushes live news refreshes for the caller's org and project as Server-Sent Events.
|
||||
"""Live news refreshes for the caller's org and project, as Server-Sent Events.
|
||||
|
||||
Pushes live news refreshes for the caller's org and project as Server-Sent Events. It holds the connection open as text/event-stream and pushes a `news` event — the same {items:[…]} body GET /v1/world/news answers — each time the caller's (org, project) feed refreshes, with a `: ping` heartbeat comment every 25s. Delivery is best-effort: a slow consumer is dropped on buffer overrun and reconnects, re-fetching GET /v1/world/news, which stays the source of truth. Requires a validated principal; 403 without one. Org-scoped fail-closed: the bus filters on org and the loop drops any update whose Project differs, so a subscriber only ever receives its own tenant+project. It streams over both the plain HTTP listener and the ZAP machine transport with no transport-specific code (zip SendStreamWriter is transport-agnostic). org and project are captured (both cloned by scope) BEFORE SendStreamWriter, so the loop never touches the request Ctx after the handler returns — client-gone is a flush error, bounded by the heartbeat.
|
||||
Holds the connection open as text/event-stream and pushes a `news` event — the same {items:[…]} body GET /v1/world/news answers — each time the caller's (org, project) feed refreshes, with a `: ping` heartbeat comment every 25s. Delivery is best-effort: a slow consumer is dropped on buffer overrun and reconnects, re-fetching GET /v1/world/news, which stays the source of truth. Requires a validated principal; 403 without one.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
@@ -1180,9 +1180,9 @@ class WorldApi:
|
||||
_headers: Optional[Dict[StrictStr, Any]] = None,
|
||||
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
||||
) -> RESTResponseType:
|
||||
"""Pushes live news refreshes for the caller's org and project as Server-Sent Events.
|
||||
"""Live news refreshes for the caller's org and project, as Server-Sent Events.
|
||||
|
||||
Pushes live news refreshes for the caller's org and project as Server-Sent Events. It holds the connection open as text/event-stream and pushes a `news` event — the same {items:[…]} body GET /v1/world/news answers — each time the caller's (org, project) feed refreshes, with a `: ping` heartbeat comment every 25s. Delivery is best-effort: a slow consumer is dropped on buffer overrun and reconnects, re-fetching GET /v1/world/news, which stays the source of truth. Requires a validated principal; 403 without one. Org-scoped fail-closed: the bus filters on org and the loop drops any update whose Project differs, so a subscriber only ever receives its own tenant+project. It streams over both the plain HTTP listener and the ZAP machine transport with no transport-specific code (zip SendStreamWriter is transport-agnostic). org and project are captured (both cloned by scope) BEFORE SendStreamWriter, so the loop never touches the request Ctx after the handler returns — client-gone is a flush error, bounded by the heartbeat.
|
||||
Holds the connection open as text/event-stream and pushes a `news` event — the same {items:[…]} body GET /v1/world/news answers — each time the caller's (org, project) feed refreshes, with a `: ping` heartbeat comment every 25s. Delivery is best-effort: a slow consumer is dropped on buffer overrun and reconnects, re-fetching GET /v1/world/news, which stays the source of truth. Requires a validated principal; 403 without one.
|
||||
|
||||
:param _request_timeout: timeout setting for this request. If one
|
||||
number provided, it will be total request
|
||||
|
||||
@@ -35,6 +35,7 @@ from hanzoai.cloud.models.action_record import ActionRecord
|
||||
from hanzoai.cloud.models.actions_view import ActionsView
|
||||
from hanzoai.cloud.models.activation_req import ActivationReq
|
||||
from hanzoai.cloud.models.activation_set import ActivationSet
|
||||
from hanzoai.cloud.models.activity import Activity
|
||||
from hanzoai.cloud.models.activity_feed import ActivityFeed
|
||||
from hanzoai.cloud.models.activity_out import ActivityOut
|
||||
from hanzoai.cloud.models.activity_point import ActivityPoint
|
||||
@@ -70,9 +71,9 @@ from hanzoai.cloud.models.affiliate_standing import AffiliateStanding
|
||||
from hanzoai.cloud.models.agent_binding import AgentBinding
|
||||
from hanzoai.cloud.models.agent_detail import AgentDetail
|
||||
from hanzoai.cloud.models.agent_list import AgentList
|
||||
from hanzoai.cloud.models.agent_mcp_tools import AgentMcpTools
|
||||
from hanzoai.cloud.models.agent_run_view import AgentRunView
|
||||
from hanzoai.cloud.models.agent_view import AgentView
|
||||
from hanzoai.cloud.models.ai_envelope import AiEnvelope
|
||||
from hanzoai.cloud.models.ai_mcp_app import AiMCPApp
|
||||
from hanzoai.cloud.models.ai_mcp_surface import AiMCPSurface
|
||||
from hanzoai.cloud.models.ai_metrics import AiMetrics
|
||||
@@ -101,7 +102,10 @@ from hanzoai.cloud.models.api_key import ApiKey
|
||||
from hanzoai.cloud.models.api_key_list import ApiKeyList
|
||||
from hanzoai.cloud.models.app_view import AppView
|
||||
from hanzoai.cloud.models.application import Application
|
||||
from hanzoai.cloud.models.application_config_option import ApplicationConfigOption
|
||||
from hanzoai.cloud.models.application_event import ApplicationEvent
|
||||
from hanzoai.cloud.models.application_list import ApplicationList
|
||||
from hanzoai.cloud.models.application_view import ApplicationView
|
||||
from hanzoai.cloud.models.apply_request import ApplyRequest
|
||||
from hanzoai.cloud.models.approval import Approval
|
||||
from hanzoai.cloud.models.approve_pairing_in import ApprovePairingIn
|
||||
@@ -133,6 +137,7 @@ from hanzoai.cloud.models.argo_sync_status import ArgoSyncStatus
|
||||
from hanzoai.cloud.models.argo_sync_windows import ArgoSyncWindows
|
||||
from hanzoai.cloud.models.argo_tree import ArgoTree
|
||||
from hanzoai.cloud.models.arm import Arm
|
||||
from hanzoai.cloud.models.article import Article
|
||||
from hanzoai.cloud.models.artifact import Artifact
|
||||
from hanzoai.cloud.models.artifact_out import ArtifactOut
|
||||
from hanzoai.cloud.models.artifacts_out import ArtifactsOut
|
||||
@@ -140,6 +145,7 @@ from hanzoai.cloud.models.ask_answer import AskAnswer
|
||||
from hanzoai.cloud.models.ask_post_in import AskPostIn
|
||||
from hanzoai.cloud.models.ask_request import AskRequest
|
||||
from hanzoai.cloud.models.ask_response import AskResponse
|
||||
from hanzoai.cloud.models.asset import Asset
|
||||
from hanzoai.cloud.models.assignment import Assignment
|
||||
from hanzoai.cloud.models.attempt import Attempt
|
||||
from hanzoai.cloud.models.attribute_request import AttributeRequest
|
||||
@@ -147,6 +153,7 @@ from hanzoai.cloud.models.attribution import Attribution
|
||||
from hanzoai.cloud.models.audience import Audience
|
||||
from hanzoai.cloud.models.audience_list import AudienceList
|
||||
from hanzoai.cloud.models.audience_preview import AudiencePreview
|
||||
from hanzoai.cloud.models.audit import Audit
|
||||
from hanzoai.cloud.models.audit_list import AuditList
|
||||
from hanzoai.cloud.models.author_data import AuthorData
|
||||
from hanzoai.cloud.models.author_program_summary import AuthorProgramSummary
|
||||
@@ -184,6 +191,7 @@ from hanzoai.cloud.models.bind_agent_req import BindAgentReq
|
||||
from hanzoai.cloud.models.binding_list import BindingList
|
||||
from hanzoai.cloud.models.blob import Blob
|
||||
from hanzoai.cloud.models.blob_json import BlobJSON
|
||||
from hanzoai.cloud.models.block import Block
|
||||
from hanzoai.cloud.models.blog import Blog
|
||||
from hanzoai.cloud.models.blueprint import Blueprint
|
||||
from hanzoai.cloud.models.blueprint_counts import BlueprintCounts
|
||||
@@ -297,6 +305,7 @@ from hanzoai.cloud.models.channel_metric import ChannelMetric
|
||||
from hanzoai.cloud.models.channel_result import ChannelResult
|
||||
from hanzoai.cloud.models.channel_spec import ChannelSpec
|
||||
from hanzoai.cloud.models.channel_view import ChannelView
|
||||
from hanzoai.cloud.models.chat import Chat
|
||||
from hanzoai.cloud.models.chat_channels import ChatChannels
|
||||
from hanzoai.cloud.models.chat_request import ChatRequest
|
||||
from hanzoai.cloud.models.chat_response import ChatResponse
|
||||
@@ -344,6 +353,7 @@ from hanzoai.cloud.models.conn_view import ConnView
|
||||
from hanzoai.cloud.models.connect_in import ConnectIn
|
||||
from hanzoai.cloud.models.connect_out import ConnectOut
|
||||
from hanzoai.cloud.models.connect_request import ConnectRequest
|
||||
from hanzoai.cloud.models.connection import Connection
|
||||
from hanzoai.cloud.models.connection_out import ConnectionOut
|
||||
from hanzoai.cloud.models.connection_view import ConnectionView
|
||||
from hanzoai.cloud.models.connector_action import ConnectorAction
|
||||
@@ -367,6 +377,7 @@ from hanzoai.cloud.models.contact import Contact
|
||||
from hanzoai.cloud.models.contact_list import ContactList
|
||||
from hanzoai.cloud.models.contact_req import ContactReq
|
||||
from hanzoai.cloud.models.contacts import Contacts
|
||||
from hanzoai.cloud.models.container_detail import ContainerDetail
|
||||
from hanzoai.cloud.models.context_bundle import ContextBundle
|
||||
from hanzoai.cloud.models.context_in import ContextIn
|
||||
from hanzoai.cloud.models.control_command_view import ControlCommandView
|
||||
@@ -441,12 +452,14 @@ from hanzoai.cloud.models.def_row import DefRow
|
||||
from hanzoai.cloud.models.definition import Definition
|
||||
from hanzoai.cloud.models.defs_out import DefsOut
|
||||
from hanzoai.cloud.models.deleted_out import DeletedOut
|
||||
from hanzoai.cloud.models.delivery import Delivery
|
||||
from hanzoai.cloud.models.delivery_list import DeliveryList
|
||||
from hanzoai.cloud.models.delivery_row import DeliveryRow
|
||||
from hanzoai.cloud.models.deploy_logs import DeployLogs
|
||||
from hanzoai.cloud.models.deploy_record import DeployRecord
|
||||
from hanzoai.cloud.models.deploy_req import DeployReq
|
||||
from hanzoai.cloud.models.deploy_request import DeployRequest
|
||||
from hanzoai.cloud.models.deployment_detail import DeploymentDetail
|
||||
from hanzoai.cloud.models.deployment_view import DeploymentView
|
||||
from hanzoai.cloud.models.destination_disconnected import DestinationDisconnected
|
||||
from hanzoai.cloud.models.destination_field import DestinationField
|
||||
@@ -503,6 +516,8 @@ from hanzoai.cloud.models.enrolment import Enrolment
|
||||
from hanzoai.cloud.models.entitlements_view import EntitlementsView
|
||||
from hanzoai.cloud.models.entry import Entry
|
||||
from hanzoai.cloud.models.env_var_json import EnvVarJSON
|
||||
from hanzoai.cloud.models.env_variable import EnvVariable
|
||||
from hanzoai.cloud.models.envelope import Envelope
|
||||
from hanzoai.cloud.models.environment_board import EnvironmentBoard
|
||||
from hanzoai.cloud.models.environment_row import EnvironmentRow
|
||||
from hanzoai.cloud.models.error_list import ErrorList
|
||||
@@ -515,6 +530,7 @@ from hanzoai.cloud.models.evaluator_view import EvaluatorView
|
||||
from hanzoai.cloud.models.event import Event
|
||||
from hanzoai.cloud.models.event_list import EventList
|
||||
from hanzoai.cloud.models.event_view import EventView
|
||||
from hanzoai.cloud.models.example_question import ExampleQuestion
|
||||
from hanzoai.cloud.models.exception import Exception
|
||||
from hanzoai.cloud.models.experiment import Experiment
|
||||
from hanzoai.cloud.models.experiment_list import ExperimentList
|
||||
@@ -522,6 +538,7 @@ from hanzoai.cloud.models.experiments_out import ExperimentsOut
|
||||
from hanzoai.cloud.models.extracted import Extracted
|
||||
from hanzoai.cloud.models.fetch_query import FetchQuery
|
||||
from hanzoai.cloud.models.figure import Figure
|
||||
from hanzoai.cloud.models.file import File
|
||||
from hanzoai.cloud.models.file_content import FileContent
|
||||
from hanzoai.cloud.models.file_input import FileInput
|
||||
from hanzoai.cloud.models.file_json import FileJSON
|
||||
@@ -564,6 +581,8 @@ from hanzoai.cloud.models.flow_trigger import FlowTrigger
|
||||
from hanzoai.cloud.models.flow_update import FlowUpdate
|
||||
from hanzoai.cloud.models.flow_version import FlowVersion
|
||||
from hanzoai.cloud.models.fn_list import FnList
|
||||
from hanzoai.cloud.models.form import Form
|
||||
from hanzoai.cloud.models.form_item import FormItem
|
||||
from hanzoai.cloud.models.formation import Formation
|
||||
from hanzoai.cloud.models.formation_view import FormationView
|
||||
from hanzoai.cloud.models.founder import Founder
|
||||
@@ -580,6 +599,30 @@ from hanzoai.cloud.models.generate_input import GenerateInput
|
||||
from hanzoai.cloud.models.generate_request import GenerateRequest
|
||||
from hanzoai.cloud.models.generate_result import GenerateResult
|
||||
from hanzoai.cloud.models.genesis import Genesis
|
||||
from hanzoai.cloud.models.get_v1_ai_activities200_response import GetV1AiActivities200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_articles200_response import GetV1AiArticles200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_assets200_response import GetV1AiAssets200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_chats200_response import GetV1AiChats200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_deployments200_response import GetV1AiDeployments200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_files200_response import GetV1AiFiles200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_forms200_response import GetV1AiForms200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_graphs200_response import GetV1AiGraphs200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_messages200_response import GetV1AiMessages200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_nodes200_response import GetV1AiNodes200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_providers200_response import GetV1AiProviders200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_records200_response import GetV1AiRecords200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_remote_connections200_response import GetV1AiRemoteConnections200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_routes200_response import GetV1AiRoutes200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_scales200_response import GetV1AiScales200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_scans200_response import GetV1AiScans200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_signin_sessions200_response import GetV1AiSigninSessions200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_stores200_response import GetV1AiStores200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_tasks200_response import GetV1AiTasks200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_templates200_response import GetV1AiTemplates200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_usages200_response import GetV1AiUsages200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_vectors200_response import GetV1AiVectors200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_videos200_response import GetV1AiVideos200Response
|
||||
from hanzoai.cloud.models.get_v1_ai_workflows200_response import GetV1AiWorkflows200Response
|
||||
from hanzoai.cloud.models.git_ops_app import GitOpsApp
|
||||
from hanzoai.cloud.models.git_ops_deploy import GitOpsDeploy
|
||||
from hanzoai.cloud.models.git_ops_operation import GitOpsOperation
|
||||
@@ -590,6 +633,8 @@ from hanzoai.cloud.models.github_backfill_in import GithubBackfillIn
|
||||
from hanzoai.cloud.models.github_backfill_result import GithubBackfillResult
|
||||
from hanzoai.cloud.models.github_claim_in import GithubClaimIn
|
||||
from hanzoai.cloud.models.github_claim_out import GithubClaimOut
|
||||
from hanzoai.cloud.models.github_fork_out import GithubForkOut
|
||||
from hanzoai.cloud.models.github_fork_req import GithubForkReq
|
||||
from hanzoai.cloud.models.github_import_in import GithubImportIn
|
||||
from hanzoai.cloud.models.github_import_out import GithubImportOut
|
||||
from hanzoai.cloud.models.github_installation_view import GithubInstallationView
|
||||
@@ -603,6 +648,9 @@ from hanzoai.cloud.models.github_pages_updated_out import GithubPagesUpdatedOut
|
||||
from hanzoai.cloud.models.github_pages_view import GithubPagesView
|
||||
from hanzoai.cloud.models.github_repo_view import GithubRepoView
|
||||
from hanzoai.cloud.models.github_repos_out import GithubReposOut
|
||||
from hanzoai.cloud.models.github_search_hit import GithubSearchHit
|
||||
from hanzoai.cloud.models.github_search_out import GithubSearchOut
|
||||
from hanzoai.cloud.models.github_search_req import GithubSearchReq
|
||||
from hanzoai.cloud.models.gpu_alert_list import GpuAlertList
|
||||
from hanzoai.cloud.models.gpu_job import GpuJob
|
||||
from hanzoai.cloud.models.gpu_list import GpuList
|
||||
@@ -613,6 +661,7 @@ from hanzoai.cloud.models.grant_request import GrantRequest
|
||||
from hanzoai.cloud.models.grant_result import GrantResult
|
||||
from hanzoai.cloud.models.grant_row import GrantRow
|
||||
from hanzoai.cloud.models.grants_out import GrantsOut
|
||||
from hanzoai.cloud.models.graph import Graph
|
||||
from hanzoai.cloud.models.graph_edge import GraphEdge
|
||||
from hanzoai.cloud.models.graph_node import GraphNode
|
||||
from hanzoai.cloud.models.graph_out import GraphOut
|
||||
@@ -780,6 +829,8 @@ from hanzoai.cloud.models.invoice_row import InvoiceRow
|
||||
from hanzoai.cloud.models.invoices_out import InvoicesOut
|
||||
from hanzoai.cloud.models.invoke_req import InvokeReq
|
||||
from hanzoai.cloud.models.issue_edit import IssueEdit
|
||||
from hanzoai.cloud.models.issue_hit import IssueHit
|
||||
from hanzoai.cloud.models.issue_hits import IssueHits
|
||||
from hanzoai.cloud.models.issue_request import IssueRequest
|
||||
from hanzoai.cloud.models.issue_response import IssueResponse
|
||||
from hanzoai.cloud.models.issue_view import IssueView
|
||||
@@ -811,6 +862,7 @@ from hanzoai.cloud.models.kyc_session import KycSession
|
||||
from hanzoai.cloud.models.kyc_start_out import KycStartOut
|
||||
from hanzoai.cloud.models.llm import LLM
|
||||
from hanzoai.cloud.models.llm_overview import LLMOverview
|
||||
from hanzoai.cloud.models.label import Label
|
||||
from hanzoai.cloud.models.last_event_view import LastEventView
|
||||
from hanzoai.cloud.models.latency_stat import LatencyStat
|
||||
from hanzoai.cloud.models.lb_list import LbList
|
||||
@@ -847,6 +899,7 @@ from hanzoai.cloud.models.mcp_listing import MCPListing
|
||||
from hanzoai.cloud.models.mcp_package import MCPPackage
|
||||
from hanzoai.cloud.models.mcp_remote import MCPRemote
|
||||
from hanzoai.cloud.models.mcp_server import MCPServer
|
||||
from hanzoai.cloud.models.machine import Machine
|
||||
from hanzoai.cloud.models.machine_list import MachineList
|
||||
from hanzoai.cloud.models.machine_view import MachineView
|
||||
from hanzoai.cloud.models.make_in import MakeIn
|
||||
@@ -881,8 +934,11 @@ from hanzoai.cloud.models.mirror_target_view import MirrorTargetView
|
||||
from hanzoai.cloud.models.ml_resource import MlResource
|
||||
from hanzoai.cloud.models.ml_resource_list import MlResourceList
|
||||
from hanzoai.cloud.models.model_field import ModelField
|
||||
from hanzoai.cloud.models.model_route import ModelRoute
|
||||
from hanzoai.cloud.models.model_row import ModelRow
|
||||
from hanzoai.cloud.models.model_search_result import ModelSearchResult
|
||||
from hanzoai.cloud.models.model_stat import ModelStat
|
||||
from hanzoai.cloud.models.model_tool_call import ModelToolCall
|
||||
from hanzoai.cloud.models.module_info import ModuleInfo
|
||||
from hanzoai.cloud.models.module_list import ModuleList
|
||||
from hanzoai.cloud.models.module_state import ModuleState
|
||||
@@ -1726,6 +1782,7 @@ from hanzoai.cloud.models.overview import Overview
|
||||
from hanzoai.cloud.models.overview_data import OverviewData
|
||||
from hanzoai.cloud.models.overview_out import OverviewOut
|
||||
from hanzoai.cloud.models.overview_view import OverviewView
|
||||
from hanzoai.cloud.models.page import Page
|
||||
from hanzoai.cloud.models.pages_build_config import PagesBuildConfig
|
||||
from hanzoai.cloud.models.pages_d1_binding import PagesD1Binding
|
||||
from hanzoai.cloud.models.pages_deploy import PagesDeploy
|
||||
@@ -1739,6 +1796,7 @@ from hanzoai.cloud.models.pairing import Pairing
|
||||
from hanzoai.cloud.models.pairing_approved import PairingApproved
|
||||
from hanzoai.cloud.models.pairing_queue import PairingQueue
|
||||
from hanzoai.cloud.models.pairing_view import PairingView
|
||||
from hanzoai.cloud.models.patch import Patch
|
||||
from hanzoai.cloud.models.patch_application_in import PatchApplicationIn
|
||||
from hanzoai.cloud.models.patch_flow_in import PatchFlowIn
|
||||
from hanzoai.cloud.models.patch_in import PatchIn
|
||||
@@ -1785,6 +1843,29 @@ from hanzoai.cloud.models.pool_scale import PoolScale
|
||||
from hanzoai.cloud.models.populated_flow import PopulatedFlow
|
||||
from hanzoai.cloud.models.position import Position
|
||||
from hanzoai.cloud.models.post_list import PostList
|
||||
from hanzoai.cloud.models.post_v1_ai_articles200_response import PostV1AiArticles200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_assets200_response import PostV1AiAssets200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_chats200_response import PostV1AiChats200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_deployments200_response import PostV1AiDeployments200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_files200_response import PostV1AiFiles200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_forms200_response import PostV1AiForms200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_graphs200_response import PostV1AiGraphs200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_messages200_response import PostV1AiMessages200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_nodes200_response import PostV1AiNodes200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_providers200_response import PostV1AiProviders200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_records200_response import PostV1AiRecords200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_remote_connections200_response import PostV1AiRemoteConnections200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_routes200_response import PostV1AiRoutes200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_scales200_response import PostV1AiScales200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_scans200_response import PostV1AiScans200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_signin_sessions200_response import PostV1AiSigninSessions200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_stores200_response import PostV1AiStores200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_tasks200_response import PostV1AiTasks200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_templates200_response import PostV1AiTemplates200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_tree_files200_response import PostV1AiTreeFiles200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_vectors200_response import PostV1AiVectors200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_videos200_response import PostV1AiVideos200Response
|
||||
from hanzoai.cloud.models.post_v1_ai_workflows200_response import PostV1AiWorkflows200Response
|
||||
from hanzoai.cloud.models.post_v1_event_request import PostV1EventRequest
|
||||
from hanzoai.cloud.models.posting import Posting
|
||||
from hanzoai.cloud.models.prefs_view import PrefsView
|
||||
@@ -1845,6 +1926,8 @@ from hanzoai.cloud.models.prompt_list import PromptList
|
||||
from hanzoai.cloud.models.prompt_meta import PromptMeta
|
||||
from hanzoai.cloud.models.prompt_req import PromptReq
|
||||
from hanzoai.cloud.models.prop_spec import PropSpec
|
||||
from hanzoai.cloud.models.properties import Properties
|
||||
from hanzoai.cloud.models.provider import Provider
|
||||
from hanzoai.cloud.models.provider_breakdown import ProviderBreakdown
|
||||
from hanzoai.cloud.models.provider_card import ProviderCard
|
||||
from hanzoai.cloud.models.provider_credit import ProviderCredit
|
||||
@@ -1937,7 +2020,9 @@ from hanzoai.cloud.models.release_list import ReleaseList
|
||||
from hanzoai.cloud.models.release_row import ReleaseRow
|
||||
from hanzoai.cloud.models.release_state import ReleaseState
|
||||
from hanzoai.cloud.models.reload_in import ReloadIn
|
||||
from hanzoai.cloud.models.remark import Remark
|
||||
from hanzoai.cloud.models.remittance import Remittance
|
||||
from hanzoai.cloud.models.remote_app import RemoteApp
|
||||
from hanzoai.cloud.models.renew_req import RenewReq
|
||||
from hanzoai.cloud.models.renew_result import RenewResult
|
||||
from hanzoai.cloud.models.replace_kit_in import ReplaceKitIn
|
||||
@@ -1954,6 +2039,8 @@ from hanzoai.cloud.models.research_artifact import ResearchArtifact
|
||||
from hanzoai.cloud.models.research_totals import ResearchTotals
|
||||
from hanzoai.cloud.models.resolve_reference_in import ResolveReferenceIn
|
||||
from hanzoai.cloud.models.resolve_reference_out import ResolveReferenceOut
|
||||
from hanzoai.cloud.models.resource_metrics import ResourceMetrics
|
||||
from hanzoai.cloud.models.resource_requests import ResourceRequests
|
||||
from hanzoai.cloud.models.resource_usage import ResourceUsage
|
||||
from hanzoai.cloud.models.restart_ref import RestartRef
|
||||
from hanzoai.cloud.models.restarted import Restarted
|
||||
@@ -2071,6 +2158,7 @@ from hanzoai.cloud.models.sample_view import SampleView
|
||||
from hanzoai.cloud.models.sbom_health import SbomHealth
|
||||
from hanzoai.cloud.models.sbom_ingest import SbomIngest
|
||||
from hanzoai.cloud.models.sbom_ingested import SbomIngested
|
||||
from hanzoai.cloud.models.scale import Scale
|
||||
from hanzoai.cloud.models.scale_in import ScaleIn
|
||||
from hanzoai.cloud.models.scan import Scan
|
||||
from hanzoai.cloud.models.scan_detail import ScanDetail
|
||||
@@ -2108,13 +2196,16 @@ from hanzoai.cloud.models.sequences import Sequences
|
||||
from hanzoai.cloud.models.series_line import SeriesLine
|
||||
from hanzoai.cloud.models.series_point import SeriesPoint
|
||||
from hanzoai.cloud.models.service import Service
|
||||
from hanzoai.cloud.models.service_detail import ServiceDetail
|
||||
from hanzoai.cloud.models.service_input import ServiceInput
|
||||
from hanzoai.cloud.models.service_list import ServiceList
|
||||
from hanzoai.cloud.models.service_mode_in import ServiceModeIn
|
||||
from hanzoai.cloud.models.service_one import ServiceOne
|
||||
from hanzoai.cloud.models.service_out import ServiceOut
|
||||
from hanzoai.cloud.models.service_port import ServicePort
|
||||
from hanzoai.cloud.models.service_view import ServiceView
|
||||
from hanzoai.cloud.models.services_out import ServicesOut
|
||||
from hanzoai.cloud.models.session import Session
|
||||
from hanzoai.cloud.models.session_detail import SessionDetail
|
||||
from hanzoai.cloud.models.session_list import SessionList
|
||||
from hanzoai.cloud.models.session_user import SessionUser
|
||||
@@ -2176,6 +2267,7 @@ from hanzoai.cloud.models.storage_alert import StorageAlert
|
||||
from hanzoai.cloud.models.storage_fleet import StorageFleet
|
||||
from hanzoai.cloud.models.storage_snapshot import StorageSnapshot
|
||||
from hanzoai.cloud.models.storage_volume import StorageVolume
|
||||
from hanzoai.cloud.models.store import Store
|
||||
from hanzoai.cloud.models.storefront_result import StorefrontResult
|
||||
from hanzoai.cloud.models.strategy import Strategy
|
||||
from hanzoai.cloud.models.strategy_view import StrategyView
|
||||
@@ -2231,8 +2323,10 @@ from hanzoai.cloud.models.target_deleted import TargetDeleted
|
||||
from hanzoai.cloud.models.target_list import TargetList
|
||||
from hanzoai.cloud.models.target_req import TargetReq
|
||||
from hanzoai.cloud.models.target_view import TargetView
|
||||
from hanzoai.cloud.models.task import Task
|
||||
from hanzoai.cloud.models.template import Template
|
||||
from hanzoai.cloud.models.template_catalog import TemplateCatalog
|
||||
from hanzoai.cloud.models.template_config_option import TemplateConfigOption
|
||||
from hanzoai.cloud.models.template_override import TemplateOverride
|
||||
from hanzoai.cloud.models.template_reply import TemplateReply
|
||||
from hanzoai.cloud.models.template_view import TemplateView
|
||||
@@ -2260,6 +2354,7 @@ from hanzoai.cloud.models.transition_result import TransitionResult
|
||||
from hanzoai.cloud.models.treasury_report import TreasuryReport
|
||||
from hanzoai.cloud.models.tree_entry import TreeEntry
|
||||
from hanzoai.cloud.models.tree_entry_json import TreeEntryJSON
|
||||
from hanzoai.cloud.models.tree_file import TreeFile
|
||||
from hanzoai.cloud.models.tree_json import TreeJSON
|
||||
from hanzoai.cloud.models.tree_node import TreeNode
|
||||
from hanzoai.cloud.models.trial import Trial
|
||||
@@ -2275,6 +2370,7 @@ from hanzoai.cloud.models.unsubscribed import Unsubscribed
|
||||
from hanzoai.cloud.models.update_agent_in import UpdateAgentIn
|
||||
from hanzoai.cloud.models.update_campaign_in import UpdateCampaignIn
|
||||
from hanzoai.cloud.models.update_endpoint_in import UpdateEndpointIn
|
||||
from hanzoai.cloud.models.upstream import Upstream
|
||||
from hanzoai.cloud.models.usage import Usage
|
||||
from hanzoai.cloud.models.usage_analytics_access import UsageAnalyticsAccess
|
||||
from hanzoai.cloud.models.usage_analytics_grant import UsageAnalyticsGrant
|
||||
@@ -2299,8 +2395,10 @@ from hanzoai.cloud.models.users_out import UsersOut
|
||||
from hanzoai.cloud.models.validator_claim import ValidatorClaim
|
||||
from hanzoai.cloud.models.validator_list import ValidatorList
|
||||
from hanzoai.cloud.models.variant import Variant
|
||||
from hanzoai.cloud.models.vector import Vector
|
||||
from hanzoai.cloud.models.vector_collection import VectorCollection
|
||||
from hanzoai.cloud.models.vector_collection_list import VectorCollectionList
|
||||
from hanzoai.cloud.models.vector_score import VectorScore
|
||||
from hanzoai.cloud.models.vector_stats import VectorStats
|
||||
from hanzoai.cloud.models.vendor import Vendor
|
||||
from hanzoai.cloud.models.vendor_row import VendorRow
|
||||
@@ -2317,6 +2415,7 @@ from hanzoai.cloud.models.version_message import VersionMessage
|
||||
from hanzoai.cloud.models.version_meta import VersionMeta
|
||||
from hanzoai.cloud.models.version_page import VersionPage
|
||||
from hanzoai.cloud.models.version_view import VersionView
|
||||
from hanzoai.cloud.models.video import Video
|
||||
from hanzoai.cloud.models.volume import Volume
|
||||
from hanzoai.cloud.models.volume_in import VolumeIn
|
||||
from hanzoai.cloud.models.volume_snapshot_out import VolumeSnapshotOut
|
||||
@@ -2339,6 +2438,7 @@ from hanzoai.cloud.models.web_search_results import WebSearchResults
|
||||
from hanzoai.cloud.models.wire import Wire
|
||||
from hanzoai.cloud.models.worker_list import WorkerList
|
||||
from hanzoai.cloud.models.worker_script_put import WorkerScriptPut
|
||||
from hanzoai.cloud.models.workflow import Workflow
|
||||
from hanzoai.cloud.models.world_index import WorldIndex
|
||||
from hanzoai.cloud.models.world_wire import WorldWire
|
||||
from hanzoai.cloud.models.write_in import WriteIn
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Activity(BaseModel):
|
||||
"""
|
||||
Activity
|
||||
""" # noqa: E501
|
||||
field_count: Optional[Dict[str, StrictInt]] = Field(default=None, alias="FieldCount")
|
||||
var_date: Optional[StrictStr] = Field(default=None, alias="date")
|
||||
__properties: ClassVar[List[str]] = ["FieldCount", "date"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Activity from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Activity from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"FieldCount": obj.get("FieldCount"),
|
||||
"date": obj.get("date")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class AgentMcpTools(BaseModel):
|
||||
"""
|
||||
AgentMcpTools
|
||||
""" # noqa: E501
|
||||
is_enabled: Optional[StrictBool] = Field(default=None, alias="isEnabled")
|
||||
server_name: Optional[StrictStr] = Field(default=None, alias="serverName")
|
||||
tools: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["isEnabled", "serverName", "tools"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of AgentMcpTools from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of AgentMcpTools from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"isEnabled": obj.get("isEnabled"),
|
||||
"serverName": obj.get("serverName"),
|
||||
"tools": obj.get("tools")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class ApplicationConfigOption(BaseModel):
|
||||
"""
|
||||
ApplicationConfigOption
|
||||
""" # noqa: E501
|
||||
parameter: Optional[StrictStr] = None
|
||||
setting: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["parameter", "setting"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of ApplicationConfigOption from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of ApplicationConfigOption from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"parameter": obj.get("parameter"),
|
||||
"setting": obj.get("setting")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class ApplicationEvent(BaseModel):
|
||||
"""
|
||||
ApplicationEvent
|
||||
""" # noqa: E501
|
||||
count: Optional[StrictInt] = None
|
||||
first_time: Optional[StrictStr] = Field(default=None, alias="firstTime")
|
||||
involved_object: Optional[StrictStr] = Field(default=None, alias="involvedObject")
|
||||
last_time: Optional[StrictStr] = Field(default=None, alias="lastTime")
|
||||
message: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
reason: Optional[StrictStr] = None
|
||||
source: Optional[StrictStr] = None
|
||||
type: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["count", "firstTime", "involvedObject", "lastTime", "message", "name", "reason", "source", "type"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of ApplicationEvent from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of ApplicationEvent from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"count": obj.get("count"),
|
||||
"firstTime": obj.get("firstTime"),
|
||||
"involvedObject": obj.get("involvedObject"),
|
||||
"lastTime": obj.get("lastTime"),
|
||||
"message": obj.get("message"),
|
||||
"name": obj.get("name"),
|
||||
"reason": obj.get("reason"),
|
||||
"source": obj.get("source"),
|
||||
"type": obj.get("type")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.application_event import ApplicationEvent
|
||||
from hanzoai.cloud.models.deployment_detail import DeploymentDetail
|
||||
from hanzoai.cloud.models.env_variable import EnvVariable
|
||||
from hanzoai.cloud.models.resource_metrics import ResourceMetrics
|
||||
from hanzoai.cloud.models.service_detail import ServiceDetail
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class ApplicationView(BaseModel):
|
||||
"""
|
||||
ApplicationView
|
||||
""" # noqa: E501
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
credentials: Optional[List[EnvVariable]] = None
|
||||
deployments: Optional[List[DeploymentDetail]] = None
|
||||
events: Optional[List[ApplicationEvent]] = None
|
||||
metrics: Optional[ResourceMetrics] = None
|
||||
namespace: Optional[StrictStr] = None
|
||||
services: Optional[List[ServiceDetail]] = None
|
||||
status: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["createdTime", "credentials", "deployments", "events", "metrics", "namespace", "services", "status"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of ApplicationView from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in credentials (list)
|
||||
_items = []
|
||||
if self.credentials:
|
||||
for _item_credentials in self.credentials:
|
||||
if _item_credentials:
|
||||
_items.append(_item_credentials.to_dict())
|
||||
_dict['credentials'] = _items
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in deployments (list)
|
||||
_items = []
|
||||
if self.deployments:
|
||||
for _item_deployments in self.deployments:
|
||||
if _item_deployments:
|
||||
_items.append(_item_deployments.to_dict())
|
||||
_dict['deployments'] = _items
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in events (list)
|
||||
_items = []
|
||||
if self.events:
|
||||
for _item_events in self.events:
|
||||
if _item_events:
|
||||
_items.append(_item_events.to_dict())
|
||||
_dict['events'] = _items
|
||||
# override the default output from pydantic by calling `to_dict()` of metrics
|
||||
if self.metrics:
|
||||
_dict['metrics'] = self.metrics.to_dict()
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in services (list)
|
||||
_items = []
|
||||
if self.services:
|
||||
for _item_services in self.services:
|
||||
if _item_services:
|
||||
_items.append(_item_services.to_dict())
|
||||
_dict['services'] = _items
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of ApplicationView from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"credentials": [EnvVariable.from_dict(_item) for _item in obj["credentials"]] if obj.get("credentials") is not None else None,
|
||||
"deployments": [DeploymentDetail.from_dict(_item) for _item in obj["deployments"]] if obj.get("deployments") is not None else None,
|
||||
"events": [ApplicationEvent.from_dict(_item) for _item in obj["events"]] if obj.get("events") is not None else None,
|
||||
"metrics": ResourceMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None,
|
||||
"namespace": obj.get("namespace"),
|
||||
"services": [ServiceDetail.from_dict(_item) for _item in obj["services"]] if obj.get("services") is not None else None,
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.block import Block
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Article(BaseModel):
|
||||
"""
|
||||
Article
|
||||
""" # noqa: E501
|
||||
content: Optional[List[Block]] = None
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
display_name: Optional[StrictStr] = Field(default=None, alias="displayName")
|
||||
glossary: Optional[List[StrictStr]] = None
|
||||
name: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
text: Optional[StrictStr] = None
|
||||
type: Optional[StrictStr] = None
|
||||
workflow: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["content", "createdTime", "displayName", "glossary", "name", "owner", "text", "type", "workflow"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Article from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in content (list)
|
||||
_items = []
|
||||
if self.content:
|
||||
for _item_content in self.content:
|
||||
if _item_content:
|
||||
_items.append(_item_content.to_dict())
|
||||
_dict['content'] = _items
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Article from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"content": [Block.from_dict(_item) for _item in obj["content"]] if obj.get("content") is not None else None,
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"displayName": obj.get("displayName"),
|
||||
"glossary": obj.get("glossary"),
|
||||
"name": obj.get("name"),
|
||||
"owner": obj.get("owner"),
|
||||
"text": obj.get("text"),
|
||||
"type": obj.get("type"),
|
||||
"workflow": obj.get("workflow")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Asset(BaseModel):
|
||||
"""
|
||||
Asset
|
||||
""" # noqa: E501
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
display_name: Optional[StrictStr] = Field(default=None, alias="displayName")
|
||||
id: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
password: Optional[StrictStr] = None
|
||||
properties: Optional[StrictStr] = None
|
||||
provider: Optional[StrictStr] = None
|
||||
region: Optional[StrictStr] = None
|
||||
state: Optional[StrictStr] = None
|
||||
tag: Optional[StrictStr] = None
|
||||
type: Optional[StrictStr] = None
|
||||
updated_time: Optional[StrictStr] = Field(default=None, alias="updatedTime")
|
||||
username: Optional[StrictStr] = None
|
||||
zone: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["createdTime", "displayName", "id", "name", "owner", "password", "properties", "provider", "region", "state", "tag", "type", "updatedTime", "username", "zone"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Asset from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Asset from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"displayName": obj.get("displayName"),
|
||||
"id": obj.get("id"),
|
||||
"name": obj.get("name"),
|
||||
"owner": obj.get("owner"),
|
||||
"password": obj.get("password"),
|
||||
"properties": obj.get("properties"),
|
||||
"provider": obj.get("provider"),
|
||||
"region": obj.get("region"),
|
||||
"state": obj.get("state"),
|
||||
"tag": obj.get("tag"),
|
||||
"type": obj.get("type"),
|
||||
"updatedTime": obj.get("updatedTime"),
|
||||
"username": obj.get("username"),
|
||||
"zone": obj.get("zone")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Audit(BaseModel):
|
||||
"""
|
||||
Audit
|
||||
""" # noqa: E501
|
||||
action: Optional[StrictStr] = None
|
||||
block: Optional[StrictStr] = None
|
||||
block2: Optional[StrictStr] = None
|
||||
block_hash: Optional[StrictStr] = Field(default=None, alias="blockHash")
|
||||
block_hash2: Optional[StrictStr] = Field(default=None, alias="blockHash2")
|
||||
city: Optional[StrictStr] = None
|
||||
client_ip: Optional[StrictStr] = Field(default=None, alias="clientIp")
|
||||
count: Optional[StrictInt] = None
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
error_text: Optional[StrictStr] = Field(default=None, alias="errorText")
|
||||
id: Optional[StrictInt] = None
|
||||
is_triggered: Optional[StrictBool] = Field(default=None, alias="isTriggered")
|
||||
language: Optional[StrictStr] = None
|
||||
method: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
need_commit: Optional[StrictBool] = Field(default=None, alias="needCommit")
|
||||
object: Optional[StrictStr] = None
|
||||
organization: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
provider: Optional[StrictStr] = None
|
||||
provider2: Optional[StrictStr] = None
|
||||
query: Optional[StrictStr] = None
|
||||
region: Optional[StrictStr] = None
|
||||
request_uri: Optional[StrictStr] = Field(default=None, alias="requestUri")
|
||||
response: Optional[StrictStr] = None
|
||||
section: Optional[StrictStr] = None
|
||||
transaction: Optional[StrictStr] = None
|
||||
transaction2: Optional[StrictStr] = None
|
||||
unit: Optional[StrictStr] = None
|
||||
user: Optional[StrictStr] = None
|
||||
user_agent: Optional[StrictStr] = Field(default=None, alias="userAgent")
|
||||
__properties: ClassVar[List[str]] = ["action", "block", "block2", "blockHash", "blockHash2", "city", "clientIp", "count", "createdTime", "errorText", "id", "isTriggered", "language", "method", "name", "needCommit", "object", "organization", "owner", "provider", "provider2", "query", "region", "requestUri", "response", "section", "transaction", "transaction2", "unit", "user", "userAgent"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Audit from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Audit from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"action": obj.get("action"),
|
||||
"block": obj.get("block"),
|
||||
"block2": obj.get("block2"),
|
||||
"blockHash": obj.get("blockHash"),
|
||||
"blockHash2": obj.get("blockHash2"),
|
||||
"city": obj.get("city"),
|
||||
"clientIp": obj.get("clientIp"),
|
||||
"count": obj.get("count"),
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"errorText": obj.get("errorText"),
|
||||
"id": obj.get("id"),
|
||||
"isTriggered": obj.get("isTriggered"),
|
||||
"language": obj.get("language"),
|
||||
"method": obj.get("method"),
|
||||
"name": obj.get("name"),
|
||||
"needCommit": obj.get("needCommit"),
|
||||
"object": obj.get("object"),
|
||||
"organization": obj.get("organization"),
|
||||
"owner": obj.get("owner"),
|
||||
"provider": obj.get("provider"),
|
||||
"provider2": obj.get("provider2"),
|
||||
"query": obj.get("query"),
|
||||
"region": obj.get("region"),
|
||||
"requestUri": obj.get("requestUri"),
|
||||
"response": obj.get("response"),
|
||||
"section": obj.get("section"),
|
||||
"transaction": obj.get("transaction"),
|
||||
"transaction2": obj.get("transaction2"),
|
||||
"unit": obj.get("unit"),
|
||||
"user": obj.get("user"),
|
||||
"userAgent": obj.get("userAgent")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Block(BaseModel):
|
||||
"""
|
||||
Block
|
||||
""" # noqa: E501
|
||||
prompt: Optional[StrictStr] = None
|
||||
state: Optional[StrictStr] = None
|
||||
text: Optional[StrictStr] = None
|
||||
text_en: Optional[StrictStr] = Field(default=None, alias="textEn")
|
||||
type: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["prompt", "state", "text", "textEn", "type"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Block from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Block from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"prompt": obj.get("prompt"),
|
||||
"state": obj.get("state"),
|
||||
"text": obj.get("text"),
|
||||
"textEn": obj.get("textEn"),
|
||||
"type": obj.get("type")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -20,10 +20,10 @@ import json
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.journey_step import JourneyStep
|
||||
from hanzoai.cloud.models.page import Page
|
||||
from hanzoai.cloud.models.principle import Principle
|
||||
from hanzoai.cloud.models.section import Section
|
||||
from hanzoai.cloud.models.strategy import Strategy
|
||||
from hanzoai.cloud.models.template import Template
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
@@ -37,7 +37,7 @@ class Blueprint(BaseModel):
|
||||
sections: Optional[List[Section]] = None
|
||||
steps: Optional[List[JourneyStep]] = None
|
||||
strategies: Optional[List[Strategy]] = None
|
||||
templates: Optional[List[Template]] = None
|
||||
templates: Optional[List[Page]] = None
|
||||
title: Optional[StrictStr] = None
|
||||
version: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["brand", "enabled", "principles", "sections", "steps", "strategies", "templates", "title", "version"]
|
||||
@@ -134,7 +134,7 @@ class Blueprint(BaseModel):
|
||||
"sections": [Section.from_dict(_item) for _item in obj["sections"]] if obj.get("sections") is not None else None,
|
||||
"steps": [JourneyStep.from_dict(_item) for _item in obj["steps"]] if obj.get("steps") is not None else None,
|
||||
"strategies": [Strategy.from_dict(_item) for _item in obj["strategies"]] if obj.get("strategies") is not None else None,
|
||||
"templates": [Template.from_dict(_item) for _item in obj["templates"]] if obj.get("templates") is not None else None,
|
||||
"templates": [Page.from_dict(_item) for _item in obj["templates"]] if obj.get("templates") is not None else None,
|
||||
"title": obj.get("title"),
|
||||
"version": obj.get("version")
|
||||
})
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional, Union
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Chat(BaseModel):
|
||||
"""
|
||||
Chat
|
||||
""" # noqa: E501
|
||||
category: Optional[StrictStr] = None
|
||||
client_ip: Optional[StrictStr] = Field(default=None, alias="clientIp")
|
||||
client_ip_desc: Optional[StrictStr] = Field(default=None, alias="clientIpDesc")
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
currency: Optional[StrictStr] = None
|
||||
display_name: Optional[StrictStr] = Field(default=None, alias="displayName")
|
||||
is_deleted: Optional[StrictBool] = Field(default=None, alias="isDeleted")
|
||||
is_hidden: Optional[StrictBool] = Field(default=None, alias="isHidden")
|
||||
message_count: Optional[StrictInt] = Field(default=None, alias="messageCount")
|
||||
model_provider: Optional[StrictStr] = Field(default=None, alias="modelProvider")
|
||||
name: Optional[StrictStr] = None
|
||||
need_title: Optional[StrictBool] = Field(default=None, alias="needTitle")
|
||||
organization: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
price: Optional[Union[StrictFloat, StrictInt]] = None
|
||||
store: Optional[StrictStr] = None
|
||||
token_count: Optional[StrictInt] = Field(default=None, alias="tokenCount")
|
||||
type: Optional[StrictStr] = None
|
||||
updated_time: Optional[StrictStr] = Field(default=None, alias="updatedTime")
|
||||
user: Optional[StrictStr] = None
|
||||
user1: Optional[StrictStr] = None
|
||||
user2: Optional[StrictStr] = None
|
||||
user_agent: Optional[StrictStr] = Field(default=None, alias="userAgent")
|
||||
user_agent_desc: Optional[StrictStr] = Field(default=None, alias="userAgentDesc")
|
||||
users: Optional[List[StrictStr]] = None
|
||||
__properties: ClassVar[List[str]] = ["category", "clientIp", "clientIpDesc", "createdTime", "currency", "displayName", "isDeleted", "isHidden", "messageCount", "modelProvider", "name", "needTitle", "organization", "owner", "price", "store", "tokenCount", "type", "updatedTime", "user", "user1", "user2", "userAgent", "userAgentDesc", "users"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Chat from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Chat from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"category": obj.get("category"),
|
||||
"clientIp": obj.get("clientIp"),
|
||||
"clientIpDesc": obj.get("clientIpDesc"),
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"currency": obj.get("currency"),
|
||||
"displayName": obj.get("displayName"),
|
||||
"isDeleted": obj.get("isDeleted"),
|
||||
"isHidden": obj.get("isHidden"),
|
||||
"messageCount": obj.get("messageCount"),
|
||||
"modelProvider": obj.get("modelProvider"),
|
||||
"name": obj.get("name"),
|
||||
"needTitle": obj.get("needTitle"),
|
||||
"organization": obj.get("organization"),
|
||||
"owner": obj.get("owner"),
|
||||
"price": obj.get("price"),
|
||||
"store": obj.get("store"),
|
||||
"tokenCount": obj.get("tokenCount"),
|
||||
"type": obj.get("type"),
|
||||
"updatedTime": obj.get("updatedTime"),
|
||||
"user": obj.get("user"),
|
||||
"user1": obj.get("user1"),
|
||||
"user2": obj.get("user2"),
|
||||
"userAgent": obj.get("userAgent"),
|
||||
"userAgentDesc": obj.get("userAgentDesc"),
|
||||
"users": obj.get("users")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -26,18 +26,18 @@ class CodingStartIn(BaseModel):
|
||||
"""
|
||||
CodingStartIn
|
||||
""" # noqa: E501
|
||||
agent_ref: Optional[StrictStr] = Field(default=None, alias="agentRef")
|
||||
base: Optional[StrictStr] = None
|
||||
agent_ref: Optional[StrictStr] = Field(default=None, description="AgentRef names a configured agent to run as, which is how an org pins a harness, a model and a prompt to a name. Empty runs the default agent.", alias="agentRef")
|
||||
base: Optional[StrictStr] = Field(default=None, description="Base is the branch to start from. Empty takes the repository's default. The run never writes here — it writes the agent branch it answers with.")
|
||||
desktop: Optional[StrictBool] = None
|
||||
project: Optional[StrictStr] = None
|
||||
prompt: Optional[StrictStr] = None
|
||||
reply_channel: Optional[StrictStr] = Field(default=None, alias="replyChannel")
|
||||
project: Optional[StrictStr] = Field(default=None, description="Project scopes the run to one board's work when the org keeps more than one. Empty is the org's default.")
|
||||
prompt: Optional[StrictStr] = Field(default=None, description="Prompt is the task, in the words you would use with a colleague who has the checkout open. It is the whole instruction: there is no second field for context, and a prompt that names files and the outcome it wants gets a run that does not have to guess either.")
|
||||
reply_channel: Optional[StrictStr] = Field(default=None, description="ReplyChannel / ReplyThread are WHERE THE RUN NARRATES ITSELF, when the door that started it has somewhere for it to talk. Empty means nobody is listening and the run simply does not narrate — which is the app door's case, because /v1/coding hands back a session id and the session stream is a better progress feed than any message could be. It is an ADDRESS and not a token: the engine says \"put this text there\", and the process that owns the workspace's bot credential is the one that actually posts. So a run reports into a Slack thread without the engine ever holding the token that could post anywhere else in that workspace.", alias="replyChannel")
|
||||
reply_thread: Optional[StrictStr] = Field(default=None, alias="replyThread")
|
||||
repo: Optional[StrictStr] = None
|
||||
subject: Optional[StrictStr] = None
|
||||
target_id: Optional[StrictStr] = Field(default=None, alias="targetId")
|
||||
timeout_seconds: Optional[StrictInt] = Field(default=None, alias="timeoutSeconds")
|
||||
tool: Optional[StrictStr] = None
|
||||
repo: Optional[StrictStr] = Field(default=None, description="Repo is what to work on, as `owner/name` in the caller's own org. The engine resolves the clone URL and the push credential from the org itself, so this says WHICH repository and never how to reach it.")
|
||||
subject: Optional[StrictStr] = Field(default=None, description="Subject is the person the run is attributed to — a linked Hanzo identity the door already proved, never a name the caller picks. Empty is refused rather than defaulted: a run that lost its human must not execute as the org.")
|
||||
target_id: Optional[StrictStr] = Field(default=None, description="TargetID routes the run to a registered machine the org has claimed instead of to a sandbox in our cluster. Empty runs it here, which is the usual case.", alias="targetId")
|
||||
timeout_seconds: Optional[StrictInt] = Field(default=None, description="TimeoutSeconds bounds the whole run. Unset takes the default budget; a run that hits the bound is stopped and reports what it had done by then.", alias="timeoutSeconds")
|
||||
tool: Optional[StrictStr] = Field(default=None, description="Tool is which harness runs the prompt — dev | claude | codex | python | node — and Desktop is whether the run needs a screen. Both are empty by default, which is `dev` with no screen, and that default is what every caller gets until it says otherwise. They are two fields because they are two questions. The harness decides what argv starts; the screen decides which image carries an X server. A caller may want claude WITH a browser it can see, and a single enum would have made that combination unsayable.")
|
||||
__properties: ClassVar[List[str]] = ["agentRef", "base", "desktop", "project", "prompt", "replyChannel", "replyThread", "repo", "subject", "targetId", "timeoutSeconds", "tool"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Connection(BaseModel):
|
||||
"""
|
||||
Connection
|
||||
""" # noqa: E501
|
||||
client_ip: Optional[StrictStr] = Field(default=None, alias="clientIp")
|
||||
client_ip_desc: Optional[StrictStr] = Field(default=None, alias="clientIpDesc")
|
||||
code: Optional[StrictInt] = None
|
||||
command_count: Optional[StrictInt] = Field(default=None, alias="commandCount")
|
||||
connection_id: Optional[StrictStr] = Field(default=None, alias="connectionId")
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
creator: Optional[StrictStr] = None
|
||||
end_time: Optional[StrictStr] = Field(default=None, alias="endTime")
|
||||
height: Optional[StrictInt] = None
|
||||
message: Optional[StrictStr] = None
|
||||
mode: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
node: Optional[StrictStr] = None
|
||||
operations: Optional[List[StrictStr]] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
protocol: Optional[StrictStr] = None
|
||||
recording: Optional[StrictStr] = None
|
||||
reviewed: Optional[StrictBool] = None
|
||||
start_time: Optional[StrictStr] = Field(default=None, alias="startTime")
|
||||
status: Optional[StrictStr] = None
|
||||
user_agent: Optional[StrictStr] = Field(default=None, alias="userAgent")
|
||||
user_agent_desc: Optional[StrictStr] = Field(default=None, alias="userAgentDesc")
|
||||
width: Optional[StrictInt] = None
|
||||
__properties: ClassVar[List[str]] = ["clientIp", "clientIpDesc", "code", "commandCount", "connectionId", "createdTime", "creator", "endTime", "height", "message", "mode", "name", "node", "operations", "owner", "protocol", "recording", "reviewed", "startTime", "status", "userAgent", "userAgentDesc", "width"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Connection from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Connection from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"clientIp": obj.get("clientIp"),
|
||||
"clientIpDesc": obj.get("clientIpDesc"),
|
||||
"code": obj.get("code"),
|
||||
"commandCount": obj.get("commandCount"),
|
||||
"connectionId": obj.get("connectionId"),
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"creator": obj.get("creator"),
|
||||
"endTime": obj.get("endTime"),
|
||||
"height": obj.get("height"),
|
||||
"message": obj.get("message"),
|
||||
"mode": obj.get("mode"),
|
||||
"name": obj.get("name"),
|
||||
"node": obj.get("node"),
|
||||
"operations": obj.get("operations"),
|
||||
"owner": obj.get("owner"),
|
||||
"protocol": obj.get("protocol"),
|
||||
"recording": obj.get("recording"),
|
||||
"reviewed": obj.get("reviewed"),
|
||||
"startTime": obj.get("startTime"),
|
||||
"status": obj.get("status"),
|
||||
"userAgent": obj.get("userAgent"),
|
||||
"userAgentDesc": obj.get("userAgentDesc"),
|
||||
"width": obj.get("width")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.resource_requests import ResourceRequests
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class ContainerDetail(BaseModel):
|
||||
"""
|
||||
ContainerDetail
|
||||
""" # noqa: E501
|
||||
image: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
resources: Optional[ResourceRequests] = None
|
||||
__properties: ClassVar[List[str]] = ["image", "name", "resources"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of ContainerDetail from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of resources
|
||||
if self.resources:
|
||||
_dict['resources'] = self.resources.to_dict()
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of ContainerDetail from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"image": obj.get("image"),
|
||||
"name": obj.get("name"),
|
||||
"resources": ResourceRequests.from_dict(obj["resources"]) if obj.get("resources") is not None else None
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from datetime import datetime
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Delivery(BaseModel):
|
||||
"""
|
||||
Delivery
|
||||
""" # noqa: E501
|
||||
data: Optional[StrictStr] = Field(default=None, description="Data is the payload, base64-encoded.")
|
||||
headers: Optional[Dict[str, List[StrictStr]]] = Field(default=None, description="Headers are the message headers, when any were published.")
|
||||
num_delivered: Optional[StrictInt] = Field(default=None, description="Delivered is how many times a consumer has been handed this message (pulls only).")
|
||||
num_pending: Optional[StrictInt] = Field(default=None, description="Remaining is how many messages follow this one for the consumer (pulls only).")
|
||||
sequence: Optional[StrictInt] = Field(default=None, description="Sequence is the message's stream sequence.")
|
||||
subject: Optional[StrictStr] = Field(default=None, description="Subject is the org-relative subject the message was stored under.")
|
||||
timestamp: Optional[datetime] = Field(default=None, description="Timestamp is when the broker stored the message.")
|
||||
__properties: ClassVar[List[str]] = ["data", "headers", "num_delivered", "num_pending", "sequence", "subject", "timestamp"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Delivery from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Delivery from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": obj.get("data"),
|
||||
"headers": obj.get("headers"),
|
||||
"num_delivered": obj.get("num_delivered"),
|
||||
"num_pending": obj.get("num_pending"),
|
||||
"sequence": obj.get("sequence"),
|
||||
"subject": obj.get("subject"),
|
||||
"timestamp": obj.get("timestamp")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.container_detail import ContainerDetail
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class DeploymentDetail(BaseModel):
|
||||
"""
|
||||
DeploymentDetail
|
||||
""" # noqa: E501
|
||||
containers: Optional[List[ContainerDetail]] = None
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
name: Optional[StrictStr] = None
|
||||
ready_replicas: Optional[StrictInt] = Field(default=None, alias="readyReplicas")
|
||||
replicas: Optional[StrictInt] = None
|
||||
status: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["containers", "createdTime", "name", "readyReplicas", "replicas", "status"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of DeploymentDetail from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in containers (list)
|
||||
_items = []
|
||||
if self.containers:
|
||||
for _item_containers in self.containers:
|
||||
if _item_containers:
|
||||
_items.append(_item_containers.to_dict())
|
||||
_dict['containers'] = _items
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of DeploymentDetail from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"containers": [ContainerDetail.from_dict(_item) for _item in obj["containers"]] if obj.get("containers") is not None else None,
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"name": obj.get("name"),
|
||||
"readyReplicas": obj.get("readyReplicas"),
|
||||
"replicas": obj.get("replicas"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
@@ -26,8 +26,8 @@ class EndIn(BaseModel):
|
||||
"""
|
||||
EndIn
|
||||
""" # noqa: E501
|
||||
id: Optional[StrictStr] = None
|
||||
purge: Optional[StrictBool] = None
|
||||
id: Optional[StrictStr] = Field(default=None, description="ID is the sandbox whose lease ends, from an earlier lease.")
|
||||
purge: Optional[StrictBool] = Field(default=None, description="Purge deletes the project's DISK as well. It is opt-in because the disk holds the only copy of the checkout: ending a lease is cheap and reversible, deleting someone's uncommitted work is neither.")
|
||||
__properties: ClassVar[List[str]] = ["id", "purge"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class EnvVariable(BaseModel):
|
||||
"""
|
||||
EnvVariable
|
||||
""" # noqa: E501
|
||||
name: Optional[StrictStr] = None
|
||||
value: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["name", "value"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of EnvVariable from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of EnvVariable from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"name": obj.get("name"),
|
||||
"value": obj.get("value")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class AiEnvelope(BaseModel):
|
||||
class Envelope(BaseModel):
|
||||
"""
|
||||
The resource surface's response. `status` is the verdict, not the HTTP code: a handled failure is still 200.
|
||||
""" # noqa: E501
|
||||
@@ -57,7 +57,7 @@ class AiEnvelope(BaseModel):
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of AiEnvelope from a JSON string"""
|
||||
"""Create an instance of Envelope from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
@@ -92,7 +92,7 @@ class AiEnvelope(BaseModel):
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of AiEnvelope from a dict"""
|
||||
"""Create an instance of Envelope from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class ExampleQuestion(BaseModel):
|
||||
"""
|
||||
ExampleQuestion
|
||||
""" # noqa: E501
|
||||
image: Optional[StrictStr] = None
|
||||
text: Optional[StrictStr] = None
|
||||
title: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["image", "text", "title"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of ExampleQuestion from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of ExampleQuestion from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"image": obj.get("image"),
|
||||
"text": obj.get("text"),
|
||||
"title": obj.get("title")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class File(BaseModel):
|
||||
"""
|
||||
File
|
||||
""" # noqa: E501
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
error_text: Optional[StrictStr] = Field(default=None, alias="errorText")
|
||||
filename: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
size: Optional[StrictInt] = None
|
||||
status: Optional[StrictStr] = None
|
||||
storage_provider: Optional[StrictStr] = Field(default=None, alias="storageProvider")
|
||||
store: Optional[StrictStr] = None
|
||||
token_count: Optional[StrictInt] = Field(default=None, alias="tokenCount")
|
||||
url: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["createdTime", "errorText", "filename", "name", "owner", "size", "status", "storageProvider", "store", "tokenCount", "url"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of File from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of File from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"errorText": obj.get("errorText"),
|
||||
"filename": obj.get("filename"),
|
||||
"name": obj.get("name"),
|
||||
"owner": obj.get("owner"),
|
||||
"size": obj.get("size"),
|
||||
"status": obj.get("status"),
|
||||
"storageProvider": obj.get("storageProvider"),
|
||||
"store": obj.get("store"),
|
||||
"tokenCount": obj.get("tokenCount"),
|
||||
"url": obj.get("url")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.form_item import FormItem
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Form(BaseModel):
|
||||
"""
|
||||
Form
|
||||
""" # noqa: E501
|
||||
category: Optional[StrictStr] = None
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
display_name: Optional[StrictStr] = Field(default=None, alias="displayName")
|
||||
form_items: Optional[List[FormItem]] = Field(default=None, alias="formItems")
|
||||
name: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
position: Optional[StrictStr] = None
|
||||
tag: Optional[StrictStr] = None
|
||||
type: Optional[StrictStr] = None
|
||||
url: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["category", "createdTime", "displayName", "formItems", "name", "owner", "position", "tag", "type", "url"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Form from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in form_items (list)
|
||||
_items = []
|
||||
if self.form_items:
|
||||
for _item_form_items in self.form_items:
|
||||
if _item_form_items:
|
||||
_items.append(_item_form_items.to_dict())
|
||||
_dict['formItems'] = _items
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Form from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"category": obj.get("category"),
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"displayName": obj.get("displayName"),
|
||||
"formItems": [FormItem.from_dict(_item) for _item in obj["formItems"]] if obj.get("formItems") is not None else None,
|
||||
"name": obj.get("name"),
|
||||
"owner": obj.get("owner"),
|
||||
"position": obj.get("position"),
|
||||
"tag": obj.get("tag"),
|
||||
"type": obj.get("type"),
|
||||
"url": obj.get("url")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class FormItem(BaseModel):
|
||||
"""
|
||||
FormItem
|
||||
""" # noqa: E501
|
||||
label: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
type: Optional[StrictStr] = None
|
||||
visible: Optional[StrictBool] = None
|
||||
width: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["label", "name", "type", "visible", "width"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of FormItem from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of FormItem from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"label": obj.get("label"),
|
||||
"name": obj.get("name"),
|
||||
"type": obj.get("type"),
|
||||
"visible": obj.get("visible"),
|
||||
"width": obj.get("width")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.activity import Activity
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiActivities200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiActivities200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Activity]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiActivities200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiActivities200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Activity.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.article import Article
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiArticles200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiArticles200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Article]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiArticles200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiArticles200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Article.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.asset import Asset
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiAssets200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiAssets200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Asset]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiAssets200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiAssets200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Asset.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.chat import Chat
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiChats200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiChats200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Chat]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiChats200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiChats200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Chat.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.application import Application
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiDeployments200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiDeployments200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Application]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiDeployments200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiDeployments200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Application.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.file import File
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiFiles200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiFiles200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[File]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiFiles200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiFiles200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [File.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.form import Form
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiForms200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiForms200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Form]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiForms200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiForms200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Form.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.graph import Graph
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiGraphs200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiGraphs200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Graph]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiGraphs200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiGraphs200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Graph.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.message import Message
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiMessages200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiMessages200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Message]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiMessages200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiMessages200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Message.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.node import Node
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiNodes200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiNodes200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Node]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiNodes200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiNodes200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Node.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.provider import Provider
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiProviders200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiProviders200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Provider]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiProviders200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiProviders200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Provider.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.audit import Audit
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiRecords200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiRecords200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Audit]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiRecords200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiRecords200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Audit.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.connection import Connection
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiRemoteConnections200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiRemoteConnections200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Connection]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiRemoteConnections200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiRemoteConnections200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Connection.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.model_route import ModelRoute
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiRoutes200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiRoutes200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[ModelRoute]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiRoutes200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiRoutes200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [ModelRoute.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.scale import Scale
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiScales200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiScales200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Scale]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiScales200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiScales200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Scale.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.scan import Scan
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiScans200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiScans200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Scan]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiScans200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiScans200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Scan.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.session import Session
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiSigninSessions200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiSigninSessions200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Session]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiSigninSessions200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiSigninSessions200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Session.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.store import Store
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiStores200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiStores200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Store]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiStores200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiStores200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Store.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.task import Task
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiTasks200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiTasks200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Task]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiTasks200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiTasks200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Task.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.template import Template
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiTemplates200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiTemplates200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Template]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiTemplates200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiTemplates200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Template.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.tally import Tally
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiUsages200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiUsages200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Tally]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiUsages200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiUsages200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Tally.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.vector import Vector
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiVectors200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiVectors200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Vector]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiVectors200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiVectors200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Vector.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.video import Video
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiVideos200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiVideos200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Video]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiVideos200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiVideos200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Video.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.workflow import Workflow
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GetV1AiWorkflows200Response(BaseModel):
|
||||
"""
|
||||
GetV1AiWorkflows200Response
|
||||
""" # noqa: E501
|
||||
data: Optional[List[Workflow]] = None
|
||||
data2: Optional[Any] = None
|
||||
msg: StrictStr = Field(description="Empty on success, the reason on failure.")
|
||||
status: StrictStr
|
||||
__properties: ClassVar[List[str]] = ["data", "data2", "msg", "status"]
|
||||
|
||||
@field_validator('status')
|
||||
def status_validate_enum(cls, value):
|
||||
"""Validates the enum"""
|
||||
if value not in set(['ok', 'error']):
|
||||
raise ValueError("must be one of enum values ('ok', 'error')")
|
||||
return value
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiWorkflows200Response from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in data (list)
|
||||
_items = []
|
||||
if self.data:
|
||||
for _item_data in self.data:
|
||||
if _item_data:
|
||||
_items.append(_item_data.to_dict())
|
||||
_dict['data'] = _items
|
||||
# set to None if data2 (nullable) is None
|
||||
# and model_fields_set contains the field
|
||||
if self.data2 is None and "data2" in self.model_fields_set:
|
||||
_dict['data2'] = None
|
||||
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GetV1AiWorkflows200Response from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"data": [Workflow.from_dict(_item) for _item in obj["data"]] if obj.get("data") is not None else None,
|
||||
"data2": obj.get("data2"),
|
||||
"msg": obj.get("msg"),
|
||||
"status": obj.get("status")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GithubForkOut(BaseModel):
|
||||
"""
|
||||
GithubForkOut
|
||||
""" # noqa: E501
|
||||
clone_url: Optional[StrictStr] = None
|
||||
default_branch: Optional[StrictStr] = None
|
||||
existing: Optional[StrictBool] = Field(default=None, description="Existing reports that the fork was already there. GitHub answers 202 either way, so without this a caller cannot tell \"made you one\" from \"you had one\".")
|
||||
full_name: Optional[StrictStr] = None
|
||||
html_url: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["clone_url", "default_branch", "existing", "full_name", "html_url"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GithubForkOut from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GithubForkOut from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"clone_url": obj.get("clone_url"),
|
||||
"default_branch": obj.get("default_branch"),
|
||||
"existing": obj.get("existing"),
|
||||
"full_name": obj.get("full_name"),
|
||||
"html_url": obj.get("html_url")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GithubForkReq(BaseModel):
|
||||
"""
|
||||
GithubForkReq
|
||||
""" # noqa: E501
|
||||
org: Optional[StrictStr] = Field(default=None, description="Org is the GitHub account to fork INTO; empty forks to the installation's own account, which is the common case.")
|
||||
repo: Optional[StrictStr] = Field(default=None, description="Repo is a repository the org's installation was GRANTED, by name.")
|
||||
__properties: ClassVar[List[str]] = ["org", "repo"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GithubForkReq from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GithubForkReq from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"org": obj.get("org"),
|
||||
"repo": obj.get("repo")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.github_repo_view import GithubRepoView
|
||||
from typing import Optional, Set
|
||||
@@ -28,7 +28,8 @@ class GithubReposOut(BaseModel):
|
||||
GithubReposOut
|
||||
""" # noqa: E501
|
||||
repos: Optional[List[GithubRepoView]] = Field(default=None, description="Repos is every repo the installation grants. Never null; [] when none.")
|
||||
__properties: ClassVar[List[str]] = ["repos"]
|
||||
unread: Optional[List[StrictStr]] = Field(default=None, description="Unread names the connected accounts this answer could NOT read, so a short list is distinguishable from a complete one. Absent when the answer is whole. The fan-out is per installation, and one account failing used to be dropped in silence: the response stayed 200 and simply carried fewer repositories, erroring only when EVERY account failed. Measured, twice in a row, minutes apart: 1475 repositories, then 1157 — a whole installation missing with nothing in the answer to say so. Anything driven off the list then under-covers and reports success, which is the failure this field ends.")
|
||||
__properties: ClassVar[List[str]] = ["repos", "unread"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
@@ -88,7 +89,8 @@ class GithubReposOut(BaseModel):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"repos": [GithubRepoView.from_dict(_item) for _item in obj["repos"]] if obj.get("repos") is not None else None
|
||||
"repos": [GithubRepoView.from_dict(_item) for _item in obj["repos"]] if obj.get("repos") is not None else None,
|
||||
"unread": obj.get("unread")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictBool, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GithubSearchHit(BaseModel):
|
||||
"""
|
||||
GithubSearchHit
|
||||
""" # noqa: E501
|
||||
clone_url: Optional[StrictStr] = None
|
||||
default_branch: Optional[StrictStr] = None
|
||||
description: Optional[StrictStr] = None
|
||||
full_name: Optional[StrictStr] = None
|
||||
html_url: Optional[StrictStr] = None
|
||||
language: Optional[StrictStr] = None
|
||||
private: Optional[StrictBool] = None
|
||||
stars: Optional[StrictInt] = None
|
||||
__properties: ClassVar[List[str]] = ["clone_url", "default_branch", "description", "full_name", "html_url", "language", "private", "stars"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GithubSearchHit from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GithubSearchHit from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"clone_url": obj.get("clone_url"),
|
||||
"default_branch": obj.get("default_branch"),
|
||||
"description": obj.get("description"),
|
||||
"full_name": obj.get("full_name"),
|
||||
"html_url": obj.get("html_url"),
|
||||
"language": obj.get("language"),
|
||||
"private": obj.get("private"),
|
||||
"stars": obj.get("stars")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, StrictInt
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.github_search_hit import GithubSearchHit
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GithubSearchOut(BaseModel):
|
||||
"""
|
||||
GithubSearchOut
|
||||
""" # noqa: E501
|
||||
count: Optional[StrictInt] = None
|
||||
repos: Optional[List[GithubSearchHit]] = None
|
||||
__properties: ClassVar[List[str]] = ["count", "repos"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GithubSearchOut from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
# override the default output from pydantic by calling `to_dict()` of each item in repos (list)
|
||||
_items = []
|
||||
if self.repos:
|
||||
for _item_repos in self.repos:
|
||||
if _item_repos:
|
||||
_items.append(_item_repos.to_dict())
|
||||
_dict['repos'] = _items
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GithubSearchOut from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"count": obj.get("count"),
|
||||
"repos": [GithubSearchHit.from_dict(_item) for _item in obj["repos"]] if obj.get("repos") is not None else None
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class GithubSearchReq(BaseModel):
|
||||
"""
|
||||
GithubSearchReq
|
||||
""" # noqa: E501
|
||||
limit: Optional[StrictInt] = Field(default=None, description="Limit caps the answer; 0 takes the default and anything above the ceiling is clamped rather than refused.")
|
||||
q: Optional[StrictStr] = Field(default=None, description="Q is GitHub's own search syntax, passed through: \"tetris language:go\", \"org:hanzoai stars:>10\". Passing it through rather than inventing a vocabulary means one thing to learn, and it is theirs.")
|
||||
__properties: ClassVar[List[str]] = ["limit", "q"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of GithubSearchReq from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of GithubSearchReq from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"limit": obj.get("limit"),
|
||||
"q": obj.get("q")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""
|
||||
Hanzo Cloud API
|
||||
|
||||
Composed from each subsystem's own projection of its router, in the fleet's mount order — every operation below is a route the subsystem that publishes it registered. Tagged by product: the first path segment after /v1/.
|
||||
|
||||
The version of the OpenAPI document: v1
|
||||
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
||||
|
||||
Do not edit the class manually.
|
||||
""" # noqa: E501
|
||||
|
||||
|
||||
from __future__ import annotations
|
||||
import pprint
|
||||
import re # noqa: F401
|
||||
import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
class Graph(BaseModel):
|
||||
"""
|
||||
Graph
|
||||
""" # noqa: E501
|
||||
category: Optional[StrictStr] = None
|
||||
created_time: Optional[StrictStr] = Field(default=None, alias="createdTime")
|
||||
density: Optional[StrictInt] = None
|
||||
display_name: Optional[StrictStr] = Field(default=None, alias="displayName")
|
||||
end_time: Optional[StrictStr] = Field(default=None, alias="endTime")
|
||||
error_text: Optional[StrictStr] = Field(default=None, alias="errorText")
|
||||
layout: Optional[StrictStr] = None
|
||||
name: Optional[StrictStr] = None
|
||||
owner: Optional[StrictStr] = None
|
||||
start_time: Optional[StrictStr] = Field(default=None, alias="startTime")
|
||||
store: Optional[StrictStr] = None
|
||||
text: Optional[StrictStr] = None
|
||||
__properties: ClassVar[List[str]] = ["category", "createdTime", "density", "displayName", "endTime", "errorText", "layout", "name", "owner", "startTime", "store", "text"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
populate_by_name=True,
|
||||
validate_assignment=True,
|
||||
protected_namespaces=(),
|
||||
)
|
||||
|
||||
|
||||
def to_str(self) -> str:
|
||||
"""Returns the string representation of the model using alias"""
|
||||
return pprint.pformat(self.model_dump(by_alias=True))
|
||||
|
||||
def to_json(self) -> str:
|
||||
"""Returns the JSON representation of the model using alias"""
|
||||
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
||||
return json.dumps(self.to_dict())
|
||||
|
||||
@classmethod
|
||||
def from_json(cls, json_str: str) -> Optional[Self]:
|
||||
"""Create an instance of Graph from a JSON string"""
|
||||
return cls.from_dict(json.loads(json_str))
|
||||
|
||||
def to_dict(self) -> Dict[str, Any]:
|
||||
"""Return the dictionary representation of the model using alias.
|
||||
|
||||
This has the following differences from calling pydantic's
|
||||
`self.model_dump(by_alias=True)`:
|
||||
|
||||
* `None` is only added to the output dict for nullable fields that
|
||||
were set at model initialization. Other fields with value `None`
|
||||
are ignored.
|
||||
"""
|
||||
excluded_fields: Set[str] = set([
|
||||
])
|
||||
|
||||
_dict = self.model_dump(
|
||||
by_alias=True,
|
||||
exclude=excluded_fields,
|
||||
exclude_none=True,
|
||||
)
|
||||
return _dict
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
||||
"""Create an instance of Graph from a dict"""
|
||||
if obj is None:
|
||||
return None
|
||||
|
||||
if not isinstance(obj, dict):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"category": obj.get("category"),
|
||||
"createdTime": obj.get("createdTime"),
|
||||
"density": obj.get("density"),
|
||||
"displayName": obj.get("displayName"),
|
||||
"endTime": obj.get("endTime"),
|
||||
"errorText": obj.get("errorText"),
|
||||
"layout": obj.get("layout"),
|
||||
"name": obj.get("name"),
|
||||
"owner": obj.get("owner"),
|
||||
"startTime": obj.get("startTime"),
|
||||
"store": obj.get("store"),
|
||||
"text": obj.get("text")
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import json
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from typing import Any, ClassVar, Dict, List, Optional
|
||||
from hanzoai.cloud.models.service import Service
|
||||
from hanzoai.cloud.models.upstream import Upstream
|
||||
from typing import Optional, Set
|
||||
from typing_extensions import Self
|
||||
|
||||
@@ -27,7 +27,7 @@ class IngressServices(BaseModel):
|
||||
"""
|
||||
IngressServices
|
||||
""" # noqa: E501
|
||||
services: Optional[List[Service]] = Field(default=None, description="Services is the org's services, ordered by id.")
|
||||
services: Optional[List[Upstream]] = Field(default=None, description="Services is the org's services, ordered by id.")
|
||||
__properties: ClassVar[List[str]] = ["services"]
|
||||
|
||||
model_config = ConfigDict(
|
||||
@@ -88,7 +88,7 @@ class IngressServices(BaseModel):
|
||||
return cls.model_validate(obj)
|
||||
|
||||
_obj = cls.model_validate({
|
||||
"services": [Service.from_dict(_item) for _item in obj["services"]] if obj.get("services") is not None else None
|
||||
"services": [Upstream.from_dict(_item) for _item in obj["services"]] if obj.get("services") is not None else None
|
||||
})
|
||||
return _obj
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user