# roles

id: 718cedb0-73cc-4e09-a80c-dce520c89aae
tenant_id: 99f35b02-49e9-4a2b-8086-0102b6b478ca
slug: admin
name: Admin
created_at: 2026-06-07 23:28:52.243312
updated_at: 2026-06-07 23:28:52.243313
permissions:
  ["campaign:read", "campaign:write", "campaign:validate", "campaign:build", "campaign:queue", "campaign:send_test", "campaign:send", "attachments:read", "attachments:write", "reports:read", "reports:send", "audit:read", "admin:users", "admin:settings"]


id: eea7b536-21c9-437f-a5b2-923ec0239695
tenant_id: 99f35b02-49e9-4a2b-8086-0102b6b478ca
slug: sender
name: Sender
created_at: 2026-06-07 23:28:52.243323
updated_at: 2026-06-07 23:28:52.243323
permissions:
  ["campaign:read", "campaign:queue", "campaign:send_test", "campaign:send", "reports:read", "reports:send"]


# campaign_versions

id: 29079dd3-e93d-487b-a58b-73329d3c05de
campaign_id: 3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab
schema_version: 1.0
source_filename: /mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/campaign.json
created_at: 2026-06-07 23:30:11.691899
updated_at: 2026-06-07 23:44:31.252278
raw_json:
  {"version": "1.0", "campaign": {"id": "rechnungslegung-2026-05", "name": "Rechnungslegung 2026-05", "mode": "draft", "description": "Example campaign migrated from the Java object model."}, "fields": [{"name": "monthyear", "type": "string", "label": "Month/year", "required": true}, {"name": "number", "type": "string", "label": "Dienststelle", "required": true}, {"name": "anrede", "type": "string", "label": "Salutation"}, {"name": "zip_password", "type": "password", "label": "ZIP password", "required": true}], "global_values": {"monthyear": "05 / 2026"}, "server": {"smtp": {"host": "smtp.example.org", "port": 587, "username": "user@example.org", "password": "CHANGE_ME_OR_REFERENCE_SECRET", "security": "starttls"}, "imap": {"enabled": true, "host": "imap.example.org", "port": 993, "username": "user@example.org", "password": "CHANGE_ME_OR_REFERENCE_SECRET", "security": "tls", "sent_folder": "auto"}}, "recipients": {"from": {"name": "Rechnungslegung D5", "email": "d5-rechnungslegung@example.org", "type": "to"}, "allow_individual_from": false, "to": [], "allow_individual_to": true, "cc": [], "allow_individual_cc": false, "bcc": [], "allow_individual_bcc": false, "reply_to": [{"name": "Rechnungslegung D5", "email": "d5-rechnungslegung@example.org", "type": "reply_to"}], "allow_individual_reply_to": false, "bounce_to": [], "allow_individual_bounce_to": false, "disposition_notification_to": [], "allow_individual_disposition_notification_to": false}, "template": {"subject": "Rechnungslegungslisten f\u00fcr ${global::monthyear} und Dienststelle ${local::number}", "text": "${local::anrede},\n\nbeigef\u00fcgt erhalten Sie die Rechnungslegungslisten f\u00fcr ${global::monthyear}.\n\nMit freundlichen Gr\u00fc\u00dfen"}, "attachments": {"base_path": "/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/attachments", "allow_individual": true, "send_without_attachments": false, "global": [], "missing_behavior": "ask", "ambiguous_behavior": "ask"}, "entries": {"source": {"type": "csv", "path": "/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/recipients.csv", "delimiter": ";", "encoding": "utf-8", "has_header": true}, "mapping": {"id": "ID", "active": "Aktiv", "to.0.email": "E-Mail", "to.0.name": "Name", "fields.number": "Dienststelle", "fields.anrede": "Anrede", "fields.zip_password": "ZIP-Passwort", "attachments.0.base_dir": "Unterordner", "attachments.0.file_filter": "Dateimuster"}, "defaults": {"active": true, "to": [], "combine_to": false, "cc": [], "combine_cc": true, "bcc": [], "combine_bcc": true, "reply_to": [], "combine_reply_to": true, "bounce_to": [], "combine_bounce_to": true, "disposition_notification_to": [], "combine_disposition_notification_to": true, "attachments": [{"id": "individual-documents", "label": "Personalized PDF bundle", "base_dir": ".", "file_filter": "${local::number}_*.pdf", "include_subdirs": false, "required": true, "allow_multiple": true, "missing_behavior": "ask", "ambiguous_behavior": "continue", "zip": {"enabled": true, "filename_template": "Rechnungslegung_${local::number}.zip", "password_template": "${local::zip_password}", "method": "aes"}}], "combine_attachments": true, "fields": {}}}, "validation_policy": {"missing_required_attachment": "ask", "missing_optional_attachment": "warn", "ambiguous_attachment_match": "ask", "missing_email": "block", "template_error": "block", "inactive_entry": "drop"}, "delivery": {"rate_limit": {"messages_per_minute": 5, "concurrency": 1}, "imap_append_sent": {"enabled": true, "folder": "auto"}, "retry": {"max_attempts": 3, "backoff_seconds": [60, 300, 900]}}, "status_tracking": {"enabled": true, "initial_build_status": "built", "initial_send_status": "draft"}}

