Skip to content

Instantly share code, notes, and snippets.

@xqm32
Created January 16, 2026 11:00
Show Gist options
  • Select an option

  • Save xqm32/af58ae905933ce080d45abe170616029 to your computer and use it in GitHub Desktop.

Select an option

Save xqm32/af58ae905933ce080d45abe170616029 to your computer and use it in GitHub Desktop.
{
"$defs": {
"GroupConfig": {
"properties": {
"name": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Name"
},
"schedule": {
"anyOf": [
{ "format": "date-time", "type": "string" },
{ "type": "null" }
],
"default": null,
"title": "Schedule"
},
"timeout": {
"anyOf": [
{ "exclusiveMinimum": 0, "type": "number" },
{ "type": "null" }
],
"default": null,
"title": "Timeout"
},
"concurrent": {
"anyOf": [
{ "exclusiveMinimum": 0, "type": "integer" },
{ "type": "null" }
],
"default": null,
"title": "Concurrent"
},
"webhook": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Webhook"
},
"tasks": {
"items": { "$ref": "#/$defs/TaskConfig" },
"title": "Tasks",
"type": "array"
}
},
"title": "GroupConfig",
"type": "object"
},
"Source": {
"discriminator": {
"mapping": {
"files": "#/$defs/SourceFiles",
"os": "#/$defs/SourceOS",
"sqlserver": "#/$defs/SourceSQLServer"
},
"propertyName": "type"
},
"oneOf": [
{ "$ref": "#/$defs/SourceOS" },
{ "$ref": "#/$defs/SourceFiles" },
{ "$ref": "#/$defs/SourceSQLServer" }
]
},
"SourceFiles": {
"properties": {
"type": { "const": "files", "title": "Type", "type": "string" },
"host": {
"format": "ipvanyaddress",
"title": "Host",
"type": "string"
},
"paths": {
"items": { "type": "string" },
"title": "Paths",
"type": "array"
}
},
"required": ["type", "host", "paths"],
"title": "SourceFiles",
"type": "object"
},
"SourceOS": {
"properties": {
"type": { "const": "os", "title": "Type", "type": "string" },
"host": {
"format": "ipvanyaddress",
"title": "Host",
"type": "string"
},
"drives": {
"anyOf": [
{ "items": { "type": "string" }, "type": "array" },
{ "type": "null" }
],
"default": null,
"title": "Drives"
}
},
"required": ["type", "host"],
"title": "SourceOS",
"type": "object"
},
"SourceSQLServer": {
"properties": {
"type": { "const": "sqlserver", "title": "Type", "type": "string" },
"host": {
"format": "ipvanyaddress",
"title": "Host",
"type": "string"
},
"username": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Username"
},
"password": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Password"
},
"port": {
"anyOf": [
{ "exclusiveMinimum": 0, "type": "integer" },
{ "type": "null" }
],
"default": null,
"title": "Port"
},
"stagingPath": { "title": "Stagingpath", "type": "string" }
},
"required": ["type", "host", "stagingPath"],
"title": "SourceSQLServer",
"type": "object"
},
"Target": {
"discriminator": {
"mapping": {
"local": "#/$defs/TargetLocal",
"samba": "#/$defs/TargetSamba"
},
"propertyName": "type"
},
"oneOf": [
{ "$ref": "#/$defs/TargetSamba" },
{ "$ref": "#/$defs/TargetLocal" }
]
},
"TargetLocal": {
"properties": {
"type": { "const": "local", "title": "Type", "type": "string" },
"path": { "title": "Path", "type": "string" }
},
"required": ["type", "path"],
"title": "TargetLocal",
"type": "object"
},
"TargetSamba": {
"properties": {
"type": { "const": "samba", "title": "Type", "type": "string" },
"host": {
"format": "ipvanyaddress",
"title": "Host",
"type": "string"
},
"username": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Username"
},
"password": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Password"
},
"path": { "title": "Path", "type": "string" }
},
"required": ["type", "host", "path"],
"title": "TargetSamba",
"type": "object"
},
"TaskConfig": {
"properties": {
"name": {
"anyOf": [{ "type": "string" }, { "type": "null" }],
"default": null,
"title": "Name"
},
"source": {
"anyOf": [{ "type": "string" }, { "$ref": "#/$defs/Source" }],
"title": "Source"
},
"target": {
"anyOf": [{ "type": "string" }, { "$ref": "#/$defs/Target" }],
"title": "Target"
},
"runner": {
"anyOf": [
{ "format": "ipvanyaddress", "type": "string" },
{ "type": "null" }
],
"default": null,
"title": "Runner"
}
},
"required": ["source", "target"],
"title": "TaskConfig",
"type": "object"
}
},
"properties": {
"id": { "format": "uuid7", "title": "Id", "type": "string" },
"station": { "title": "Station", "type": "string" },
"sources": {
"additionalProperties": { "$ref": "#/$defs/Source" },
"title": "Sources",
"type": "object"
},
"targets": {
"additionalProperties": { "$ref": "#/$defs/Target" },
"title": "Targets",
"type": "object"
},
"groups": {
"items": { "$ref": "#/$defs/GroupConfig" },
"title": "Groups",
"type": "array"
}
},
"required": ["station"],
"title": "Config",
"type": "object"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment