first version able to send

This commit is contained in:
2026-06-11 00:06:44 +02:00
parent ce43f2658f
commit 3b06f3670e
12 changed files with 740 additions and 67 deletions

View File

@@ -172,7 +172,18 @@
"type": "object",
"properties": {
"from": {
"$ref": "#/$defs/recipient"
"oneOf": [
{
"$ref": "#/$defs/recipient"
},
{
"type": "object",
"maxProperties": 0
},
{
"type": "null"
}
]
},
"allow_individual_from": {
"type": "boolean",
@@ -260,10 +271,16 @@
"type": "string"
},
"text": {
"type": "string"
"type": [
"string",
"null"
]
},
"html": {
"type": "string"
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
@@ -311,7 +328,15 @@
"base_path": {
"type": "string",
"default": ".",
"description": "Campaign-level base path. Global and entry attachment base_dir values are resolved relative to this path unless absolute."
"description": "Legacy single campaign-level attachment base path. Used when attachments.base_paths is absent."
},
"base_paths": {
"type": "array",
"items": {
"$ref": "#/$defs/attachment_base_path"
},
"default": [],
"description": "Named selectable attachment base paths. New WebUI campaigns use these instead of the legacy single base_path."
},
"allow_individual": {
"type": "boolean",
@@ -355,6 +380,7 @@
"additionalProperties": false,
"default": {
"base_path": ".",
"base_paths": [],
"global": []
}
},
@@ -371,6 +397,9 @@
"items": {
"$ref": "#/$defs/entry"
}
},
"defaults": {
"$ref": "#/$defs/entry"
}
},
"additionalProperties": false
@@ -436,6 +465,11 @@
],
"default": "ask"
},
"ignore_empty_fields": {
"type": "boolean",
"default": false,
"description": "Render unresolved/empty template placeholders as an empty string instead of keeping them and raising a template error."
},
"missing_email": {
"type": "string",
"enum": [
@@ -463,7 +497,9 @@
}
},
"additionalProperties": false,
"default": {}
"default": {
"ignore_empty_fields": false
}
},
"delivery": {
"type": "object",
@@ -601,7 +637,7 @@
},
"base_dir": {
"type": "string",
"description": "Directory relative to attachments.base_path unless absolute."
"description": "Selected attachment base path for current WebUI campaigns, or a directory relative to attachments.base_path for legacy campaigns."
},
"file_filter": {
"type": "string",
@@ -617,29 +653,40 @@
},
"allow_multiple": {
"type": "boolean",
"default": false
"default": false,
"description": "Legacy compatibility flag. Current UI treats wildcard file_filter patterns as multi-match-capable automatically."
},
"missing_behavior": {
"type": "string",
"type": [
"string",
"null"
],
"enum": [
"block",
"ask",
"drop",
"continue",
"warn"
"warn",
null
],
"default": "ask"
"default": null,
"description": "Optional per-rule override. Null or omitted inherits from validation_policy."
},
"ambiguous_behavior": {
"type": "string",
"type": [
"string",
"null"
],
"enum": [
"block",
"ask",
"drop",
"continue",
"warn"
"warn",
null
],
"default": "ask"
"default": null,
"description": "Optional per-rule override. Null or omitted inherits from validation_policy."
},
"zip": {
"type": "object",
@@ -682,7 +729,18 @@
"default": true
},
"from": {
"$ref": "#/$defs/recipient"
"oneOf": [
{
"$ref": "#/$defs/recipient"
},
{
"type": "object",
"maxProperties": 0
},
{
"type": "null"
}
]
},
"to": {
"type": "array",
@@ -769,6 +827,19 @@
"last_sent": {
"type": "string",
"format": "date-time"
},
"name": {
"type": [
"string",
"null"
]
},
"email": {
"type": [
"string",
"null"
],
"format": "email"
}
},
"additionalProperties": false
@@ -804,6 +875,41 @@
}
},
"additionalProperties": false
},
"attachment_base_path": {
"type": "object",
"required": [
"name",
"path"
],
"properties": {
"id": {
"type": "string",
"description": "Optional stable ID for UI/status references."
},
"name": {
"type": "string",
"description": "Display name for this selectable attachment base path."
},
"path": {
"type": "string",
"default": ".",
"description": "Base path relative to the campaign file unless absolute."
},
"allow_individual": {
"type": "boolean",
"default": false,
"description": "Whether recipient-level attachments may use this base path."
},
"source": {
"type": [
"string",
"null"
],
"description": "Legacy UI compatibility value. Ignored by the backend."
}
},
"additionalProperties": false
}
}
}