Superuser-only management for agents that registered themselves: list them with whether anyone approved them, and withdraw one without rotating the signing key and cutting off every other agent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7LwYgJfpkbLCTeiAf8U4A
2120 lines
48 KiB
TypeScript
2120 lines
48 KiB
TypeScript
// This file is auto-generated by @hey-api/openapi-ts
|
|
|
|
export const AlertsConfigSchema = {
|
|
properties: {
|
|
enabled: {
|
|
type: 'boolean',
|
|
title: 'Enabled',
|
|
default: true
|
|
},
|
|
channels: {
|
|
items: {
|
|
'$ref': '#/components/schemas/Channel'
|
|
},
|
|
type: 'array',
|
|
title: 'Channels'
|
|
},
|
|
rules: {
|
|
items: {
|
|
'$ref': '#/components/schemas/Rule'
|
|
},
|
|
type: 'array',
|
|
title: 'Rules'
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'AlertsConfig',
|
|
description: 'The whole alerting setup, as stored and as the API sees it.'
|
|
} as const;
|
|
|
|
export const Body_login_login_access_tokenSchema = {
|
|
properties: {
|
|
grant_type: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
pattern: '^password$'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Grant Type'
|
|
},
|
|
username: {
|
|
type: 'string',
|
|
title: 'Username'
|
|
},
|
|
password: {
|
|
type: 'string',
|
|
format: 'password',
|
|
title: 'Password'
|
|
},
|
|
scope: {
|
|
type: 'string',
|
|
title: 'Scope',
|
|
default: ''
|
|
},
|
|
client_id: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Client Id'
|
|
},
|
|
client_secret: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
format: 'password',
|
|
title: 'Client Secret'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['username', 'password'],
|
|
title: 'Body_login-login_access_token'
|
|
} as const;
|
|
|
|
export const Body_oauth_tokenSchema = {
|
|
properties: {
|
|
grant_type: {
|
|
type: 'string',
|
|
title: 'Grant Type'
|
|
},
|
|
code: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Code'
|
|
},
|
|
redirect_uri: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Redirect Uri'
|
|
},
|
|
client_id: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Client Id'
|
|
},
|
|
code_verifier: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Code Verifier'
|
|
},
|
|
refresh_token: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Refresh Token'
|
|
},
|
|
resource: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Resource'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['grant_type'],
|
|
title: 'Body_oauth-token'
|
|
} as const;
|
|
|
|
export const ChannelSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
kind: {
|
|
type: 'string',
|
|
enum: ['ntfy', 'smtp', 'webhook'],
|
|
title: 'Kind'
|
|
},
|
|
enabled: {
|
|
type: 'boolean',
|
|
title: 'Enabled',
|
|
default: true
|
|
},
|
|
config: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Config'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name', 'kind'],
|
|
title: 'Channel',
|
|
description: 'Somewhere to send an alert.'
|
|
} as const;
|
|
|
|
export const DTypeSchema = {
|
|
type: 'string',
|
|
enum: ['float', 'int', 'str', 'bool', 'json'],
|
|
title: 'DType',
|
|
description: `Serializable payload types.
|
|
|
|
Binary payloads (tensors, images) will arrive later as explicitly declared
|
|
codec fields; until then everything on the wire is JSON.`
|
|
} as const;
|
|
|
|
export const DashboardDef_InputSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
pages: {
|
|
items: {
|
|
'$ref': '#/components/schemas/PageDef-Input'
|
|
},
|
|
type: 'array',
|
|
title: 'Pages'
|
|
},
|
|
version: {
|
|
type: 'integer',
|
|
title: 'Version',
|
|
default: 1
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'DashboardDef',
|
|
description: 'A dashboard as stored, and as the API hands it over.'
|
|
} as const;
|
|
|
|
export const DashboardDef_OutputSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
pages: {
|
|
items: {
|
|
'$ref': '#/components/schemas/PageDef-Output'
|
|
},
|
|
type: 'array',
|
|
title: 'Pages'
|
|
},
|
|
version: {
|
|
type: 'integer',
|
|
title: 'Version',
|
|
default: 1
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'DashboardDef',
|
|
description: 'A dashboard as stored, and as the API hands it over.'
|
|
} as const;
|
|
|
|
export const DashboardSummarySchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
page_count: {
|
|
type: 'integer',
|
|
title: 'Page Count',
|
|
default: 0
|
|
},
|
|
widget_count: {
|
|
type: 'integer',
|
|
title: 'Widget Count',
|
|
default: 0
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'DashboardSummary',
|
|
description: 'A dashboard in a list, without its contents.'
|
|
} as const;
|
|
|
|
export const DashboardsPublicSchema = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
'$ref': '#/components/schemas/DashboardSummary'
|
|
},
|
|
type: 'array',
|
|
title: 'Data'
|
|
},
|
|
count: {
|
|
type: 'integer',
|
|
title: 'Count'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['data', 'count'],
|
|
title: 'DashboardsPublic'
|
|
} as const;
|
|
|
|
export const EndpointSchema = {
|
|
properties: {
|
|
kind: {
|
|
type: 'string',
|
|
title: 'Kind'
|
|
},
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
label: {
|
|
type: 'string',
|
|
title: 'Label'
|
|
},
|
|
detail: {
|
|
type: 'string',
|
|
title: 'Detail',
|
|
default: ''
|
|
},
|
|
provides: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Provides',
|
|
default: []
|
|
},
|
|
requires: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Requires',
|
|
default: []
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['kind', 'id', 'label'],
|
|
title: 'Endpoint',
|
|
description: `Something wired into this flow that is not a node in it.
|
|
|
|
A dashboard control setting one of its messages, a tile showing one, or a
|
|
node in another flow on the far side of a dotted name. The canvas draws
|
|
these so a value never appears to come from nowhere — or worse, appears to
|
|
come from whichever node happens to be drawn as a producer.`
|
|
} as const;
|
|
|
|
export const FlowDef_InputSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
nodes: {
|
|
items: {
|
|
'$ref': '#/components/schemas/NodeDef-Input'
|
|
},
|
|
type: 'array',
|
|
title: 'Nodes'
|
|
},
|
|
inputs: {
|
|
items: {
|
|
'$ref': '#/components/schemas/FlowInput-Input'
|
|
},
|
|
type: 'array',
|
|
title: 'Inputs'
|
|
},
|
|
version: {
|
|
type: 'integer',
|
|
title: 'Version',
|
|
default: 1
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'FlowDef',
|
|
description: 'One atomic flow.'
|
|
} as const;
|
|
|
|
export const FlowDef_OutputSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
nodes: {
|
|
items: {
|
|
'$ref': '#/components/schemas/NodeDef-Output'
|
|
},
|
|
type: 'array',
|
|
title: 'Nodes'
|
|
},
|
|
inputs: {
|
|
items: {
|
|
'$ref': '#/components/schemas/FlowInput-Output'
|
|
},
|
|
type: 'array',
|
|
title: 'Inputs'
|
|
},
|
|
version: {
|
|
type: 'integer',
|
|
title: 'Version',
|
|
default: 1
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'FlowDef',
|
|
description: 'One atomic flow.'
|
|
} as const;
|
|
|
|
export const FlowDetailSchema = {
|
|
properties: {
|
|
definition: {
|
|
'$ref': '#/components/schemas/FlowDef-Output'
|
|
},
|
|
nodes: {
|
|
items: {
|
|
'$ref': '#/components/schemas/NodeStatusPublic'
|
|
},
|
|
type: 'array',
|
|
title: 'Nodes',
|
|
default: []
|
|
},
|
|
issues: {
|
|
items: {
|
|
'$ref': '#/components/schemas/ValidationIssue'
|
|
},
|
|
type: 'array',
|
|
title: 'Issues',
|
|
default: []
|
|
},
|
|
has_draft: {
|
|
type: 'boolean',
|
|
title: 'Has Draft',
|
|
default: false
|
|
},
|
|
enabled: {
|
|
type: 'boolean',
|
|
title: 'Enabled',
|
|
default: true
|
|
},
|
|
paused: {
|
|
type: 'boolean',
|
|
title: 'Paused',
|
|
default: false
|
|
},
|
|
endpoints: {
|
|
items: {
|
|
'$ref': '#/components/schemas/Endpoint'
|
|
},
|
|
type: 'array',
|
|
title: 'Endpoints',
|
|
default: []
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['definition'],
|
|
title: 'FlowDetail',
|
|
description: `A flow plus how it is currently doing.
|
|
|
|
\`\`definition\`\` is the working copy — the unpublished draft when there is
|
|
one — because that is what the editor shows. \`\`nodes\`\` reports the
|
|
published flow, which is what is actually running.`
|
|
} as const;
|
|
|
|
export const FlowInput_InputSchema = {
|
|
properties: {
|
|
spec: {
|
|
'$ref': '#/components/schemas/MessageSpec'
|
|
},
|
|
initial: {
|
|
anyOf: [
|
|
{},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Initial'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['spec'],
|
|
title: 'FlowInput',
|
|
description: 'A message the flow starts with rather than computes.'
|
|
} as const;
|
|
|
|
export const FlowInput_OutputSchema = {
|
|
properties: {
|
|
spec: {
|
|
'$ref': '#/components/schemas/MessageSpec'
|
|
},
|
|
initial: {
|
|
anyOf: [
|
|
{},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Initial'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['spec'],
|
|
title: 'FlowInput',
|
|
description: 'A message the flow starts with rather than computes.'
|
|
} as const;
|
|
|
|
export const FlowStatePublicSchema = {
|
|
properties: {
|
|
values: {
|
|
additionalProperties: {
|
|
'$ref': '#/components/schemas/app__flow__schemas__MessageValue'
|
|
},
|
|
type: 'object',
|
|
title: 'Values'
|
|
},
|
|
nodes: {
|
|
items: {
|
|
'$ref': '#/components/schemas/NodeStatusPublic'
|
|
},
|
|
type: 'array',
|
|
title: 'Nodes'
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'FlowStatePublic'
|
|
} as const;
|
|
|
|
export const FlowSummarySchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
node_count: {
|
|
type: 'integer',
|
|
title: 'Node Count',
|
|
default: 0
|
|
},
|
|
error_count: {
|
|
type: 'integer',
|
|
title: 'Error Count',
|
|
default: 0
|
|
},
|
|
has_draft: {
|
|
type: 'boolean',
|
|
title: 'Has Draft',
|
|
default: false
|
|
},
|
|
enabled: {
|
|
type: 'boolean',
|
|
title: 'Enabled',
|
|
default: true
|
|
},
|
|
paused: {
|
|
type: 'boolean',
|
|
title: 'Paused',
|
|
default: false
|
|
},
|
|
quarantined: {
|
|
type: 'boolean',
|
|
title: 'Quarantined',
|
|
default: false
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'FlowSummary'
|
|
} as const;
|
|
|
|
export const FlowsPublicSchema = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
'$ref': '#/components/schemas/FlowSummary'
|
|
},
|
|
type: 'array',
|
|
title: 'Data'
|
|
},
|
|
count: {
|
|
type: 'integer',
|
|
title: 'Count'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['data', 'count'],
|
|
title: 'FlowsPublic'
|
|
} as const;
|
|
|
|
export const HTTPValidationErrorSchema = {
|
|
properties: {
|
|
detail: {
|
|
items: {
|
|
'$ref': '#/components/schemas/ValidationError'
|
|
},
|
|
type: 'array',
|
|
title: 'Detail'
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'HTTPValidationError'
|
|
} as const;
|
|
|
|
export const HistoryPointSchema = {
|
|
properties: {
|
|
ts: {
|
|
type: 'number',
|
|
title: 'Ts'
|
|
},
|
|
value: {
|
|
type: 'number',
|
|
title: 'Value'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['ts', 'value'],
|
|
title: 'HistoryPoint',
|
|
description: 'One numeric value a message carried, and when.'
|
|
} as const;
|
|
|
|
export const LibraryNodeSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
used_by: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Used By'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'LibraryNode',
|
|
description: 'A node source shared across flows, and who is using it.'
|
|
} as const;
|
|
|
|
export const MessageSchema = {
|
|
properties: {
|
|
message: {
|
|
type: 'string',
|
|
title: 'Message'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['message'],
|
|
title: 'Message'
|
|
} as const;
|
|
|
|
export const MessageHistorySchema = {
|
|
properties: {
|
|
message: {
|
|
type: 'string',
|
|
title: 'Message'
|
|
},
|
|
numeric: {
|
|
type: 'boolean',
|
|
title: 'Numeric',
|
|
default: false
|
|
},
|
|
points: {
|
|
items: {
|
|
'$ref': '#/components/schemas/HistoryPoint'
|
|
},
|
|
type: 'array',
|
|
title: 'Points'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['message'],
|
|
title: 'MessageHistory',
|
|
description: `A message's recent numeric values, oldest first.
|
|
|
|
Only numbers are recorded, so \`\`numeric\`\` tells the panel whether an empty
|
|
series means "nothing plottable here" or "nothing has arrived yet".`
|
|
} as const;
|
|
|
|
export const MessageInfoSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
flow: {
|
|
type: 'string',
|
|
title: 'Flow'
|
|
},
|
|
dtype: {
|
|
type: 'string',
|
|
title: 'Dtype'
|
|
},
|
|
providers: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Providers',
|
|
default: []
|
|
},
|
|
writable: {
|
|
type: 'boolean',
|
|
title: 'Writable',
|
|
default: true
|
|
},
|
|
numeric: {
|
|
type: 'boolean',
|
|
title: 'Numeric',
|
|
default: false
|
|
},
|
|
value: {
|
|
title: 'Value'
|
|
},
|
|
ts: {
|
|
anyOf: [
|
|
{
|
|
type: 'number'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Ts'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name', 'flow', 'dtype'],
|
|
title: 'MessageInfo',
|
|
description: 'One message, as something to bind a widget to.'
|
|
} as const;
|
|
|
|
export const MessagePointsSchema = {
|
|
properties: {
|
|
message: {
|
|
type: 'string',
|
|
title: 'Message'
|
|
},
|
|
numeric: {
|
|
type: 'boolean',
|
|
title: 'Numeric'
|
|
},
|
|
points: {
|
|
items: {
|
|
additionalProperties: {
|
|
type: 'number'
|
|
},
|
|
type: 'object'
|
|
},
|
|
type: 'array',
|
|
title: 'Points'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['message', 'numeric', 'points'],
|
|
title: 'MessagePoints'
|
|
} as const;
|
|
|
|
export const MessageSpecSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name',
|
|
default: ''
|
|
},
|
|
port: {
|
|
type: 'string',
|
|
title: 'Port',
|
|
default: ''
|
|
},
|
|
dtype: {
|
|
'$ref': '#/components/schemas/DType',
|
|
default: 'float'
|
|
},
|
|
interval: {
|
|
type: 'number',
|
|
minimum: 0,
|
|
title: 'Interval',
|
|
default: 0
|
|
},
|
|
trigger: {
|
|
type: 'boolean',
|
|
title: 'Trigger',
|
|
default: true
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'MessageSpec',
|
|
description: `A single port of a node, and the message it is bound to.
|
|
|
|
:param name: The message this port binds to. Bare names are qualified with
|
|
the flow name at load time; empty means the port is unbound.
|
|
:param port: The identifier the node function sees. Defaults to the last
|
|
segment of \`\`name\`\`, so unqualified flows read naturally.
|
|
:param dtype: Payload type, validated on every message that passes through.
|
|
:param interval: Deliver at most every this many seconds; 0 is every time.
|
|
On an output it holds back publishing, on an input it holds back waking
|
|
the node. The value is never lost — state keeps the latest — only the
|
|
delivery is skipped.
|
|
:param trigger: Whether arriving values wake the node. An input with this
|
|
off is read when the node runs for some other reason, but never causes
|
|
a run and never makes the node wait — which is how a node reads a
|
|
message it also produces without depending on itself.`
|
|
} as const;
|
|
|
|
export const MessagesPublicSchema = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
'$ref': '#/components/schemas/MessageInfo'
|
|
},
|
|
type: 'array',
|
|
title: 'Data'
|
|
},
|
|
count: {
|
|
type: 'integer',
|
|
title: 'Count'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['data', 'count'],
|
|
title: 'MessagesPublic'
|
|
} as const;
|
|
|
|
export const NewPasswordSchema = {
|
|
properties: {
|
|
token: {
|
|
type: 'string',
|
|
title: 'Token'
|
|
},
|
|
new_password: {
|
|
type: 'string',
|
|
maxLength: 128,
|
|
minLength: 8,
|
|
title: 'New Password'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['token', 'new_password'],
|
|
title: 'NewPassword'
|
|
} as const;
|
|
|
|
export const NodeDef_InputSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
type: {
|
|
type: 'string',
|
|
title: 'Type',
|
|
default: 'python'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
position: {
|
|
'$ref': '#/components/schemas/Position',
|
|
default: {
|
|
x: 0,
|
|
y: 0
|
|
}
|
|
},
|
|
params: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Params'
|
|
},
|
|
requires: {
|
|
items: {
|
|
'$ref': '#/components/schemas/MessageSpec'
|
|
},
|
|
type: 'array',
|
|
title: 'Requires'
|
|
},
|
|
provides: {
|
|
items: {
|
|
'$ref': '#/components/schemas/MessageSpec'
|
|
},
|
|
type: 'array',
|
|
title: 'Provides'
|
|
},
|
|
source_ref: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Source Ref'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'NodeDef',
|
|
description: 'A node as stored: identity, placement, configuration and ports.'
|
|
} as const;
|
|
|
|
export const NodeDef_OutputSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
type: {
|
|
type: 'string',
|
|
title: 'Type',
|
|
default: 'python'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
position: {
|
|
'$ref': '#/components/schemas/Position',
|
|
default: {
|
|
x: 0,
|
|
y: 0
|
|
}
|
|
},
|
|
params: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Params'
|
|
},
|
|
requires: {
|
|
items: {
|
|
'$ref': '#/components/schemas/MessageSpec'
|
|
},
|
|
type: 'array',
|
|
title: 'Requires'
|
|
},
|
|
provides: {
|
|
items: {
|
|
'$ref': '#/components/schemas/MessageSpec'
|
|
},
|
|
type: 'array',
|
|
title: 'Provides'
|
|
},
|
|
source_ref: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Source Ref'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'NodeDef',
|
|
description: 'A node as stored: identity, placement, configuration and ports.'
|
|
} as const;
|
|
|
|
export const NodeSourceSchema = {
|
|
properties: {
|
|
code: {
|
|
type: 'string',
|
|
title: 'Code'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['code'],
|
|
title: 'NodeSource',
|
|
description: 'The Python source of a node.'
|
|
} as const;
|
|
|
|
export const NodeStatusPublicSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
status: {
|
|
type: 'string',
|
|
title: 'Status',
|
|
default: 'active'
|
|
},
|
|
error: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Error'
|
|
},
|
|
health: {
|
|
type: 'string',
|
|
enum: ['ok', 'degraded', 'down'],
|
|
title: 'Health',
|
|
default: 'ok'
|
|
},
|
|
health_detail: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Health Detail'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'NodeStatusPublic',
|
|
description: 'Whether a node loaded, and how its connection is doing.'
|
|
} as const;
|
|
|
|
export const NodeTypeInfoSchema = {
|
|
properties: {
|
|
type: {
|
|
type: 'string',
|
|
title: 'Type'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title'
|
|
},
|
|
description: {
|
|
type: 'string',
|
|
title: 'Description'
|
|
},
|
|
params_schema: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Params Schema'
|
|
},
|
|
has_source: {
|
|
type: 'boolean',
|
|
title: 'Has Source',
|
|
default: false
|
|
},
|
|
free_params: {
|
|
type: 'boolean',
|
|
title: 'Free Params',
|
|
default: false
|
|
},
|
|
plugin: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Plugin'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['type', 'title', 'description'],
|
|
title: 'NodeTypeInfo',
|
|
description: 'A node type the editor can offer, with its parameter schema.'
|
|
} as const;
|
|
|
|
export const OAuthAuthorizeInfoSchema = {
|
|
properties: {
|
|
client_name: {
|
|
type: 'string',
|
|
title: 'Client Name'
|
|
},
|
|
redirect_uri: {
|
|
type: 'string',
|
|
title: 'Redirect Uri'
|
|
},
|
|
scope: {
|
|
type: 'string',
|
|
title: 'Scope'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['client_name', 'redirect_uri', 'scope'],
|
|
title: 'OAuthAuthorizeInfo',
|
|
description: 'What the consent page shows, all of it validated server-side.'
|
|
} as const;
|
|
|
|
export const OAuthAuthorizeRequestSchema = {
|
|
properties: {
|
|
client_id: {
|
|
type: 'string',
|
|
title: 'Client Id'
|
|
},
|
|
redirect_uri: {
|
|
type: 'string',
|
|
title: 'Redirect Uri'
|
|
},
|
|
code_challenge: {
|
|
type: 'string',
|
|
title: 'Code Challenge'
|
|
},
|
|
code_challenge_method: {
|
|
type: 'string',
|
|
title: 'Code Challenge Method',
|
|
default: 'S256'
|
|
},
|
|
state: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'State'
|
|
},
|
|
resource: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Resource'
|
|
},
|
|
scope: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Scope'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['client_id', 'redirect_uri', 'code_challenge'],
|
|
title: 'OAuthAuthorizeRequest'
|
|
} as const;
|
|
|
|
export const OAuthAuthorizeResponseSchema = {
|
|
properties: {
|
|
redirect_url: {
|
|
type: 'string',
|
|
title: 'Redirect Url'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['redirect_url'],
|
|
title: 'OAuthAuthorizeResponse'
|
|
} as const;
|
|
|
|
export const OAuthClientRegisterSchema = {
|
|
properties: {
|
|
client_name: {
|
|
type: 'string',
|
|
maxLength: 128,
|
|
title: 'Client Name',
|
|
default: 'MCP client'
|
|
},
|
|
redirect_uris: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Redirect Uris'
|
|
},
|
|
grant_types: {
|
|
anyOf: [
|
|
{
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Grant Types'
|
|
},
|
|
response_types: {
|
|
anyOf: [
|
|
{
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Response Types'
|
|
},
|
|
token_endpoint_auth_method: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Token Endpoint Auth Method'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['redirect_uris'],
|
|
title: 'OAuthClientRegister',
|
|
description: 'RFC 7591 dynamic client registration request.'
|
|
} as const;
|
|
|
|
export const PageDef_InputSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
icon: {
|
|
type: 'string',
|
|
title: 'Icon',
|
|
default: ''
|
|
},
|
|
sections: {
|
|
items: {
|
|
'$ref': '#/components/schemas/SectionDef-Input'
|
|
},
|
|
type: 'array',
|
|
title: 'Sections'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'PageDef',
|
|
description: 'One tab of a dashboard.'
|
|
} as const;
|
|
|
|
export const PageDef_OutputSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
icon: {
|
|
type: 'string',
|
|
title: 'Icon',
|
|
default: ''
|
|
},
|
|
sections: {
|
|
items: {
|
|
'$ref': '#/components/schemas/SectionDef-Output'
|
|
},
|
|
type: 'array',
|
|
title: 'Sections'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'PageDef',
|
|
description: 'One tab of a dashboard.'
|
|
} as const;
|
|
|
|
export const PlacementSchema = {
|
|
properties: {
|
|
x: {
|
|
type: 'integer',
|
|
title: 'X',
|
|
default: 0
|
|
},
|
|
y: {
|
|
type: 'integer',
|
|
title: 'Y',
|
|
default: 0
|
|
},
|
|
w: {
|
|
type: 'integer',
|
|
title: 'W',
|
|
default: 3
|
|
},
|
|
h: {
|
|
type: 'integer',
|
|
title: 'H',
|
|
default: 2
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'Placement',
|
|
description: "Where a widget sits in its section's grid, in grid units."
|
|
} as const;
|
|
|
|
export const PositionSchema = {
|
|
properties: {
|
|
x: {
|
|
type: 'number',
|
|
title: 'X',
|
|
default: 0
|
|
},
|
|
y: {
|
|
type: 'number',
|
|
title: 'Y',
|
|
default: 0
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'Position',
|
|
description: 'Where a node sits on the canvas.'
|
|
} as const;
|
|
|
|
export const PrivateUserCreateSchema = {
|
|
properties: {
|
|
email: {
|
|
type: 'string',
|
|
title: 'Email'
|
|
},
|
|
password: {
|
|
type: 'string',
|
|
title: 'Password'
|
|
},
|
|
full_name: {
|
|
type: 'string',
|
|
title: 'Full Name'
|
|
},
|
|
is_verified: {
|
|
type: 'boolean',
|
|
title: 'Is Verified',
|
|
default: false
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['email', 'password', 'full_name'],
|
|
title: 'PrivateUserCreate'
|
|
} as const;
|
|
|
|
export const RegisteredClientSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
format: 'uuid',
|
|
title: 'Id'
|
|
},
|
|
client_name: {
|
|
type: 'string',
|
|
title: 'Client Name'
|
|
},
|
|
redirect_uris: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Redirect Uris'
|
|
},
|
|
created_at: {
|
|
type: 'string',
|
|
format: 'date-time',
|
|
title: 'Created At'
|
|
},
|
|
active_tokens: {
|
|
type: 'integer',
|
|
title: 'Active Tokens'
|
|
},
|
|
last_authorized_at: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
format: 'date-time'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Last Authorized At'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id', 'client_name', 'redirect_uris', 'created_at', 'active_tokens', 'last_authorized_at'],
|
|
title: 'RegisteredClient',
|
|
description: 'A registered agent, and whether anyone actually let it in.'
|
|
} as const;
|
|
|
|
export const RegisteredClientsSchema = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
'$ref': '#/components/schemas/RegisteredClient'
|
|
},
|
|
type: 'array',
|
|
title: 'Data'
|
|
},
|
|
count: {
|
|
type: 'integer',
|
|
title: 'Count'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['data', 'count'],
|
|
title: 'RegisteredClients'
|
|
} as const;
|
|
|
|
export const RuleSchema = {
|
|
properties: {
|
|
events: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Events'
|
|
},
|
|
channels: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Channels'
|
|
},
|
|
cooldown_s: {
|
|
type: 'number',
|
|
title: 'Cooldown S',
|
|
default: 900
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'Rule',
|
|
description: 'Which events go to which channels.'
|
|
} as const;
|
|
|
|
export const RunRequestSchema = {
|
|
properties: {
|
|
inputs: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Inputs',
|
|
default: {}
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'RunRequest'
|
|
} as const;
|
|
|
|
export const SecretNamesSchema = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Data'
|
|
},
|
|
count: {
|
|
type: 'integer',
|
|
title: 'Count'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['data', 'count'],
|
|
title: 'SecretNames'
|
|
} as const;
|
|
|
|
export const SecretValueSchema = {
|
|
properties: {
|
|
value: {
|
|
type: 'string',
|
|
title: 'Value'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['value'],
|
|
title: 'SecretValue'
|
|
} as const;
|
|
|
|
export const SectionDef_InputSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
widgets: {
|
|
items: {
|
|
'$ref': '#/components/schemas/WidgetDef'
|
|
},
|
|
type: 'array',
|
|
title: 'Widgets'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'SectionDef',
|
|
description: 'A grid of widgets under a heading.'
|
|
} as const;
|
|
|
|
export const SectionDef_OutputSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
widgets: {
|
|
items: {
|
|
'$ref': '#/components/schemas/WidgetDef'
|
|
},
|
|
type: 'array',
|
|
title: 'Widgets'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id'],
|
|
title: 'SectionDef',
|
|
description: 'A grid of widgets under a heading.'
|
|
} as const;
|
|
|
|
export const ShareRequestSchema = {
|
|
properties: {
|
|
lib_name: {
|
|
type: 'string',
|
|
title: 'Lib Name'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['lib_name'],
|
|
title: 'ShareRequest'
|
|
} as const;
|
|
|
|
export const TokenSchema = {
|
|
properties: {
|
|
access_token: {
|
|
type: 'string',
|
|
title: 'Access Token'
|
|
},
|
|
token_type: {
|
|
type: 'string',
|
|
title: 'Token Type',
|
|
default: 'bearer'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['access_token'],
|
|
title: 'Token'
|
|
} as const;
|
|
|
|
export const TriggerRequestSchema = {
|
|
properties: {
|
|
values: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Values',
|
|
default: {}
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'TriggerRequest'
|
|
} as const;
|
|
|
|
export const UpdatePasswordSchema = {
|
|
properties: {
|
|
current_password: {
|
|
type: 'string',
|
|
maxLength: 128,
|
|
minLength: 8,
|
|
title: 'Current Password'
|
|
},
|
|
new_password: {
|
|
type: 'string',
|
|
maxLength: 128,
|
|
minLength: 8,
|
|
title: 'New Password'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['current_password', 'new_password'],
|
|
title: 'UpdatePassword'
|
|
} as const;
|
|
|
|
export const UserCreateSchema = {
|
|
properties: {
|
|
email: {
|
|
type: 'string',
|
|
maxLength: 255,
|
|
format: 'email',
|
|
title: 'Email'
|
|
},
|
|
is_active: {
|
|
type: 'boolean',
|
|
title: 'Is Active',
|
|
default: true
|
|
},
|
|
is_superuser: {
|
|
type: 'boolean',
|
|
title: 'Is Superuser',
|
|
default: false
|
|
},
|
|
full_name: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Full Name'
|
|
},
|
|
password: {
|
|
type: 'string',
|
|
maxLength: 128,
|
|
minLength: 8,
|
|
title: 'Password'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['email', 'password'],
|
|
title: 'UserCreate'
|
|
} as const;
|
|
|
|
export const UserPublicSchema = {
|
|
properties: {
|
|
email: {
|
|
type: 'string',
|
|
maxLength: 255,
|
|
format: 'email',
|
|
title: 'Email'
|
|
},
|
|
is_active: {
|
|
type: 'boolean',
|
|
title: 'Is Active',
|
|
default: true
|
|
},
|
|
is_superuser: {
|
|
type: 'boolean',
|
|
title: 'Is Superuser',
|
|
default: false
|
|
},
|
|
full_name: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Full Name'
|
|
},
|
|
id: {
|
|
type: 'string',
|
|
format: 'uuid',
|
|
title: 'Id'
|
|
},
|
|
created_at: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
format: 'date-time'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Created At'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['email', 'id'],
|
|
title: 'UserPublic'
|
|
} as const;
|
|
|
|
export const UserRegisterSchema = {
|
|
properties: {
|
|
email: {
|
|
type: 'string',
|
|
maxLength: 255,
|
|
format: 'email',
|
|
title: 'Email'
|
|
},
|
|
password: {
|
|
type: 'string',
|
|
maxLength: 128,
|
|
minLength: 8,
|
|
title: 'Password'
|
|
},
|
|
full_name: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Full Name'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['email', 'password'],
|
|
title: 'UserRegister'
|
|
} as const;
|
|
|
|
export const UserUpdateSchema = {
|
|
properties: {
|
|
email: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255,
|
|
format: 'email'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Email'
|
|
},
|
|
is_active: {
|
|
type: 'boolean',
|
|
title: 'Is Active',
|
|
default: true
|
|
},
|
|
is_superuser: {
|
|
type: 'boolean',
|
|
title: 'Is Superuser',
|
|
default: false
|
|
},
|
|
full_name: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Full Name'
|
|
},
|
|
password: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 128,
|
|
minLength: 8
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Password'
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'UserUpdate'
|
|
} as const;
|
|
|
|
export const UserUpdateMeSchema = {
|
|
properties: {
|
|
full_name: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Full Name'
|
|
},
|
|
email: {
|
|
anyOf: [
|
|
{
|
|
type: 'string',
|
|
maxLength: 255,
|
|
format: 'email'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Email'
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'UserUpdateMe'
|
|
} as const;
|
|
|
|
export const UsersPublicSchema = {
|
|
properties: {
|
|
data: {
|
|
items: {
|
|
'$ref': '#/components/schemas/UserPublic'
|
|
},
|
|
type: 'array',
|
|
title: 'Data'
|
|
},
|
|
count: {
|
|
type: 'integer',
|
|
title: 'Count'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['data', 'count'],
|
|
title: 'UsersPublic'
|
|
} as const;
|
|
|
|
export const ValidationErrorSchema = {
|
|
properties: {
|
|
loc: {
|
|
items: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'integer'
|
|
}
|
|
]
|
|
},
|
|
type: 'array',
|
|
title: 'Location'
|
|
},
|
|
msg: {
|
|
type: 'string',
|
|
title: 'Message'
|
|
},
|
|
type: {
|
|
type: 'string',
|
|
title: 'Error Type'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['loc', 'msg', 'type'],
|
|
title: 'ValidationError'
|
|
} as const;
|
|
|
|
export const ValidationIssueSchema = {
|
|
properties: {
|
|
code: {
|
|
type: 'string',
|
|
enum: ['cycle', 'unconnected_input', 'missing_initial_value', 'node_error', 'unauthenticated_hook', 'self_loop_needs_initial'],
|
|
title: 'Code'
|
|
},
|
|
message: {
|
|
type: 'string',
|
|
title: 'Message'
|
|
},
|
|
flow: {
|
|
type: 'string',
|
|
title: 'Flow',
|
|
default: ''
|
|
},
|
|
nodes: {
|
|
items: {
|
|
type: 'string'
|
|
},
|
|
type: 'array',
|
|
title: 'Nodes',
|
|
default: []
|
|
},
|
|
node: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Node'
|
|
},
|
|
port: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Port'
|
|
},
|
|
message_name: {
|
|
anyOf: [
|
|
{
|
|
type: 'string'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Message Name'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['code', 'message'],
|
|
title: 'ValidationIssue',
|
|
description: 'A problem that keeps a flow from running correctly.'
|
|
} as const;
|
|
|
|
export const ValidationResultSchema = {
|
|
properties: {
|
|
issues: {
|
|
items: {
|
|
'$ref': '#/components/schemas/ValidationIssue'
|
|
},
|
|
type: 'array',
|
|
title: 'Issues',
|
|
default: []
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'ValidationResult'
|
|
} as const;
|
|
|
|
export const WidgetDefSchema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: 'Id'
|
|
},
|
|
type: {
|
|
type: 'string',
|
|
enum: ['stat', 'gauge', 'chart', 'markdown', 'button', 'switch', 'slider', 'input', 'dropdown'],
|
|
title: 'Type'
|
|
},
|
|
title: {
|
|
type: 'string',
|
|
title: 'Title',
|
|
default: ''
|
|
},
|
|
layout: {
|
|
additionalProperties: {
|
|
'$ref': '#/components/schemas/Placement'
|
|
},
|
|
type: 'object',
|
|
title: 'Layout'
|
|
},
|
|
config: {
|
|
additionalProperties: true,
|
|
type: 'object',
|
|
title: 'Config'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['id', 'type'],
|
|
title: 'WidgetDef',
|
|
description: `One tile: what it shows or does, and where it sits.
|
|
|
|
\`\`config\`\` is per type — a chart names its series, a button names the
|
|
message it publishes — and is validated against the type below rather than
|
|
by a schema per class, because the whole set is small and closed.`
|
|
} as const;
|
|
|
|
export const app__api__routes__dashboards__RenameRequestSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name'],
|
|
title: 'RenameRequest'
|
|
} as const;
|
|
|
|
export const app__api__routes__flows__PublishRequestSchema = {
|
|
properties: {
|
|
version: {
|
|
type: 'integer',
|
|
title: 'Version'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['version'],
|
|
title: 'PublishRequest'
|
|
} as const;
|
|
|
|
export const app__api__routes__flows__RenameRequestSchema = {
|
|
properties: {
|
|
new_name: {
|
|
type: 'string',
|
|
title: 'New Name'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['new_name'],
|
|
title: 'RenameRequest'
|
|
} as const;
|
|
|
|
export const app__api__routes__messages__MessageValueSchema = {
|
|
properties: {
|
|
name: {
|
|
type: 'string',
|
|
title: 'Name'
|
|
},
|
|
value: {
|
|
title: 'Value'
|
|
},
|
|
ts: {
|
|
anyOf: [
|
|
{
|
|
type: 'number'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Ts'
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['name', 'value'],
|
|
title: 'MessageValue'
|
|
} as const;
|
|
|
|
export const app__api__routes__messages__PublishRequestSchema = {
|
|
properties: {
|
|
value: {
|
|
title: 'Value'
|
|
},
|
|
source_kind: {
|
|
type: 'string',
|
|
title: 'Source Kind',
|
|
default: 'api'
|
|
},
|
|
source_id: {
|
|
type: 'string',
|
|
title: 'Source Id',
|
|
default: ''
|
|
},
|
|
source_label: {
|
|
type: 'string',
|
|
title: 'Source Label',
|
|
default: ''
|
|
},
|
|
source_detail: {
|
|
type: 'string',
|
|
title: 'Source Detail',
|
|
default: ''
|
|
}
|
|
},
|
|
type: 'object',
|
|
required: ['value'],
|
|
title: 'PublishRequest'
|
|
} as const;
|
|
|
|
export const app__flow__schemas__MessageValueSchema = {
|
|
properties: {
|
|
value: {
|
|
title: 'Value'
|
|
},
|
|
ts: {
|
|
anyOf: [
|
|
{
|
|
type: 'number'
|
|
},
|
|
{
|
|
type: 'null'
|
|
}
|
|
],
|
|
title: 'Ts'
|
|
}
|
|
},
|
|
type: 'object',
|
|
title: 'MessageValue',
|
|
description: 'The last payload seen on a message.'
|
|
} as const; |