validation_summary:
  {"campaign_id": "rechnungslegung-2026-05", "campaign_name": "Rechnungslegung 2026-05", "issues": [], "entries_mode": "external:csv", "entries_count": null, "attachments_base_path": "/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/attachments", "rate_limit": "5/min, concurrency 1", "imap_append_enabled": true, "ok": true, "error_count": 0, "warning_count": 0}

build_summary:
  {"campaign_id": "rechnungslegung-2026-05", "campaign_name": "Rechnungslegung 2026-05", "campaign_file": "/mnt/DATA/git/multi-seal-mail/server/runtime/campaign_snapshots/29079dd3-e93d-487b-a58b-73329d3c05de.json", "entries_count": 1, "messages": [{"entry_index": 1, "entry_id": "entry-001", "active": true, "build_status": "built", "validation_status": "ready", "send_status": "draft", "imap_status": "pending", "subject": "Rechnungslegungslisten f\u00fcr 05 / 2026 und Dienststelle ab0000", "from": {"email": "d5-rechnungslegung@example.org", "name": "Rechnungslegung D5"}, "to": [{"email": "mail@example.com", "name": "Example Recipient"}], "cc": [], "bcc": [], "reply_to": [{"email": "d5-rechnungslegung@example.org", "name": "Rechnungslegung D5"}], "bounce_to": [], "disposition_notification_to": [], "attachment_count": 1, "attachments": [{"attachment_id": "individual-documents", "label": "Personalized PDF bundle", "status": "ok", "behavior": null, "required": true, "allow_multiple": true, "zip_enabled": true, "file_filter": "ab????-123456-*.XLSX", "directory": "/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/attachments/xls", "matches": ["/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/attachments/xls/ab0000-123456-demo.XLSX"]}], "issues": [], "eml_path": "/mnt/DATA/git/multi-seal-mail/server/runtime/generated_eml/3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab/29079dd3-e93d-487b-a58b-73329d3c05de/entry-001.eml", "eml_size_bytes": 1263}], "built_count": 1, "build_failed_count": 0, "ready_count": 1, "warning_count": 0, "needs_review_count": 0, "blocked_count": 0, "excluded_count": 0, "inactive_count": 0, "queueable_count": 1}


# audit_log

id: 8397f2f5-8951-473c-b04e-977c0dd235bb
tenant_id: 99f35b02-49e9-4a2b-8086-0102b6b478ca
user_id: 2503ff15-cb38-4a95-a19b-a2e0819aae7b
api_key_id: 2c8badc7-f756-47a6-b6ca-2dc8b334f148
action: campaign.imported
object_type: campaign
object_id: 3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab
created_at: 2026-06-07 23:30:11.842846
updated_at: 2026-06-07 23:30:11.842857
details:
  {"version_id": "29079dd3-e93d-487b-a58b-73329d3c05de", "source_filename": "/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/campaign.json"}


id: 9dc2ecdf-add7-4ee1-aa9d-8a578657f3c2
tenant_id: 99f35b02-49e9-4a2b-8086-0102b6b478ca
user_id: 2503ff15-cb38-4a95-a19b-a2e0819aae7b
api_key_id: 2c8badc7-f756-47a6-b6ca-2dc8b334f148
action: campaign.queue_dry_run
object_type: campaign
object_id: 3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab
created_at: 2026-06-07 23:44:38.193946
updated_at: 2026-06-07 23:44:38.193950
details:
  {"campaign_id": "3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab", "version_id": "29079dd3-e93d-487b-a58b-73329d3c05de", "queued_count": 1, "skipped_count": 0, "blocked_count": 0, "enqueued_count": 0, "dry_run": true}


# campaign_jobs

id: 00a00025-6b2e-415c-9082-a73051b8b07c
tenant_id: 99f35b02-49e9-4a2b-8086-0102b6b478ca
campaign_id: 3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab
campaign_version_id: 29079dd3-e93d-487b-a58b-73329d3c05de
entry_id: entry-001
recipient_email: mail@example.com
subject: Rechnungslegungslisten für 05 / 2026 und Dienststelle ab0000
build_status: built
validation_status: ready
queue_status: draft
send_status: not_queued
imap_status: pending
issues_snapshot: []
created_at: 2026-06-07 23:44:31.254910
updated_at: 2026-06-07 23:44:31.254912
eml_local_path:
  /mnt/DATA/git/multi-seal-mail/server/runtime/generated_eml/3f42af9b-8ddd-42a2-bf77-7bd72e46a8ab/29079dd3-e93d-487b-a58b-73329d3c05de/entry-001.eml

resolved_recipients:
  {"from": {"email": "d5-rechnungslegung@example.org", "name": "Rechnungslegung D5"}, "to": [{"email": "mail@example.com", "name": "Example Recipient"}], "cc": [], "bcc": [], "reply_to": [{"email": "d5-rechnungslegung@example.org", "name": "Rechnungslegung D5"}], "bounce_to": [], "disposition_notification_to": []}

resolved_attachments:
  [{"attachment_id": "individual-documents", "label": "Personalized PDF bundle", "status": "ok", "behavior": null, "required": true, "allow_multiple": true, "zip_enabled": true, "file_filter": "ab????-123456-*.XLSX", "directory": "/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/attachments/xls", "matches": ["/mnt/DATA/git/multi-seal-mail/server/app/mailer/examples/data/attachments/xls/ab0000-123456-demo.XLSX"]}]


