{
  "register_version": "1.0",
  "status": "current",
  "published_at": "2026-08-06",
  "canonical_url": "https://thenn-os.de/data-act/register.json",
  "service": "THENN.OS",
  "schema_level": "contract-defined logical export schema",
  "implementation_validation": "required before productive customer activation",
  "scope": "Logical structures of customer-assigned exportable data and digital assets. Internal database tables and security-internal structures are not part of this export schema.",
  "delivery_model": "Controlled organization-wide standard export after authorization and scope verification; no public self-service interface.",
  "standard_formats": [
    "text/csv; charset=utf-8",
    "application/json",
    "original media type"
  ],
  "format_specifications": {
    "csv": "UTF-8, header row, documented delimiter, one logical structure per file",
    "json": "UTF-8 JSON; property names and relationships are documented in the delivery manifest",
    "dates": "ISO 8601 including timezone where available",
    "identifiers": "Existing customer-related record identifiers where available; relationships are documented in the delivery manifest",
    "files": "Original file format plus JSON manifest for assignment and available customer-related metadata"
  },
  "export_structures": [
    {
      "id": "organization",
      "name": "Organization",
      "fields": ["organization identifier", "name", "business and contact master data", "address", "timezone and locale", "customer settings", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Root structure; organization identifier links all tenant-assigned structures."
    },
    {
      "id": "users_roles",
      "name": "Users and roles",
      "fields": ["user identifier", "organization identifier", "role and status", "name", "email and telephone", "language and profile settings", "privacy settings", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "User and role identifiers link profiles, assignments, bookings, messages, consents and histories."
    },
    {
      "id": "players_families",
      "name": "Players, families and guardians",
      "fields": ["player identifier", "linked user identifier", "guardian identifier", "family and guardian relationship", "contact details", "birth and profile data", "customer-defined profile fields", "equipment assignments", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Player, user and guardian identifiers preserve family, booking, group and training assignments."
    },
    {
      "id": "trainers",
      "name": "Trainers and assignments",
      "fields": ["trainer user identifier", "organization identifier", "trainer level", "student assignment", "group assignment", "availability and schedule blocks", "customer-defined profile fields", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Trainer identifiers link calendars, groups, training content, bookings and assigned players."
    },
    {
      "id": "locations_courts",
      "name": "Locations and courts",
      "fields": ["location identifier", "court identifier", "name and description", "address and geographical assignment", "availability and booking rules", "court fee configuration", "status", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Location and court identifiers link bookings, events, schedules and fee rules."
    },
    {
      "id": "calendar_training",
      "name": "Calendar, appointments and training",
      "fields": ["calendar or appointment identifier", "title and description", "start, end and timezone", "recurrence and status", "trainer, player, group and location assignments", "training plan and exercise assignments", "progress and performance values", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Record identifiers connect appointments, sessions, plans, exercises, participants and progress records."
    },
    {
      "id": "groups_memberships",
      "name": "Groups and memberships",
      "fields": ["group identifier", "name and description", "status and scheduling data", "member identifier and role", "trainer assignment", "membership period", "group settings", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Group, member and trainer identifiers preserve memberships, schedules, bookings and billing assignments."
    },
    {
      "id": "bookings_attendance",
      "name": "Bookings, participants and attendance",
      "fields": ["booking identifier", "booking type and status", "start and end", "location and court assignment", "participant identifiers and roles", "attendance status", "waitlist and approval data", "cancellation and makeup-credit data", "booking history", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Booking identifiers link participants, groups, trainers, locations, payments, attendance and history."
    },
    {
      "id": "seasons_surveys",
      "name": "Seasons, surveys and responses",
      "fields": ["season or survey identifier", "title and period", "question and configuration data", "response identifier", "player preferences and availability", "survey group assignment", "status", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Survey, response, player and group identifiers preserve planning relationships."
    },
    {
      "id": "events_tournaments",
      "name": "Events and tournaments",
      "fields": ["event or tournament identifier", "title and description", "sessions and dates", "registration and participant data", "matches and results", "location assignment", "status", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Event, session, registration, player and match identifiers preserve participation and result relationships."
    },
    {
      "id": "communications",
      "name": "Communications and notifications",
      "fields": ["message identifier", "sender and authorized recipient identifiers", "subject and content", "channel and delivery status", "read status", "customer-related support conversation", "notification and email history", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Message and recipient identifiers connect customer communications to authorized users and organizations."
    },
    {
      "id": "health_data",
      "name": "Lawfully processed health data",
      "fields": ["affected player identifier", "customer-entered health information", "purpose or assignment", "consent or other authorization reference where stored", "access and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Player and consent identifiers preserve the documented customer context; export requires separate authorization and a protected transfer path."
    },
    {
      "id": "fees_payments",
      "name": "Fees, payments and customer financial records",
      "fields": ["fee, charge or transaction identifier", "booking, player or group assignment", "description", "amount and currency", "payment and settlement status", "installment and wallet entries", "price and court-fee configuration", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Financial record identifiers link bookings, participants, groups and customer configurations; legally retained provider accounting records remain subject to retention duties."
    },
    {
      "id": "consents",
      "name": "Consents and declarations",
      "fields": ["consent identifier", "user or player assignment", "purpose and text version", "decision and legal context", "capture channel", "withdrawal or change history", "creation and change timestamps"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Consent, text-version and subject identifiers preserve the declaration and its history."
    },
    {
      "id": "logs_history",
      "name": "Customer-related logs and histories",
      "fields": ["log or history identifier", "organization and authorized actor identifier", "customer-related object and action", "status transition", "timestamp", "customer-visible import or activity result", "security-relevant customer event where exportable"],
      "formats": ["CSV (UTF-8)", "JSON"],
      "relationships": "Object and actor identifiers connect histories to customer records; security-internal rules and unrelated provider telemetry are excluded."
    },
    {
      "id": "media_files",
      "name": "Uploaded media and files",
      "fields": ["file identifier", "original filename", "media type", "size where available", "customer object assignment", "customer-related metadata", "upload and change timestamps", "original file content"],
      "formats": ["original media type", "JSON manifest"],
      "relationships": "File identifiers and manifest references preserve assignment to users, messages, training content or other customer objects."
    },
    {
      "id": "templates_configuration",
      "name": "Customer templates and configuration",
      "fields": ["template or configuration identifier", "name and description", "customer-defined content", "module and feature assignment", "pricing, booking, cancellation and profile-field configuration", "status and version", "creation and change timestamps"],
      "formats": ["JSON", "CSV (UTF-8) where tabular"],
      "relationships": "Template and configuration identifiers preserve customer assignments; non-customer-specific system configuration is excluded."
    }
  ],
  "excluded_internal_categories": [
    "source code and algorithms",
    "non-customer-specific system configuration",
    "internal security and abuse-detection rules",
    "anonymous aggregate statistics",
    "data of other tenants",
    "internal operating data protected by third-party rights or trade secrets, provided the exclusion does not hinder or delay switching"
  ],
  "change_policy": "This register is updated when export structures, formats, relevant standards or technical limitations change. The export delivery includes a manifest for the structures and optional fields actually present in the authorized customer tenant."
}
