mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-11-13 18:21:00 +00:00
1925 lines
43 KiB
JSON
1925 lines
43 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://netcatty.com/schemas/plugins/0.1.0-internal/plugin-contract.schema.json",
|
|
"title": "Netcatty Plugin Contract",
|
|
"description": "Canonical public contract for Netcatty plugin manifests and host RPC messages.",
|
|
"$ref": "#/$defs/PluginManifest",
|
|
"$defs": {
|
|
"JsonPrimitive": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "boolean"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"JsonValue": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/JsonPrimitive"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"JsonValueLimits": {
|
|
"description": "Host-enforced structural limits for every plugin protocol JSON value.",
|
|
"const": {
|
|
"maxDepth": 128,
|
|
"maxNodes": 100000
|
|
}
|
|
},
|
|
"WireIntegerLimits": {
|
|
"description": "Host-enforced integer precision limit for JSON protocol fields used in identity, ordering, and correlation.",
|
|
"const": {
|
|
"maxSafeInteger": 9007199254740991
|
|
}
|
|
},
|
|
"SafeUnsignedInteger": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"SafePositiveInteger": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"StreamLimits": {
|
|
"description": "Host-enforced byte limits for stream chunks and receive-credit control frames.",
|
|
"const": {
|
|
"maxChunkBytes": 16777216,
|
|
"minWindowBytes": 1024,
|
|
"maxWindowBytes": 16777216,
|
|
"maxCreditBytes": 16777216
|
|
}
|
|
},
|
|
"StreamChunkByteLength": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 16777216
|
|
},
|
|
"StreamWindowBytes": {
|
|
"type": "integer",
|
|
"minimum": 1024,
|
|
"maximum": 16777216
|
|
},
|
|
"StreamCreditBytes": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 16777216
|
|
},
|
|
"RelativePackagePath": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128,
|
|
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*//)(?!.*\\\\)(?!.*[\\u0000-\\u001F<>:\"|?*])(?!\\.{1,2}(?:/|$))(?!.*\\/\\.{1,2}(?:/|$))(?!(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Mm][1-9]|[Ll][Pp][Tt][1-9])(?:\\.[^/]*)?(?:/|$))(?!.*\\/(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Mm][1-9]|[Ll][Pp][Tt][1-9])(?:\\.[^/]*)?(?:/|$))(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
|
|
},
|
|
"PluginId": {
|
|
"type": "string",
|
|
"minLength": 3,
|
|
"maxLength": 128,
|
|
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$"
|
|
},
|
|
"ContributionId": {
|
|
"type": "string",
|
|
"minLength": 5,
|
|
"maxLength": 192,
|
|
"description": "A globally unique contribution id. Semantic validation requires the exact '<pluginId>.' prefix.",
|
|
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+\\.[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z][A-Za-z0-9_-]*)*$"
|
|
},
|
|
"FeatureId": {
|
|
"type": "string",
|
|
"minLength": 3,
|
|
"maxLength": 128,
|
|
"pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z0-9][a-z0-9_-]*)+$"
|
|
},
|
|
"SecretRef": {
|
|
"description": "An opaque host-issued reference to secret material. The identifier is never sufficient authority on its own; privileged consumers must revalidate plugin ownership and operation scope.",
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"id"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "secret"
|
|
},
|
|
"id": {
|
|
"type": "string",
|
|
"minLength": 16,
|
|
"maxLength": 256
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SemanticVersion": {
|
|
"type": "string",
|
|
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
|
|
},
|
|
"SemverRange": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128,
|
|
"description": "A node-semver compatible range. Official consumers must also run semantic validation.",
|
|
"pattern": "^(?! *$)[0-9A-Za-z<>=~^*xX|.\\-+ ]+$"
|
|
},
|
|
"LocalizedText": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 512
|
|
},
|
|
{
|
|
"type": "object",
|
|
"minProperties": 1,
|
|
"propertyNames": {
|
|
"pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 512
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"PluginPermission": {
|
|
"type": "string",
|
|
"enum": [
|
|
"storage",
|
|
"settings.read",
|
|
"settings.write",
|
|
"commands",
|
|
"menus",
|
|
"views",
|
|
"clipboard.read",
|
|
"clipboard.write",
|
|
"terminal.metadata",
|
|
"terminal.output",
|
|
"terminal.input",
|
|
"terminal.decorate",
|
|
"terminal.complete",
|
|
"terminal.intercept.input",
|
|
"terminal.intercept.output",
|
|
"vault.metadata",
|
|
"vault.write",
|
|
"vault.credentials",
|
|
"sftp.read",
|
|
"sftp.write",
|
|
"network",
|
|
"filesystem.read",
|
|
"filesystem.write",
|
|
"secrets",
|
|
"companion.execute",
|
|
"provider.terminal",
|
|
"provider.connection",
|
|
"provider.authentication",
|
|
"provider.sync",
|
|
"provider.importer"
|
|
]
|
|
},
|
|
"PermissionDeclaration": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/PluginPermission"
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"permission",
|
|
"resources"
|
|
],
|
|
"properties": {
|
|
"permission": {
|
|
"$ref": "#/$defs/PluginPermission"
|
|
},
|
|
"resources": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 128,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
}
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"maxLength": 1024
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"PermissionSet": {
|
|
"type": "object",
|
|
"properties": {
|
|
"required": {
|
|
"type": "array",
|
|
"maxItems": 64,
|
|
"items": {
|
|
"$ref": "#/$defs/PermissionDeclaration"
|
|
}
|
|
},
|
|
"optional": {
|
|
"type": "array",
|
|
"maxItems": 64,
|
|
"items": {
|
|
"$ref": "#/$defs/PermissionDeclaration"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PluginEntrypoints": {
|
|
"type": "object",
|
|
"properties": {
|
|
"browser": {
|
|
"$ref": "#/$defs/RelativePackagePath"
|
|
},
|
|
"node": {
|
|
"$ref": "#/$defs/RelativePackagePath"
|
|
}
|
|
},
|
|
"minProperties": 1,
|
|
"additionalProperties": false
|
|
},
|
|
"PluginEngines": {
|
|
"type": "object",
|
|
"required": [
|
|
"netcatty",
|
|
"api"
|
|
],
|
|
"properties": {
|
|
"netcatty": {
|
|
"$ref": "#/$defs/SemverRange"
|
|
},
|
|
"api": {
|
|
"$ref": "#/$defs/SemverRange"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PluginEngineHeader": {
|
|
"type": "object",
|
|
"required": [
|
|
"netcatty",
|
|
"api"
|
|
],
|
|
"properties": {
|
|
"netcatty": {
|
|
"$ref": "#/$defs/SemverRange"
|
|
},
|
|
"api": {
|
|
"$ref": "#/$defs/SemverRange"
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"PluginFeatures": {
|
|
"type": "object",
|
|
"properties": {
|
|
"required": {
|
|
"type": "array",
|
|
"maxItems": 128,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/FeatureId"
|
|
}
|
|
},
|
|
"optional": {
|
|
"type": "array",
|
|
"maxItems": 128,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/FeatureId"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ActivationEvent": {
|
|
"oneOf": [
|
|
{
|
|
"const": "onStartupFinished"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"maxLength": 256,
|
|
"pattern": "^on(?:Command|View|Provider):[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+\\.[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z][A-Za-z0-9_-]*)*$"
|
|
}
|
|
]
|
|
},
|
|
"ContextKeyExpression": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 1024,
|
|
"description": "A host-parsed Context Key expression. Plugins must not evaluate this string themselves."
|
|
},
|
|
"ThemeIcon": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"name"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "theme"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 64,
|
|
"pattern": "^[a-z][a-z0-9-]*$"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PackageIcon": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"light"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "package"
|
|
},
|
|
"light": {
|
|
"$ref": "#/$defs/RelativePackagePath"
|
|
},
|
|
"dark": {
|
|
"$ref": "#/$defs/RelativePackagePath"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"IconReference": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/ThemeIcon"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/PackageIcon"
|
|
}
|
|
]
|
|
},
|
|
"SettingScope": {
|
|
"type": "string",
|
|
"enum": [
|
|
"application",
|
|
"workspace",
|
|
"host",
|
|
"session",
|
|
"device"
|
|
]
|
|
},
|
|
"SettingControl": {
|
|
"type": "string",
|
|
"enum": [
|
|
"switch",
|
|
"radio",
|
|
"select",
|
|
"multiselect",
|
|
"text",
|
|
"textarea",
|
|
"number",
|
|
"slider",
|
|
"password",
|
|
"color",
|
|
"font",
|
|
"file",
|
|
"directory",
|
|
"keybinding",
|
|
"list",
|
|
"table"
|
|
]
|
|
},
|
|
"SettingOption": {
|
|
"type": "object",
|
|
"required": [
|
|
"value",
|
|
"label"
|
|
],
|
|
"properties": {
|
|
"value": {
|
|
"type": "string",
|
|
"maxLength": 256
|
|
},
|
|
"label": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"description": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SettingContribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"label",
|
|
"control",
|
|
"scope"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"label": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"description": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"control": {
|
|
"$ref": "#/$defs/SettingControl"
|
|
},
|
|
"scope": {
|
|
"$ref": "#/$defs/SettingScope"
|
|
},
|
|
"default": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
},
|
|
"secret": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"required": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"options": {
|
|
"type": "array",
|
|
"maxItems": 256,
|
|
"items": {
|
|
"$ref": "#/$defs/SettingOption"
|
|
}
|
|
},
|
|
"minimum": {
|
|
"type": "number"
|
|
},
|
|
"maximum": {
|
|
"type": "number"
|
|
},
|
|
"step": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"pattern": {
|
|
"type": "string",
|
|
"maxLength": 512
|
|
},
|
|
"placeholder": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"when": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
},
|
|
"restartRequired": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"sync": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"sortable": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"valueSchema": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CommandContribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"title"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"title": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"category": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"description": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"icon": {
|
|
"$ref": "#/$defs/IconReference"
|
|
},
|
|
"enablement": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"KeybindingContribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"command",
|
|
"key"
|
|
],
|
|
"properties": {
|
|
"command": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"mac": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"linux": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"windows": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"when": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
},
|
|
"args": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"MenuLocation": {
|
|
"type": "string",
|
|
"enum": [
|
|
"commandPalette",
|
|
"application",
|
|
"host/context",
|
|
"terminal/context",
|
|
"terminal/toolbar",
|
|
"statusBar"
|
|
]
|
|
},
|
|
"MenuContribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"command",
|
|
"location"
|
|
],
|
|
"properties": {
|
|
"command": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"alt": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"location": {
|
|
"$ref": "#/$defs/MenuLocation"
|
|
},
|
|
"title": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"icon": {
|
|
"$ref": "#/$defs/IconReference"
|
|
},
|
|
"group": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"order": {
|
|
"type": "number"
|
|
},
|
|
"when": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
},
|
|
"enablement": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
},
|
|
"checked": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
},
|
|
"showKeybinding": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ViewLocation": {
|
|
"type": "string",
|
|
"enum": [
|
|
"aside",
|
|
"panel",
|
|
"tab",
|
|
"modal",
|
|
"settings"
|
|
]
|
|
},
|
|
"ViewContribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"title",
|
|
"location",
|
|
"entry"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"title": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"location": {
|
|
"$ref": "#/$defs/ViewLocation"
|
|
},
|
|
"entry": {
|
|
"$ref": "#/$defs/RelativePackagePath"
|
|
},
|
|
"icon": {
|
|
"$ref": "#/$defs/IconReference"
|
|
},
|
|
"order": {
|
|
"type": "number"
|
|
},
|
|
"when": {
|
|
"$ref": "#/$defs/ContextKeyExpression"
|
|
},
|
|
"retainContextWhenHidden": {
|
|
"type": "boolean",
|
|
"default": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProviderKind": {
|
|
"type": "string",
|
|
"enum": [
|
|
"terminal.completion",
|
|
"terminal.decoration",
|
|
"terminal.link",
|
|
"terminal.hover",
|
|
"terminal.matcher",
|
|
"terminal.semantic",
|
|
"terminal.prompt",
|
|
"terminal.background",
|
|
"terminal.interceptor.input",
|
|
"terminal.interceptor.output",
|
|
"connection",
|
|
"authentication",
|
|
"sync",
|
|
"importer"
|
|
]
|
|
},
|
|
"ProviderContribution": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"label",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"label": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"description": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/$defs/ProviderKind"
|
|
},
|
|
"capabilities": {
|
|
"type": "array",
|
|
"maxItems": 64,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/FeatureId"
|
|
}
|
|
},
|
|
"configurationSchema": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CompanionPlatform": {
|
|
"type": "string",
|
|
"enum": [
|
|
"darwin-arm64",
|
|
"darwin-x64",
|
|
"linux-arm64",
|
|
"linux-x64",
|
|
"win32-arm64",
|
|
"win32-x64"
|
|
]
|
|
},
|
|
"CompanionExecutableVariant": {
|
|
"type": "object",
|
|
"required": [
|
|
"path",
|
|
"platforms",
|
|
"sha256"
|
|
],
|
|
"properties": {
|
|
"path": {
|
|
"$ref": "#/$defs/RelativePackagePath"
|
|
},
|
|
"platforms": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 6,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/CompanionPlatform"
|
|
}
|
|
},
|
|
"sha256": {
|
|
"type": "string",
|
|
"pattern": "^[a-f0-9]{64}$"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CompanionExecutable": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"variants"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"variants": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 12,
|
|
"items": {
|
|
"$ref": "#/$defs/CompanionExecutableVariant"
|
|
}
|
|
},
|
|
"permissions": {
|
|
"type": "array",
|
|
"maxItems": 32,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/PluginPermission"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PluginContributions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"settings": {
|
|
"type": "array",
|
|
"maxItems": 512,
|
|
"items": {
|
|
"$ref": "#/$defs/SettingContribution"
|
|
}
|
|
},
|
|
"commands": {
|
|
"type": "array",
|
|
"maxItems": 512,
|
|
"items": {
|
|
"$ref": "#/$defs/CommandContribution"
|
|
}
|
|
},
|
|
"keybindings": {
|
|
"type": "array",
|
|
"maxItems": 1024,
|
|
"items": {
|
|
"$ref": "#/$defs/KeybindingContribution"
|
|
}
|
|
},
|
|
"menus": {
|
|
"type": "array",
|
|
"maxItems": 1024,
|
|
"items": {
|
|
"$ref": "#/$defs/MenuContribution"
|
|
}
|
|
},
|
|
"views": {
|
|
"type": "array",
|
|
"maxItems": 128,
|
|
"items": {
|
|
"$ref": "#/$defs/ViewContribution"
|
|
}
|
|
},
|
|
"providers": {
|
|
"type": "array",
|
|
"maxItems": 256,
|
|
"items": {
|
|
"$ref": "#/$defs/ProviderContribution"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PluginManifestHeader": {
|
|
"type": "object",
|
|
"required": [
|
|
"manifestVersion",
|
|
"id",
|
|
"version",
|
|
"engines"
|
|
],
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"format": "uri-reference"
|
|
},
|
|
"manifestVersion": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/PluginId"
|
|
},
|
|
"version": {
|
|
"$ref": "#/$defs/SemanticVersion"
|
|
},
|
|
"engines": {
|
|
"$ref": "#/$defs/PluginEngineHeader"
|
|
}
|
|
},
|
|
"additionalProperties": true
|
|
},
|
|
"PluginManifest": {
|
|
"type": "object",
|
|
"required": [
|
|
"manifestVersion",
|
|
"id",
|
|
"name",
|
|
"version",
|
|
"publisher",
|
|
"engines",
|
|
"main"
|
|
],
|
|
"properties": {
|
|
"$schema": {
|
|
"type": "string",
|
|
"format": "uri-reference"
|
|
},
|
|
"manifestVersion": {
|
|
"const": 1
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/PluginId"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"displayName": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"description": {
|
|
"$ref": "#/$defs/LocalizedText"
|
|
},
|
|
"version": {
|
|
"$ref": "#/$defs/SemanticVersion"
|
|
},
|
|
"publisher": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"license": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"homepage": {
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"repository": {
|
|
"type": "string",
|
|
"format": "uri"
|
|
},
|
|
"engines": {
|
|
"$ref": "#/$defs/PluginEngines"
|
|
},
|
|
"features": {
|
|
"$ref": "#/$defs/PluginFeatures"
|
|
},
|
|
"main": {
|
|
"$ref": "#/$defs/PluginEntrypoints"
|
|
},
|
|
"activationEvents": {
|
|
"type": "array",
|
|
"maxItems": 256,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/ActivationEvent"
|
|
}
|
|
},
|
|
"permissions": {
|
|
"$ref": "#/$defs/PermissionSet"
|
|
},
|
|
"contributes": {
|
|
"$ref": "#/$defs/PluginContributions"
|
|
},
|
|
"companionExecutables": {
|
|
"type": "array",
|
|
"maxItems": 32,
|
|
"items": {
|
|
"$ref": "#/$defs/CompanionExecutable"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcId": {
|
|
"oneOf": [
|
|
{
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
{
|
|
"$ref": "#/$defs/SafeUnsignedInteger"
|
|
}
|
|
]
|
|
},
|
|
"NullableRpcId": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/RpcId"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"RpcRequest": {
|
|
"type": "object",
|
|
"description": "A generic request. Reserved methods with dedicated schemas are excluded and must validate against their exact contract.",
|
|
"required": [
|
|
"jsonrpc",
|
|
"id",
|
|
"method"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/RpcId"
|
|
},
|
|
"method": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"params": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
},
|
|
"deadlineMs": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 300000
|
|
},
|
|
"cancellationId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"not": {
|
|
"required": [
|
|
"method"
|
|
],
|
|
"properties": {
|
|
"method": {
|
|
"enum": [
|
|
"plugin.initialize",
|
|
"$/cancelRequest",
|
|
"$/progress"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcNotification": {
|
|
"type": "object",
|
|
"description": "A generic notification. Reserved notifications with dedicated schemas are excluded and must validate against their exact contract.",
|
|
"required": [
|
|
"jsonrpc",
|
|
"method"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"method": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"params": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"not": {
|
|
"required": [
|
|
"method"
|
|
],
|
|
"properties": {
|
|
"method": {
|
|
"enum": [
|
|
"plugin.initialize",
|
|
"$/cancelRequest",
|
|
"$/progress"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcSuccess": {
|
|
"type": "object",
|
|
"required": [
|
|
"jsonrpc",
|
|
"id",
|
|
"result"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/RpcId"
|
|
},
|
|
"result": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"JsonRpcStandardErrorCode": {
|
|
"type": "integer",
|
|
"enum": [
|
|
-32700,
|
|
-32600,
|
|
-32601,
|
|
-32602,
|
|
-32603
|
|
]
|
|
},
|
|
"PluginWireErrorCode": {
|
|
"type": "integer",
|
|
"enum": [
|
|
-32001,
|
|
-32002,
|
|
-32003,
|
|
-32004,
|
|
-32005,
|
|
-32006,
|
|
-32007,
|
|
-32008,
|
|
-32009,
|
|
-32010,
|
|
-32011,
|
|
-32012,
|
|
-32013,
|
|
-32014,
|
|
-32015,
|
|
-32016
|
|
]
|
|
},
|
|
"PluginErrorName": {
|
|
"type": "string",
|
|
"enum": [
|
|
"cancelled",
|
|
"unknown",
|
|
"deadline_exceeded",
|
|
"invalid_argument",
|
|
"not_found",
|
|
"already_exists",
|
|
"permission_denied",
|
|
"resource_exhausted",
|
|
"failed_precondition",
|
|
"aborted",
|
|
"out_of_range",
|
|
"unavailable",
|
|
"unsupported",
|
|
"internal",
|
|
"data_loss",
|
|
"unauthenticated"
|
|
]
|
|
},
|
|
"PluginErrorData": {
|
|
"type": "object",
|
|
"required": [
|
|
"pluginCode"
|
|
],
|
|
"properties": {
|
|
"pluginCode": {
|
|
"$ref": "#/$defs/PluginErrorName"
|
|
},
|
|
"details": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcErrorCode": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/JsonRpcStandardErrorCode"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/PluginWireErrorCode"
|
|
}
|
|
]
|
|
},
|
|
"RpcErrorObject": {
|
|
"type": "object",
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
],
|
|
"properties": {
|
|
"code": {
|
|
"$ref": "#/$defs/RpcErrorCode"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"data": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcFailure": {
|
|
"type": "object",
|
|
"required": [
|
|
"jsonrpc",
|
|
"id",
|
|
"error"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/NullableRpcId"
|
|
},
|
|
"error": {
|
|
"$ref": "#/$defs/RpcErrorObject"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProgressToken": {
|
|
"$ref": "#/$defs/RpcId"
|
|
},
|
|
"ProgressBegin": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind",
|
|
"title"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "begin"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 256
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"maxLength": 1024
|
|
},
|
|
"percentage": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
},
|
|
"cancellable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProgressReport": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "report"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"maxLength": 1024
|
|
},
|
|
"percentage": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
},
|
|
"increment": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
}
|
|
},
|
|
"not": {
|
|
"required": [
|
|
"percentage",
|
|
"increment"
|
|
],
|
|
"properties": {
|
|
"percentage": true,
|
|
"increment": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProgressEnd": {
|
|
"type": "object",
|
|
"required": [
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"kind": {
|
|
"const": "end"
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"maxLength": 1024
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProgressValue": {
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/ProgressBegin"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ProgressReport"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/ProgressEnd"
|
|
}
|
|
]
|
|
},
|
|
"RpcProgressNotification": {
|
|
"type": "object",
|
|
"required": [
|
|
"jsonrpc",
|
|
"method",
|
|
"params"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"method": {
|
|
"const": "$/progress"
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"required": [
|
|
"token",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"token": {
|
|
"$ref": "#/$defs/ProgressToken"
|
|
},
|
|
"value": {
|
|
"$ref": "#/$defs/ProgressValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcCancel": {
|
|
"type": "object",
|
|
"required": [
|
|
"jsonrpc",
|
|
"method",
|
|
"params"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"method": {
|
|
"const": "$/cancelRequest"
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"required": [
|
|
"cancellationId"
|
|
],
|
|
"properties": {
|
|
"cancellationId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"StreamChunkData": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"encoding",
|
|
"value",
|
|
"byteLength"
|
|
],
|
|
"properties": {
|
|
"encoding": {
|
|
"const": "json"
|
|
},
|
|
"value": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
},
|
|
"byteLength": {
|
|
"$ref": "#/$defs/StreamChunkByteLength"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"encoding",
|
|
"value",
|
|
"byteLength"
|
|
],
|
|
"properties": {
|
|
"encoding": {
|
|
"const": "base64"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"maxLength": 22369624,
|
|
"contentEncoding": "base64"
|
|
},
|
|
"byteLength": {
|
|
"$ref": "#/$defs/StreamChunkByteLength"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"encoding",
|
|
"byteLength"
|
|
],
|
|
"properties": {
|
|
"encoding": {
|
|
"const": "transfer"
|
|
},
|
|
"byteLength": {
|
|
"$ref": "#/$defs/StreamChunkByteLength"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"StreamFrame": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"streamId",
|
|
"sequence",
|
|
"kind",
|
|
"windowBytes"
|
|
],
|
|
"properties": {
|
|
"streamId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"const": 0
|
|
},
|
|
"kind": {
|
|
"const": "open"
|
|
},
|
|
"windowBytes": {
|
|
"$ref": "#/$defs/StreamWindowBytes"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"streamId",
|
|
"sequence",
|
|
"kind",
|
|
"data"
|
|
],
|
|
"properties": {
|
|
"streamId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"$ref": "#/$defs/SafePositiveInteger"
|
|
},
|
|
"kind": {
|
|
"const": "chunk"
|
|
},
|
|
"data": {
|
|
"$ref": "#/$defs/StreamChunkData"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"streamId",
|
|
"sequence",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"streamId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"$ref": "#/$defs/SafePositiveInteger"
|
|
},
|
|
"kind": {
|
|
"enum": [
|
|
"end",
|
|
"cancel"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"streamId",
|
|
"sequence",
|
|
"kind",
|
|
"error"
|
|
],
|
|
"properties": {
|
|
"streamId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"$ref": "#/$defs/SafePositiveInteger"
|
|
},
|
|
"kind": {
|
|
"const": "error"
|
|
},
|
|
"error": {
|
|
"$ref": "#/$defs/RpcErrorObject"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"streamId",
|
|
"sequence",
|
|
"kind",
|
|
"creditBytes"
|
|
],
|
|
"properties": {
|
|
"streamId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"$ref": "#/$defs/SafeUnsignedInteger"
|
|
},
|
|
"kind": {
|
|
"const": "windowUpdate"
|
|
},
|
|
"creditBytes": {
|
|
"$ref": "#/$defs/StreamCreditBytes"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"RuntimeInitializeParams": {
|
|
"type": "object",
|
|
"required": [
|
|
"netcattyVersion",
|
|
"apiVersion",
|
|
"supportedFeatures"
|
|
],
|
|
"properties": {
|
|
"netcattyVersion": {
|
|
"$ref": "#/$defs/SemanticVersion"
|
|
},
|
|
"apiVersion": {
|
|
"$ref": "#/$defs/SemanticVersion"
|
|
},
|
|
"supportedFeatures": {
|
|
"type": "array",
|
|
"maxItems": 256,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/FeatureId"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RuntimeInitializeResult": {
|
|
"type": "object",
|
|
"required": [
|
|
"pluginId",
|
|
"pluginVersion",
|
|
"apiVersion",
|
|
"enabledFeatures"
|
|
],
|
|
"properties": {
|
|
"pluginId": {
|
|
"$ref": "#/$defs/PluginId"
|
|
},
|
|
"pluginVersion": {
|
|
"$ref": "#/$defs/SemanticVersion"
|
|
},
|
|
"apiVersion": {
|
|
"$ref": "#/$defs/SemanticVersion"
|
|
},
|
|
"enabledFeatures": {
|
|
"type": "array",
|
|
"maxItems": 256,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/$defs/FeatureId"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RuntimeInitializeRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"jsonrpc",
|
|
"id",
|
|
"method",
|
|
"params"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/RpcId"
|
|
},
|
|
"method": {
|
|
"const": "plugin.initialize"
|
|
},
|
|
"params": {
|
|
"$ref": "#/$defs/RuntimeInitializeParams"
|
|
},
|
|
"deadlineMs": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 300000
|
|
},
|
|
"cancellationId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RuntimeInitializeSuccess": {
|
|
"type": "object",
|
|
"required": [
|
|
"jsonrpc",
|
|
"id",
|
|
"result"
|
|
],
|
|
"properties": {
|
|
"jsonrpc": {
|
|
"const": "2.0"
|
|
},
|
|
"id": {
|
|
"$ref": "#/$defs/RpcId"
|
|
},
|
|
"result": {
|
|
"$ref": "#/$defs/RuntimeInitializeResult"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RpcMessage": {
|
|
"description": "A mutually exclusive RPC wire envelope. Reserved inbound methods use their exact schemas. Successful responses require method-specific validation through request correlation.",
|
|
"oneOf": [
|
|
{
|
|
"$ref": "#/$defs/RpcRequest"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/RpcNotification"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/RpcSuccess"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/RpcFailure"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/RpcCancel"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/RpcProgressNotification"
|
|
},
|
|
{
|
|
"$ref": "#/$defs/RuntimeInitializeRequest"
|
|
}
|
|
]
|
|
},
|
|
"PermissionGrantScope": {
|
|
"type": "string",
|
|
"enum": [
|
|
"once",
|
|
"session",
|
|
"application",
|
|
"always"
|
|
]
|
|
},
|
|
"PermissionRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"requestId",
|
|
"pluginId",
|
|
"permission",
|
|
"reason"
|
|
],
|
|
"properties": {
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"pluginId": {
|
|
"$ref": "#/$defs/PluginId"
|
|
},
|
|
"permission": {
|
|
"$ref": "#/$defs/PluginPermission"
|
|
},
|
|
"resources": {
|
|
"type": "array",
|
|
"maxItems": 128,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
}
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 1024
|
|
},
|
|
"operationId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PermissionDecision": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"requestId",
|
|
"decision",
|
|
"scope"
|
|
],
|
|
"properties": {
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"decision": {
|
|
"const": "allow"
|
|
},
|
|
"scope": {
|
|
"$ref": "#/$defs/PermissionGrantScope"
|
|
},
|
|
"resources": {
|
|
"type": "array",
|
|
"maxItems": 128,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"requestId",
|
|
"decision"
|
|
],
|
|
"properties": {
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"decision": {
|
|
"enum": [
|
|
"deny",
|
|
"cancel"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"ProviderRequest": {
|
|
"type": "object",
|
|
"required": [
|
|
"providerId",
|
|
"operation",
|
|
"requestId"
|
|
],
|
|
"properties": {
|
|
"providerId": {
|
|
"$ref": "#/$defs/ContributionId"
|
|
},
|
|
"operation": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"payload": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
},
|
|
"deadlineMs": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 300000
|
|
},
|
|
"cancellationId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProviderResult": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"requestId",
|
|
"status",
|
|
"result"
|
|
],
|
|
"properties": {
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"status": {
|
|
"const": "ok"
|
|
},
|
|
"result": {
|
|
"$ref": "#/$defs/JsonValue"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"requestId",
|
|
"status"
|
|
],
|
|
"properties": {
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"status": {
|
|
"const": "cancelled"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"required": [
|
|
"requestId",
|
|
"status",
|
|
"error"
|
|
],
|
|
"properties": {
|
|
"requestId": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"status": {
|
|
"const": "failed"
|
|
},
|
|
"error": {
|
|
"$ref": "#/$defs/RpcErrorObject"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|